1. 程式人生 > >靜態程式碼檢查工具簡介

靜態程式碼檢查工具簡介

靜態程式碼檢查工具簡介

在 Java 軟體開發過程中,開發團隊往往要花費大量的時間和精力發現並修改程式碼缺陷。傳統的程式碼複審、同行評審,通過人工方式來檢查缺陷仍然是一件耗時耗力的事情。Java 靜態程式碼分析(static code analysis)工具能夠在程式碼構建過程中幫助開發人員快速、有效的定位程式碼缺陷並及時糾正這些問題。

下面簡要介紹幾款可用於Java靜態程式碼分析的工具。介紹的順序與工具所佔市場份額無關。

1  阿里巴巴Java開發程式碼檢測IDE外掛

2017年10月,阿里推出了《阿里巴巴Java開發手冊(終極版)》,並在持續更新中。該開發手冊以Java開發者為中心視角,從程式設計規約、異常日誌、單元測試、安全規約、工程結構、MySQL資料庫六個維度,分別給出了相應的開發要求。相應地,阿里在10月份的杭州雲棲大會上正式釋出了

Java程式碼檢測IDE外掛(支援與Eclipse、MyEclipse等工具的整合),供大家免費下載使用。個人感覺,阿里的外掛對於MyEclipse的支援不夠友好,需要倒騰很久,不過最終還是成功了。

https://github.com/alibaba/p3c

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靜態程式碼分析工具不止上述這些,要了解更多資料可閱讀如下文章。

(1)常用Java靜態程式碼分析工具的分析與比較

(2)靜態程式碼分析工具列表分析---程式碼分析工具列表(30款工具)

(3)靜態程式碼分析工具清單:開源片(各語言)