版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、幾種工具的對比工具目的檢查項FindBugs檢查.class基于Bug Patterns概念,查找javabytecode(.class文件)中的潛在bug主要檢查bytecode中的bug patterns,如NullPoint空指針檢查、沒有合理關(guān)閉資源、字符串相同判斷錯(=,而不是equals)等PMD檢查源文件檢查Java源文件中的潛在問題主要包括:空try/catch/finally/switch語句塊未使用的局部變量、參數(shù)和private方法空if/while語句過于復(fù)雜的表達(dá)式,如不必要的if語句等復(fù)雜類CheckStyle檢查源文件主要關(guān)注格式檢查Java源文件是否與代碼規(guī)范相
2、符主要包括:Javadoc注釋命名規(guī)范多余沒用的ImportsSize度量,如過長的方法缺少必要的空格Whitespace重復(fù)代碼FindBugsFindBugs 大多數(shù)提示有用,值得改1. 配置無查找功能,不過縮寫能讓我們很快找到某個規(guī)則2. 提供圖形界面的獨立程序,對jar進(jìn)行檢測,有報告生成,非常方便3. 很多功能插件沒有實現(xiàn),可獨立使用FindBugs,但沒法同時修改源碼插件bug替代法: 使用獨立的FindBugs設(shè)置規(guī)則,然后到C:Documents and SettingsXXX下找.Findbugs_prefs,
3、然后改名覆蓋Eclipse Project下的.fbprefs (先關(guān)閉你的Project)PMD比較嚴(yán)格1. 獨立的程序是命令行形式操作2. 插件可以配置規(guī)則,有獨立顯示問題的視圖,也很方便3. 一般來說,需要自定義規(guī)則才通過檢驗過于嚴(yán)格1. 按照Sun的規(guī)范太嚴(yán)格了,需要自定義規(guī)則2. 插件自定義規(guī)則沒有查找功能,查找規(guī)則麻煩3. 只能做檢查,不能修改代碼,可配合Jalopy使用修改代碼 可參考以下文檔進(jìn)行學(xué)習(xí)使用:CheckStyle過于嚴(yán)格1. &
4、#160;按照Sun的規(guī)范太嚴(yán)格了,需要自定義規(guī)則2. 插件自定義規(guī)則沒有查找功能,查找規(guī)則麻煩3. 只能做檢查,不能修改代碼,可配合Jalopy使用修改代碼 參考: 工具的插件安裝PMDPMD檢查原理PMD的核心是JavaCC解析器生成器。PMD結(jié)合運用JavaCC和EBNF(擴展巴科斯-諾爾范式,Extended Backus-Naur Formal)語法,再加上JJTree,把Java源代碼解析成抽象語法樹(AST,Abstract Syntax Tree)。顯然,這句話不那么好懂,且看下文具體說明。 從根本上看,Java源代碼只是一
5、些普通的文本。不過,為了讓解析器承認(rèn) 這些普通的文本是合法的Java代碼,它們必須符合某種特定的結(jié)構(gòu)要求。這種結(jié)構(gòu)可以用一種稱為EBNF的句法元語言表示,通常稱為“語法” (Grammar)。JavaCC根據(jù)語法要求生成解析器,這個解析器就可以用于解析用Java編程語言編寫的程序。 不過實際運行 中的PMD還要經(jīng)過JJTree的一次轉(zhuǎn)換。JJTree是一個JavaCC的插件,通過AST擴充JavaCC生成的解析器。AST是一個Java符號 流之上的語義層。有了JJTree,語法分析的結(jié)果不再是“System, ., out, ., . println”之類的符號序列,而是一個由對象構(gòu)成的樹型層
6、次結(jié)構(gòu)。PMD實現(xiàn)過程實現(xiàn)過程:l 首先傳一個文件名或者Ruleset給pmdl Pmd把該文件流傳給自己生成的javaCC分析器l 分析完畢后,pmd獲得了分析生成的AST的一個引用l PMD把AST處理成一個符號表,你可以在符號表里面查詢一些有用的信息l 每個pmd規(guī)則都會遍歷整個AST并檢驗是否發(fā)生了錯誤l 接著pmd產(chǎn)生一個報表,上面說明了有哪些地方違反了pmd規(guī)則使用IDE插件1、settings > plugins, 搜索PMD,選擇QAplugin,點擊安裝。上圖中紅線框出來的 都需要安裝安裝完成后,重啟IDE插件生效2、Setting->Other Setting-
7、>QAPlugin->Coding Rules可以選擇需要的代碼檢查規(guī)范。3、在要檢查的工程或者代碼上右鍵,選擇 Analyze Code選擇要使用的profile和scope窗口查看檢查結(jié)果使用命令行下載PMD 軟件,解壓后在bin目錄執(zhí)行如下命令。D:workspacesoftjava-pluginpmdpmd-bin-5.3.2bin>pmd -d D:workspaceprojectmygps -f xml -R rulesets/java/unusedcode.xml自定義PMD規(guī)則編寫pmd規(guī)則有兩種方法:l 用java code,需要了解pmd的api,需要進(jìn)行
8、深入研究,也常常用于一些比較復(fù)雜的pmd規(guī)則l 用xpath,對著產(chǎn)生的AST樹,寫就行了,上手比較快,寫起來也比較簡單CheckStyleCheckstyle的檢查原理 sun_checks.xml是由多個module節(jié)點構(gòu)成,因此可以發(fā)現(xiàn):Checkstyle配置是通過指定modules來應(yīng)用到j(luò)ava文件的。modules是樹狀結(jié)構(gòu),以一個名為Checker的module作為root節(jié)點,一般的checker都會包括TreeWalker子module。在xml配置文件中通過module的name屬性來區(qū)分module,module的Properties可以控制如何去執(zhí)行這個module,
9、每個property都有一個默認(rèn)值,所有的check都有一個severity屬性,用它來指定check的level。TreeWalker為每個java文件創(chuàng)建一個語法樹,在節(jié)點之間調(diào)用submodules的Checks。IDE插件IDE插件安裝1、settings > plugins, 搜索CheckStyle-IDEA,點擊安裝。安裝完成后,重啟IntelliJ IDEA使插件生效。配置checkstyleFile->Setting->Other Setting->checkStyle至下圖界面選中新添加的檢查規(guī)則,并Apply即可。使用checkStyle檢查文件在File->Setting->Editor->CheckStyle中選擇是否
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 養(yǎng)老院工作人員獎懲制度
- 企業(yè)員工培訓(xùn)與職業(yè)發(fā)展路徑制度
- 2026河北邯鄲市曲周縣醫(yī)院招聘人事代理人員26人備考題庫附答案
- 交通宣傳教育材料制作與發(fā)放制度
- 2026湖北省定向天津大學(xué)選調(diào)生招錄考試備考題庫附答案
- 2026甘肅銀行股份有限公司招聘校園考試備考題庫附答案
- 2026福建福州市馬尾海關(guān)單證資料管理崗位輔助人員招聘1人參考題庫附答案
- 2026西藏日喀則市亞東縣糧食公司人員招聘1人參考題庫附答案
- 公共交通服務(wù)質(zhì)量投訴處理制度
- 2026重慶大學(xué)附屬涪陵醫(yī)院年衛(wèi)生專業(yè)技術(shù)人員招聘22人參考題庫附答案
- 貸款業(yè)務(wù)貸后管理
- 太原師范學(xué)院簡介
- 人教版七年級英語上冊期末復(fù)習(xí)真題分類練習(xí) 專題05 完形填空(15空)20題(原卷版)
- 2026年湘西民族職業(yè)技術(shù)學(xué)院單招職業(yè)傾向性考試題庫新版
- 2025年北京版(2024)小學(xué)數(shù)學(xué)一年級下冊(全冊)教學(xué)設(shè)計(附目錄 P160)
- 2025年護(hù)士考編高頻考題及解析(共900 題)
- 2025年及未來5年中國天然氣制氫行業(yè)市場全景評估及發(fā)展戰(zhàn)略規(guī)劃報告
- 士官考學(xué)數(shù)學(xué)試卷及答案
- 生產(chǎn)安全事故調(diào)查分析規(guī)則
- 2021??低旸S-AT1000S超容量系列網(wǎng)絡(luò)存儲設(shè)備用戶手冊
- 紅樓夢第9回講解
評論
0/150
提交評論