FindBugs 是一個靜態分析工具,很多程序猿都在使用,再次詳細列出findbugs的使用教程,希望對大家有幫助。
1 安裝
FindBugs通過檢查類文件或 JAR文件,將字節碼與一組缺陷模式進行對比從而發現代碼缺陷,完成靜態代碼分析。Findbugs有兩種工具形式,一種是界面形式另一個是插件形式,能夠在liunx上部署,為了使用方便這里使用插件的形式,具體安裝步驟如下:
Eclipse —> help —> Eclipse Markerplace.. 搜索findbugs如下圖所示,點擊install一直往下安裝即可

驗證:在window —> Preferences 中搜索findbugs 如果出現即為安裝成功
項目右鍵 —> findbugs能夠找到findbugs即為安裝成功
2運行
2.1項目(類)右鍵 —> Find Bugs —> Find Bugs,如圖:

2.2FindBugs插件的3個功能WorkSpace,如圖:

Bug Explorer:這里顯示的是用FindBugs對這個項目(類)掃描的結果。如圖所示可以看出該項目(類)共有 3個bug,在代碼中有臭蟲標記,此處為檢測為“可能存在空指針”的異常,在該異常上右鍵可以跳到Bug Info查看詳細信息。
找出的bug有多種顏色,黑色的臭蟲標志是分類,紅色的臭蟲表示嚴重bug發現后必須修改代碼,橘黃色的臭蟲表示潛在警告性bug盡量修改。

Bug Info:這里是對BUG問題的描述,包括:Bug類別、等級,Bug的定位,對Bug的解釋。Bug等級可根據后面跟隨的數字確定影響,數字越小Bug漏洞越危險。Bug對應位置請看下圖。

3規則 & BUGS
Detector Configuration:在這里你可以選擇所要進行檢查的相關的Bug Pattern條目,你可以根據需要選擇或去掉相應的檢查條件。

Minimum confidence to report:這個選擇項是讓你選擇哪個級別的信息進行顯示,有Low、Medium、High三個選擇項可以選擇。 比如:
選擇了High選擇項,那么只有是High級別的提示信息才會被顯示;
選擇了Medium選擇項,那么只有是Medium和High級別的提示信息才會被顯示;
選擇了Low選擇項,那么所有級別的提示信息都會被顯示。
Minimum rank to report:設置顯示報告的最低等級,圖為1—15級的顯示報告。

Filter files:用戶自定義過濾文件。用戶可以通過查看教程自己編輯XML文件來指定項目時候對一些bug(類型)進行檢測或不檢測,支持通配符,其中Include filter files為指定檢測bug,exclude filter files為不檢測bug,對於exclude baseline bugs可以從添加分析得出的XML結果用來排除不檢測。具體XML文檔格式如下:


常見bugs:
NP_NULL_ON_SOME_PATH_EXCEPTION:代碼調用時, 遇到異常分支, 可能造成一個對象沒有獲得賦值依舊保持NULL空指針。 接下來如果對這個對象有引用, 可能造成NullPointerException 空指針異常。

ST_WRITE_TO_STATIC_FROM_INSTANCE_METHOD:把實例賦值給一個靜態對象,如果多個實例被賦值可能出現數據丟失問題。

NP_ALWAYS_NULL_EXCEPTION:在異常處理時,調用一個空對象的方法時可能引起空指針異常。
IM_BAD_CHECK_FOR_ODD:奇偶檢測邏輯,未考慮負數情況。
WMI_WRONG_MAP_ITERATOR:使用了keySet iterator和Map.get(key)來獲取Map值,這種方式效率低,建議使用entrySet的iterator效率更高
OS_OPEN_STREAM:方法可能未關閉stream,方法產生了一個IO流,卻未關閉,將會導致文件描繪符的泄漏,建議使用finally block來確保io stream被關閉。
IL_INFINITE_LOOP:明顯的無限循環。
擴展:
FindBugs 網站提供了完整的類型清單http://findbugs.sourceforge.net/bugDescriptions.html
Fiter file規則說明http://findbugs.sourceforge.net/manual/filter.html
