使用SpotBugs 進行程式碼檢查
阿新 • • 發佈:2018-12-21
SpotBugs 介紹
目前SpotBugs 3.1.3 自帶檢測器,其中有90餘種Bad practice,155餘種Correctness,9種Experimental, 2種 Internationalization,17種Malicious code vulnerability,46種Multithreaded correctness,4種 Bogus random noise,37種Performance,11種 Security,87種Dodgy。
- Bad practice 不佳實踐:常見程式碼錯誤,用於靜態程式碼檢查時進行缺陷模式匹配(如重寫equals但沒重寫 hashCode,或相反情況等)
- Correctness 可能導致錯誤的程式碼(如空指標引用、無限迴圈等)
- Experimental 實驗性
- Internationalization 國際化相關問題(如錯誤的字串轉換等)
- Malicious code vulnerability 可能受到的惡意攻擊(如訪問許可權修飾符的定義等)
- Multithreaded correctness 多執行緒的正確性(如多執行緒程式設計時常見的同步,執行緒排程問題等)
- BogusMultithreaded correctness 多執行緒的正確性(如多執行緒程式設計時常見的同步,執行緒排程問題等)
- Performance 執行時效能問題(如由變數定義,方法呼叫導致的程式碼低效問題等)
- Security 安全問題(如HTTP,SQL,DB等)
- Dodgy code 導致自身錯誤的程式碼(如未確認的強制轉換、冗餘的空值檢查等)
注: SpotBugs 需要當前的JDK環境為 1.8以上,但可以對1.0~1.9的程式碼來進行檢查。
SpotBugs 外掛
SpotBugs 還有對應的額外外掛,用於擴充套件對應的規則,探測出更多的程式碼問題。
fb-contrib
find-sec-bugs
SpotBugs 使用
Maven
maven 外掛方式使用 spotbugs及相關外掛
<plugin>
<groupId>com.github.spotbugs</ groupId>
<artifactId>spotbugs-maven-plugin</artifactId>
<version>3.1.1</version>
<configuration>
<plugins>
<plugin>
<groupId>com.h3xstream.findsecbugs</groupId>
<artifactId>findsecbugs-plugin</artifactId>
<version>LATEST</version>
</plugin>
<plugin>
<groupId>com.mebigfatguy.fb-contrib</groupId>
<artifactId>fb-contrib</artifactId>
<version>7.4.3.sb</version>
</plugin>
</plugins>
</configuration>
</plugin>