findBugs 程式碼靜態掃描 學習筆記
配套的Bug解釋模式
為了有針對性的使用這個工具,減少bug的誤報,提高使用效率,我們選擇了10個左右的bug模式,下面就是對這10個模式的解釋。
這些bug可能會引起程式的效能或邏輯問題.
需要說明的是,findbugs能檢測的bug pattern遠不僅於此,甚至可以定製自己的探測器,因此,這個文件會不斷擴充,同時,也歡迎大家不斷探索和分享使用實踐.
大的分類主要包括以下幾種:
Bad practice |
不好的習慣 |
Correctness |
程式碼的正確性 |
Dodgy |
小問題 |
Malicious code vulnerability |
惡意程式碼 |
Internationalization |
國際化問題 |
Performance |
效能問題 |
Security |
安全性問題 |
Multithreaded currectness |
執行緒問題 |
Experrimental |
實驗性問題 |
findbugs option
class
巢狀元素指定要分析的類。這個元素必須指定一個location屬性,location屬性的名字為archive檔案(jar,zip等)、目錄或者class檔案。可以為一個findbugs元素指定多個class元素。
auxClasspath
可選的巢狀元素,用於指定要分析的類所引用的類,但是並不對引用的類進行分析。
sourcePath
可選的巢狀元素,指定Java原始碼的目錄。
home
必須的屬性,findbugs的安裝目錄。
quietErrors
可選的布林型屬性。如果是true的話,報告嚴重的分析錯誤和丟失的類。預設情況下為false。
reportLevel
可選的屬性。指定優先級別。如果是low的話,那麼報告所有的bug,如果是medium(預設值),報告medium和high優先順序的bug。
output
可選屬性,設定輸出格式。
stylesheet
可選屬性,指定生成html時使用的樣式表。
sort
可選屬性,如果輸出屬性設定為text,該屬性指定是否對輸出結果根據class進行排序,預設為true。
outputFile
可選屬性,指定輸出檔案。
debug
可選的布林型屬性,是否列印分析過程中的日誌。預設值為false。
effort
設定分析工作的等級,可以為min、default和max。
conserveSpace
和min effort一樣的功能。
workHard
和max effort一樣的功能。
visitors
可選屬性,指定逗號分隔的列表,指定要執行的detectors。
omitVisitors
可選屬性,忽略detectors。摺合visitors屬性類似,只是不指定不執行哪些detectors。
excludeFilter
可選屬性,指定排除的Filter。
includeFilter
可選屬性,指定包含的Filter。
projectFile
可選屬性,指定專案的名稱。
jvmargs
可選屬性,指定JVM變數。
systemProperty
系統屬性。
timeout
可選屬性,指定超市的時間,預設為600,000毫秒,即10分鐘。
failOnError
可選屬性,指定是否在執行FindBugs出現異常時停止構建過程,預設為false。
errorProperty
可選屬性,如果在執行FindBugs時發生錯誤,指定屬性的值為true。
warningsProperty
可選屬性,如果在執行FindBugs時發生警告,指定屬性的值為true。