靜態代碼檢查工具簡介
在 Java 軟件開發過程中,開發團隊往往要花費大量的時間和精力發現並修改代碼缺陷。傳統的代碼復審、同行評審,通過人工方式來檢查缺陷仍然是一件耗時耗力的事情。Java 靜態代碼分析(static code analysis)工具能夠在代碼構建過程中幫助開發人員快速、有效的定位代碼缺陷並及時糾正這些問題。
下面簡要介紹幾款可用於Java靜態代碼分析的工具。介紹的順序與工具所占市場份額無關。
1 阿里巴巴Java開發代碼檢測IDE插件
2017年10月,阿里推出了《阿里巴巴Java開發手冊(終極版)》,並在持續更新中。該開發手冊以Java開發者為中心視角,從編程規約、異常日志、單元測試、安全規約、工程結構、MySQL數據庫六個維度,分別給出了相應的開發要求。相應地,阿里在10月份的杭州雲棲大會上正式發布了Java代碼檢測IDE插件(支持與Eclipse、MyEclipse等工具的集成),供大家免費下載使用。個人感覺,阿里的插件對於MyEclipse的支持不夠友好,需要倒騰很久,不過最終還是成功了。
2 FindBugs
官網地址:http://findbugs.sourceforge.net/。
FindBugs 是由馬里蘭大學提供的一款開源 Java 靜態代碼分析工具。FindBugs 通過檢查類文件或 JAR 文件,將字節碼與一組缺陷模式進行對比從而發現代碼缺陷,完成靜態代碼分析。FindBugs 既提供可視化 UI 界面,同時也可以作為 Eclipse/MyEclipse 插件使用。Findbugs規則比較簡單實用,不注重樣式與格式,屬於輕量級的工具。
個人感覺,FingBugs對於MyEclipse的支持也不夠友好,倒騰了很久,試驗了很多方法,但在MyEclipse中還是未能安裝成功,只能通過命令行模式來運行,極其不爽。雖然這個工具目前在業界的使用范圍很廣,從csdn在2016年所做的調查問卷來看,FindBugs的使用占比57%,但是,還是覺得現實很不美好。
3 Checkstyle
官網地址:http://checkstyle.sourceforge.net/
Checkstyle 是 SourceForge 的開源項目,通過檢查對代碼編碼格式,命名約定,Javadoc,類設計等方面進行代碼規范和風格的檢查,從而有效約束開發人員更好地遵循代碼編寫規范。Checkstyle 提供了支持大多數常見 IDE 的插件,例如Eclipse。Checkstyle 對代碼進行編碼風格檢查,並將檢查結果顯示在 Problems 視圖中,開發人員可通過在 Problems 視圖中查看錯誤或警告詳細信息。有關Checkstyle的使用可閱讀:代碼規范工具-Checkstyle使用手冊。
4 PMD
官網地址:https://pmd.github.io/。
PMD 是由 DARPA 在 SourceForge 上發布的開源 Java 代碼靜態分析工具。通過其內置的編碼規則對 Java 代碼進行靜態檢查,主要包括對潛在的 bug,未使用的代碼,重復的代碼,循環體創建新對象等問題的檢驗。PMD 提供了和多種 Java IDE 的集成,例如 Eclipse,IDEA,NetBean 等。
5 Sonar
Sonar是一個代碼質量管理開放平台,能對不同規模和種類的工程進行代碼質量管理,可以集成不同類型的工具一起工作。Sonar主要用於代碼質量管理。該工具目前在業界的使用范圍很廣,從csdn在2016年所做的調查問卷來看,Sonar的使用占比41%。有關Sonar的使用可閱讀:使用Sonar進行代碼質量管理。
6 CodeAnalyzer
官網:http://www.spasvo.com/Products/CodeAnalyzer.asp
CodeAnalyzer簡稱CA,是上海澤眾軟件有限公司自主研發的代碼審查工具,用於實現靜態分析、代碼走查、代碼規范檢查以及代碼潛在錯誤分析。該工具並非開源,不過,可以在官網填寫基本信息后申請獲取試用版。
7 其他
Java靜態代碼分析工具不止上述這些,要了解更多資料可閱讀如下文章。