使用SpotBug進行靜態代碼檢查

在運行程序前我們可以通過編譯來發現問題,但這樣是遠遠不夠的。這是因爲在編譯期間僅捕獲到非常小的錯誤範圍,即語法錯誤,無效引用等。當程序包含編譯錯誤時,IDE會發出警告,但它無法防範其他類型的錯誤,例如運行時錯誤或邏輯錯誤。

通過使用靜態分析工具SpotBugs,瀏覽代碼以查找某些“已知的壞味道”:可能會導致偶發性/間歇性問題,性能不佳等的事物。這些問題很難通過測試找到,因此通過檢查通常是唯一可行的方法。擁有一個可以自動執行這些檢查的工具,以便可以在每次更改時進行檢查,從而防止代碼變得越來越差。

什麼是靜態分析

與查看源代碼的Java編譯器不同,靜態分析會檢查Java字節碼(已編譯的.class文件)是否存在錯誤模式。錯誤模式是一種經常容易出錯的代碼表達式/習慣用法。錯誤模式的產生可能有多種原因,其中包括:

  • 錯誤使用編程語言的某些特性
  • 誤用的API方法
  • 在維護期間修改代碼時誤解變量
  • 錯別字,使用錯誤的運算符等

SpotBugs定義了10個Bug模式:

  1. Bad practice 常見代碼錯誤,違反推薦和基本編碼規範。包括哈希代碼和等號問題、可克隆的習慣用法、丟棄的異常、可序列化的問題和finalize的誤用等。
  2. Correctness 可能的錯誤-一個明顯的編碼錯誤,導致代碼可能不是開發人員想要的。
  3. Experimental 實驗性和未經充分審查的錯誤模式
  4. Internationalization 與國際化和語言環境有關的代碼缺陷
  5. Malicious code vulnerability 易受不可信代碼攻擊的代碼
  6. Multithreaded correctness 與線程、鎖和Volatile有關的代碼缺陷
  7. Bogus random noise 僞隨機噪聲:用於數據挖掘實驗中的控制,而不是用於發現軟件中的實際錯誤
  8. Performance 不一定不正確但可能效率低下的代碼
  9. Security 使用不受信任的輸入,可能會造成可遠程利用的安全漏洞。
  10. Dodgy code 混亂、異常或以導致錯誤的方式編寫的代碼。

更詳細的內容可瀏覽官網介紹

SpotBugs Eclipse插件

在Eclipse裏安裝SpotBugs插件很容易。在“Eclipse Marketplace”中搜索“ SpotBugs”。應該在列表頂部看到SpotBugs,然後一步步安裝即可。最後需要重啓下Eclipse。

在這裏插入圖片描述

SpotBugs 使用

在運行分析之前,讓我們打開SpotBugs視圖。

在“Windows-Show view-Others”中輸入Bugs。選擇兩個SpotBugs視圖,然後單擊打開它們。

在這裏插入圖片描述

在Package Explorer中右鍵單擊項目,然後從上下文菜單中選擇SpotBugs-> Find Bugs。

分析結束後,結果將顯示在Bug Explorer視圖中。

在這裏插入圖片描述

SpotBugs包含有關每個問題的更多信息。要查看它,請右鍵單擊該錯誤,然後從彈出菜單中選擇“ Show Bug Info ”。這將在“Bug Info”視圖中打開一個信息頁面:

在這裏插入圖片描述

總結

在這篇文章中介紹瞭如何在Eclipse中安裝靜態分析工具,並配置和應用到我們的Java項目。儘管SpotBugs不會消除程序中的所有錯誤,但肯定會減少在生產中發現的錯誤數量。

發佈了208 篇原創文章 · 獲贊 212 · 訪問量 144萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章