http://hao.jobbole.com/static_code_analysis_tool_list_opensource/?utm_source=hao.jobbole.com&utm_medium=relatedResources
靜態代碼分析工具清單:開源篇(多語言)
本文是一個靜態代碼分析工具的清單。共有8個工具,其中7個是開源工具,1個有免費使用的版本,都可以用於多種語言。
Codacy
Codacy幾乎包含所有你需要的功能。比如免安裝版本、支持多種語言、只關注提交版本中的新問題、企業級安全保障、發現新問題時可以收到通知、安全和性能檢查、配置文件適用於所有項目、提供雲或者預置版本、代碼覆蓋率、上千條規則、分析不同分支、靈活定製、代碼重複率、攪拌器/複雜性、忽視不相關的問題保持分析結果簡潔、估計修復問題的時間、項目統計、在GH/BB/GL上自動註釋PR、文檔記載每個問題、管理用戶角色和權限、設置目標幫助修復技術債務。
通常Codacy官方支持語言版本都支持靜態分析、代碼重複率、代碼複雜性和測試覆蓋率。現在支持如下語言:Scala、Java、JavaScript、Python、Ruby、PHP。
社區支持的語言是那些被用戶加入Codacy的語言。當支持這些語言的版本可以完美的工作時,它可能只限於靜態分析功能。包括CoffeeScript、CSS、C/C++、Dockerfile、SASS、Shell Scrip、Swift和TypeScript。
Moose
Moose屬於BSD/MIT,是一個基於Pharo環境的軟件和數據分析開源平臺。它提供多種服務,範圍從導入和分析數據到模型化,再到測量、查詢、挖掘和構建交互式可視化分析工具。目前支持的語言是C,C++,Java,Smalltalk,.NET,也許以後會添加更多。
- 最新版本:6.1
- 官網:http://www.moosetechnology.org/
- GitHub:https://github.com/moose/Moose
- Humane assessment:http://humane-assessment.com/
- Agile visualization:http://agilevisualization.com/
Copy/Paste Detector(CPD)
PMD是一個源代碼分析器。它尋找常見的編程缺陷,例如未使用的變量、空的catch塊、多餘的對象創建等等。支持Java、JavaScript、Salesforce.com Apex、PLSQL、Apache Velocity、XML、XSL。
另外,它包含CPD(copy-paste-detector),一個複製粘貼檢測器。CPD尋找重複的代碼,支持Java、C、C++、C#、Groovy、PHP、Ruby、Fortran、JavaScript、PLSQL、Apache Velocity、Scala、Objective C,Matlab,Python,Go,Swift和Salesforce.com Apex。
- 最新版本:5.5.2
- 發佈日期:2016年11月5日
- 官網:https://pmd.github.io/
- GitHub:https://github.com/pmd
Pretty Diff
Pretty Diff聯合多個語言解析器爲當前流行的網絡語言比較工具創造了一個能夠識別語言差異的工具。它可以立刻比較簡化的代碼和它對應的開發環境。
因爲這個工具包含多個語言解析器執行美化操作,所以有大量的可用功能和更多的可能。
- 最新版本:2.1.15
- 發佈日期:2016年12月4日
- 官網:http://prettydiff.com/
- GitHub:https://github.com/prettydiff/prettydiff
SonarQube
主要功能:
1. 編寫乾淨的代碼:SonarQube提供一份關於源代碼整體健康情況的概述。更重要的是,它將在新代碼中發現的問題高亮顯示。使用項目中的質量門設置,你將可以輕易的修復漏洞,機械的改善代碼。
2. 檢測錯誤:代碼分析器配備強大的路徑敏感數據流引擎,可以嚴格檢測錯誤。比如空指針引用、邏輯錯誤、資源泄漏等等。
3. 多語言:超過20個代碼分析器可以使用,SonarQube爲每個主流編程語言提供一個代碼分析器:C/C++、JavaScript、C#、Java、COBOL、PL/SQL、PHP、ABAP、VB.NET、Python、RPG、Flex、Objective-C、Swift、Web等等。每個分析器提供大量的規則以便定位普遍的和特定語言的質量問題。應用程序經常一次使用幾種編程語言,例如[C#,C++和JavaScript]或者[Java,JavaScript和HTML]。SonarQube自動檢測這些語言,調用對應的分析器。
4. 開發運營一體化:SonarQube希望成爲開發運營生態系統的一部分,因此使用網勾或廣泛的數據接口將它集成入CI引擎、提升渠道等。
5. 集中控制質量:爲開發者、技術領導、管理者和負責幾個或者幾千個項目的決策層提供一個代碼質量共享的願景。
- 最新版本:6.2
- 發佈日期:2016年12月14日
- 官網:https://www.sonarqube.org/
- GitHub:https://github.com/SonarSource/sonarqube
SourceMeter
SourceMeter是一個創新的精確靜態源代碼分析工具,可用於C/C++,Java,C#,Python語言和RPG項目。這個工具使在開發時僅從源代碼中尋找系統薄弱點成爲可能,不需要模擬生存條件。
這個工具還集成了最好的免費可用的靜態檢查器工具(Cppcheck,PMD,FindBugs,FxCop,Pylint),並且以統一的方式呈現它們的結果。
使用這些分析結果,被分析的源代碼質量在短期和長期都可以直接改善和開發。
功能有限的免費版本可用於所有編程語言。
Squale多語言
Squale(Software QUALity Enhancement)幫助處理軟件的開發質量,項目主要關注兩個方面:
開發增強質量模型:
- 受已存在的標準(ISO-9126)和方法(GQM,McCall)啓發;
- 被著名的科研人員驗證和改進,他們是Squale團隊的一部分;
- 處理技術和節約兩方面的質量。
開發一個開源應用去幫助評估軟件質量並隨着時間提高它:
- 基於第三方技術(商業的或者開源的)產生原始質量信息(例如度量標準);
- 使用質量模型將這些原始信息合成爲高層級的質量因素;
- 所有這些都面向不同的語言,包括Java,C/C++,.NET,Cobol等。
- 最新版本:7.1
- 發佈日期:20011年5月26日
- 官網:http://www.squale.org/
- GitHub:https://github.com/bellingard/squale
Yasca
Yasca是一個2007年開始開發的源代碼分析工具。它被稱之爲一個美化的正則表達式腳本加上一個其他開源工具集合器。
Yasca可以掃描檢查很多語言的源代碼、比如Java、C/C++、HTML、JavaScript、ASP、ColdFusion、PHP、COBOL、.NET和其他一些語言。Yasca很容易和其他工具集成、包括FindBugs、PMD、JLint、JavaScript Lint、PHPLint、CppCheck、ClamAV、RATS和Pixy。
Yasca設計的非常靈活,並且容易擴展。實際上,編寫一個新的規則是很容易的,和想出一個正則表達式、它適用的文件擴展名或這個規則的名字一樣簡單。將那些信息放在插件目錄下的一個文本文件中就可以運行Yasca了。
- 最新版本:2.21
- 發佈日期:2010年11月1日
- 官網:http://www.scovetta.com/yasca.html
- GitHub:https://github.com/scovetta/yasca