代碼格式檢查_第1頁
代碼格式檢查_第2頁
代碼格式檢查_第3頁
代碼格式檢查_第4頁
代碼格式檢查_第5頁
已閱讀5頁,還剩3頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論