PMD
來(lái)源網(wǎng)址:http://wenda.tianya.cn/question/497921dba4731b8f
D:\軟件-zlp\pmd-bin-4.2.5\pmd-4.2.5\bin>java -jar ..\lib\pmd-4.2.5.jar E:\代碼\src text rulesets/unusedcode.xml
rulesets/internal/all-java.xml表示所有的規(guī)則
-reportfile 1.txt將結(jié)果輸出到文檔中
Jtest 污秆、FindBugs健芭、PMD
http://wenku.baidu.com/view/2b52ced13186bceb19e8bb9b.html?re=view
http://blog.csdn.net/sadamdiyi/article/details/6073694
http://www.cnblogs.com/flyme/archive/2011/09/09/2172548.html
http://my.oschina.net/u/2258637/blog/342730
多個(gè)工具比較:http://www.oschina.net/question/129540_23043
需要學(xué)習(xí)一點(diǎn)java基礎(chǔ),java ?jdk環(huán)境的搭建块蚌,Eclipse的基本使用
findbugs:C:\My Directory>%FINDBUGS_HOME%\bin\findbugs.bat -gui
findbugs:http://blog.csdn.net/song198710/article/details/6500965
http://www.blogjava.net/pure/archive/2009/09/30/296989.html
http://blog.csdn.net/song198710/article/details/6500962bug分析記錄
PMD規(guī)則(轉(zhuǎn)載)
來(lái)源網(wǎng)址:http://www.ibm.com/developerworks/cn/java/j-pmd/
PMD 包含 16 個(gè)規(guī)則集,涵蓋了 Java 的各種常見問(wèn)題祸泪,其中一些規(guī)則要比其他規(guī)則更有爭(zhēng)議:
傳遞哪個(gè)名稱勤晚?
對(duì)于在命令行中傳遞的規(guī)則名稱饰序,沒(méi)有詳細(xì)的文檔記錄。有時(shí)需要試一下并產(chǎn)生一些錯(cuò)誤贰拿,您才能清楚這些名稱蛤袒。在這里,圓括號(hào)中給出的名稱是可以使用的壮不。
基本(rulesets/basic.xml)—— 規(guī)則的一個(gè)基本合集汗盘,可能大多數(shù)開發(fā)人員都不認(rèn)同它:catch塊不該為空,無(wú)論何時(shí)重寫equals()询一,都要重寫hashCode()隐孽,等等癌椿。
命名(rulesets/naming.xml)—— 對(duì)標(biāo)準(zhǔn) Java 命令規(guī)范的測(cè)試:變量名稱不應(yīng)太短;方法名稱不應(yīng)過(guò)長(zhǎng)菱阵;類名稱應(yīng)當(dāng)以小寫字母開頭踢俄;方法和字段名應(yīng)當(dāng)以小寫字母開頭,等等晴及。
未使用的代碼(rulesets/unusedcode.xml)—— 查找從未使用的私有字段和本地變量都办、執(zhí)行不到的語(yǔ)句、從未調(diào)用的私有方法虑稼,等等琳钉。
設(shè)計(jì)(rulesets/design.xml)—— 檢查各種設(shè)計(jì)良好的原則,例如:switch語(yǔ)句應(yīng)當(dāng)有default塊蛛倦,應(yīng)當(dāng)避免深度嵌套的if塊歌懒,不應(yīng)當(dāng)給參數(shù)重新賦值,不應(yīng)該對(duì) double 值進(jìn)行相等比較溯壶。
導(dǎo)入語(yǔ)句(rulesets/imports.xml)—— 檢查 import 語(yǔ)句的問(wèn)題及皂,比如同一個(gè)類被導(dǎo)入兩次或者被導(dǎo)入java.lang的類中。
JUnit 測(cè)試(rulesets/junit.xml)—— 查找測(cè)試用例和測(cè)試方法的特定問(wèn)題且改,例如方法名稱的正確拼寫验烧,以及suite()方法是不是 static 和 public。
字符串(rulesets/string.xml)—— 找出處理字符串時(shí)遇到的常見問(wèn)題又跛,例如重復(fù)的字符串標(biāo)量碍拆,調(diào)用String構(gòu)造函數(shù),對(duì)String變量調(diào)用toString()方法慨蓝。
括號(hào)(rulesets/braces.xml)—— 檢查for倔监、if、while和else語(yǔ)句是否使用了括號(hào)菌仁。
代碼尺寸(rulesets/codesize.xml)—— 測(cè)試過(guò)長(zhǎng)的方法、有太多方法的類以及重構(gòu)方面的類似問(wèn)題静暂。
Javabean(rulesets/javabeans.xml)—— 查看 JavaBean 組件是否違反 JavaBean 編碼規(guī)范济丘,比如沒(méi)有序列化的 bean 類。
終結(jié)函數(shù)(finalizer)—— 因?yàn)樵?Java 語(yǔ)言中洽蛀,finalize()方法不是那么普遍(我上次編寫這個(gè)代碼也經(jīng)是好多年前的事了)摹迷,所以它們的使用規(guī)則雖然很詳細(xì),但是人們對(duì)它們相對(duì)不是很熟悉郊供。這類檢查查找finalize()方法的各種問(wèn)題峡碉,例如空的終結(jié)函數(shù),調(diào)用其他方法的finalize()方法驮审,對(duì)finalize()的顯式調(diào)用鲫寄,等等吉执。
克隆(rulesets/clone.xml)—— 用于clone()方法的新規(guī)則地来。凡是重寫clone()方法的類都必須實(shí)現(xiàn)Cloneable戳玫,clone()方法應(yīng)該調(diào)用super.clone(),而clone()方法應(yīng)該聲明拋出CloneNotSupportedException異常未斑,即使實(shí)際上沒(méi)有拋出異常咕宿,也要如此。
耦合(rulesets/coupling.xml)—— 查找類之間過(guò)度耦合的跡象蜡秽,比如導(dǎo)入內(nèi)容太多府阀;在超類型或接口就已經(jīng)夠用的時(shí)候使用子類的類型;類中的字段芽突、變量和返回類型過(guò)多等试浙。
嚴(yán)格的異常(rulesets/strictexception.xml)—— 針對(duì)異常的測(cè)試:不應(yīng)該聲明該方法而拋出java.lang.Exception異常,不應(yīng)當(dāng)將異常用于流控制诉瓦,不應(yīng)該捕獲Throwable川队,等等。
有爭(zhēng)議的(rulesets/controversial.xml)—— PMD 的有些規(guī)則是有能力的 Java 程序員可以接受的睬澡。但還是有一些爭(zhēng)議固额。這個(gè)規(guī)則集包含一些更有問(wèn)題的檢驗(yàn),其中包括把 null 賦值給變量煞聪、方法中有多個(gè)返回點(diǎn)斗躏,以及從sun包導(dǎo)入等。
日志(rulesets/logging-java.xml)—— 查找java.util.logging.Logger的不當(dāng)使用昔脯,包括非終狀態(tài)(nonfinal)啄糙、非靜態(tài)的記錄器,以及在一個(gè)類中有多個(gè)記錄器云稚。
您可以一次用多個(gè)規(guī)則集進(jìn)行檢查隧饼,只需在命令行中用逗號(hào)分隔規(guī)則集名稱即可:
$ /usr/pmd-2.1/etc/pmd.sh ~/Projects/XOM/src html
rulesets/design.xml,rulesets/naming.xml,rulesets/basic.xml