1. 程式人生 > >使用SpotBugs 進行程式碼檢查

使用SpotBugs 進行程式碼檢查

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。

  1. Bad practice 不佳實踐:常見程式碼錯誤,用於靜態程式碼檢查時進行缺陷模式匹配(如重寫equals但沒重寫 hashCode,或相反情況等)
  2. Correctness 可能導致錯誤的程式碼(如空指標引用、無限迴圈等)
  3. Experimental 實驗性
  4. Internationalization 國際化相關問題(如錯誤的字串轉換等)
  5. Malicious code vulnerability 可能受到的惡意攻擊(如訪問許可權修飾符的定義等)
  6. Multithreaded correctness 多執行緒的正確性(如多執行緒程式設計時常見的同步,執行緒排程問題等)
  7. BogusMultithreaded correctness 多執行緒的正確性(如多執行緒程式設計時常見的同步,執行緒排程問題等)
  8. Performance 執行時效能問題(如由變數定義,方法呼叫導致的程式碼低效問題等)
  9. Security 安全問題(如HTTP,SQL,DB等)
  10. 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>

IDE環境

Eclipse

JetBrain IDEA

其他