軟體工程/工具/靜態程式碼分析簡介
外觀
這是一個靜態程式碼分析工具列表。
- Lint — C 程式碼的原始靜態程式碼分析器。
- PMD Copy/Paste Detector (CPD) — PMD 的重複程式碼檢測,適用於 (例如) Java、JSP、C、C++ 和 PHP 程式碼。
- Sonar — 一個持續檢查引擎,用於管理技術債務(單元測試、複雜性、重複、設計、註釋、編碼標準和潛在問題)。支援的語言包括 Java、Flex、PHP、PL/SQL、Cobol 和 Visual Basic 6。
- Yasca — Yet Another Source Code Analyzer,一個基於外掛的框架,用於掃描任意檔案型別,幷包含用於掃描 C/C++、Java、JavaScript、ASP、PHP、HTML/CSS、ColdFusion、COBOL 和其他檔案型別的外掛。它與其他掃描器整合,包括 FindBugs、JLint、PMD 和 Pixy。
- FxCop — 免費的 Microsoft .NET 程式靜態分析,編譯為 CIL。獨立版本和整合在一些 Microsoft Visual Studio 版本中。來自 Microsoft。
- Gendarme — 由 Mono 專案建立的開源(MIT 許可證)等效於 FxCop。可擴充套件的基於規則的工具,用於查詢 .NET 應用程式和庫中的問題,特別是那些包含 ECMA CIL 格式程式碼的應用程式和庫。
- StyleCop — 分析 C# 原始碼以強制執行一組樣式和一致性規則。它可以在 Microsoft Visual Studio 內部執行,也可以整合到 MSBuild 專案中。從 Microsoft 免費下載。
- Apparat — 一個語言操作和最佳化框架,包含用於 ActionScript 的中間表示。
- BLAST (Berkeley Lazy Abstraction Software verification Tool) — 基於惰性抽象的 C 程式軟體模型檢查器。
- Clang — 包含靜態分析器的編譯器。
- Frama-C — 用於 C 的靜態分析框架。
- Lint — C 的原始靜態程式碼分析器。
- Sparse — 一款旨在查詢 Linux 核心中錯誤的工具。
- Splint — Lint 的開源演進版本(用於 C)。
- cppcheck — 開源工具,用於檢查多種型別的錯誤,包括 STL 的使用。
- Checkstyle — 除了靜態程式碼分析,還可以用來顯示違反配置的編碼標準。
- FindBugs — 來自馬里蘭大學的 Java 開源靜態位元組碼分析器(基於 Jakarta BCEL)。
- Hammurapi —(僅限非商業用途免費)多功能程式碼審查解決方案。
- PMD — 一個基於靜態規則集的 Java 原始碼分析器,用於識別潛在問題。
- Soot — 一個語言操作和最佳化框架,包含用於 Java 的中間語言。
- Squale — 一個管理軟體質量的平臺(也適用於其他語言,但使用商業分析工具)。
- Closure Compiler — JavaScript 最佳化器,它會重寫 JavaScript 程式碼以使其更快、更緊湊。它還會檢查你對原生 JavaScript 函式的使用情況。
- JSLint — JavaScript 語法檢查器和驗證器。
- Clang — 免費的 Clang 專案包含一個靜態分析器。從 3.2 版本開始,該分析器包含在 Xcode 中。[1]
- Oclint — Oclint 是一個靜態程式碼分析工具,透過檢查 C、C++ 和 Objective-C 程式碼來提高質量和減少缺陷。[2]
- Faux Pas — Faux Pas 檢查你的 iOS 或 Mac 應用程式的 Xcode 專案,並警告可能的錯誤,以及可維護性和樣式問題。[3]
- Facebook Infer — Facebook 的開源工具,用於檢測 Android 和 iOS 應用程式中的錯誤。[4]
- Sonar for Objective C — 用於 xcode 的開源 Sonar 外掛。[5]
- Sonar for Objective C(商業版本) — 用於 xcode 的付費 Sonar 外掛。[6]
- Axivion Bauhaus Suite — 用於 C、C++、C#、Java 和 Ada 程式碼的工具,包含各種分析,例如架構檢查、介面分析和克隆檢測。
- Black Duck Suite — 分析軟體原始碼和二進位制檔案的組成,搜尋可重用程式碼,管理開源和第三方程式碼審批,履行與混合來原始碼相關的法律義務,並監控相關安全漏洞。
- CAST Application Intelligence Platform — 詳細的、針對特定受眾的儀表板,用於衡量質量和生產力。30 多種語言,SAP、Oracle、PeopleSoft、Siebel、.NET、Java、C/C++、Struts、Spring、Hibernate 和所有主要資料庫。
- Checkmarx CxSuite — 原始碼分析工具,用於識別以下語言中的應用程式安全漏洞:Java、C#/.NET、PHP、C、C++、Visual Basic 6.0、VB.NET、APEX、Ruby、Javascript、ASP、Perl、Android、Objective C、PL/SQL、HTML5、Python 和 Groovy。
- Coverity 靜態分析(以前稱為 Coverity Prevent) — 識別 C、C++、C# 和 Java 程式碼中的安全漏洞和程式碼缺陷。補充 Coverity 動態程式碼分析和架構分析。
- DMS 軟體重構工具包 — 支援對 C、C++、C#、Java、COBOL、PHP、VisualBasic 和許多其他語言的自定義分析。還提供用於克隆分析、死程式碼分析和樣式檢查的 COTS 工具。
- Compuware DevEnterprise — 對 COBOL、PL/I、JCL、CICS、DB2、IMS 等進行分析。
- Fortify — 幫助開發人員識別 C/C++、.NET、Java、JSP、ASP.NET、ColdFusion、“經典” ASP、PHP、VB6、VBScript、JavaScript、PL/SQL、T-SQL、python 和 COBOL 以及配置檔案中的軟體安全漏洞。
- GrammaTech CodeSonar — 分析 C、C++。
- Imagix 4D — 識別變數使用、任務互動和併發性方面的問題,尤其是在嵌入式應用程式中,作為理解、改進和記錄 C、C++ 和 Java 軟體的整體解決方案的一部分。
- 英特爾 - 英特爾並行工作室 XE:包含**靜態安全分析**(SSA) 功能,支援 C/C++ 和 Fortran
- JustCode — 用於 JavaScript、C#、Visual Basic.NET 和 ASP.NET 的程式碼分析和重構生產力工具
- Klocwork Insight — 提供安全漏洞和缺陷檢測,以及針對 C、C++、C# 和 Java 的架構和構建過構建趨勢分析。
- Kiuwan – 用於靜態程式碼分析、缺陷檢測、應用程式安全和 IT 風險管理的端到端軟體分析平臺,具有增強的生命週期和應用程式治理功能。它支援 25 種以上的語言,包括 Objective-C、Java、JSP、JavaScript、PHP、C、C++、ABAP、COBOL、JCL、C#、PL/SQL、Transact-SQL、SQL、Visual Basic、Visual Basic .NET、Android(作業系統)。
- Lattix, Inc. LDM — 用於 Ada、C/C++、Java、.NET 軟體系統的架構和依賴關係分析工具。
- LDRA Testbed — 一套用於 C、C++、Ada83、Ada95 和組合語言(Intel、Freescale、Texas Instruments)的軟體分析和測試工具。
- Micro Focus(以前稱為 Relativity Technologies)現代化工作臺 — 包含用於 COBOL(包括 IBM、Unisys、MF、ICL、Tandem 的多個變體)、PL/I、Natural(包括 ADABAS)、Java、Visual Basic、RPG、C 和 C++ 以及其他遺留語言的解析器;可擴充套件的 SDK 以支援第三方解析器。支援自動指標(包括功能點)、業務規則挖掘、元件化和 SOA 分析。豐富的即席繪圖、AST 搜尋和報告)
- Ounce Labs(從 2010 年起為 IBM Rational Appscan Source) — 自動化的原始碼分析,使組織能夠識別和消除 Java、JSP、C/C++、C#、ASP.NET 和 VB.Net 等語言中的軟體安全漏洞。
- Parasoft — 使用 .TEST、WSDL、XML、HTML、CSS、JavaScript、VBScript/ASP 和配置檔案來分析 Java(Jtest)、JSP、C、C++(C++test)、.NET(C#、ASP.NET、VB.NET 等)以進行安全[7]、合規性[8] 和缺陷預防。
- Polyspace — 使用抽象解釋來檢測和證明 C、C++ 和 Ada 原始碼中某些執行時錯誤的缺失
- Rational Asset Analyzer(IBM);支援 COBOL(多個變體)、PL/I、Java
- Rational Software Analyzer — 支援 Java、C/C++(以及透過擴充套件提供的其他語言)
- Security Reviewer 1500 多條規則,每條規則最多有 12 種變體,針對每種語言進行專門設計,涵蓋數千種 API 和框架。支援的語言:ABAP、Android 移動裝置、ASP、ASPX、C、C++、CSS、Objective-C、COBOL、C#、Forms、HTML5、Java-JSP-JSF、JavaScript、PHP、Ruby、Python、11 種 SQL 方言(包括 PL/SQL 和 T-SQL 以及 TeradataSQL)、VB.net、Visual Basic 6、Windows Mobile、XML、XPath。NIST 和 CVE 檢查。OWASP、CWE 標準。200 多項質量指標。最佳實踐。SQALE 儀表板。
- SofCheck Inspector — 提供針對 Java 和 Ada 的邏輯錯誤、競爭條件和冗餘程式碼的靜態檢測。提供從程式碼本身自動提取前置/後置條件的功能。
- SourceMeter — 一個獨立於平臺的命令列靜態原始碼分析器,用於 Java、C/C++、RPG IV(AS/400)和 Python[9]。
- Sotoarc/Sotograph — 用於 Java、C#、C 和 C++ 的架構和質量深入分析和監控
- Syhunt Sandcat — 檢測 PHP、Classic ASP 和 ASP.NET Web 應用程式中的安全漏洞。
- Understand — 分析 C、C++、Java、Ada、Fortran、Jovial、Delphi、VHDL、HTML、CSS、PHP 和 JavaScript — 原始碼的反向工程、程式碼導航和度量工具。
- Veracode — 在應用程式二進位制檔案和位元組碼中查詢安全漏洞,無需原始碼。支援的語言包括 C、C++、.NET(C#、C++/CLI、VB.NET、ASP.NET)、Java、JSP、ColdFusion 和 PHP。
- Visual Studio Team System — 分析 C++、C# 原始碼。僅在團隊套件和開發版中可用。
.NET
[edit | edit source]涵蓋多種 .NET 語言的產品。
- CodeIt.Right — 將靜態程式碼分析和自動重構到最佳實踐相結合,使程式碼錯誤和違規自動更正。同時支援 C# 和 VB.NET。
- CodeRush — Visual Studio 的外掛,它解決了流行 IDE 中的許多缺點。包括透過使用靜態程式碼分析來提醒使用者違反最佳實踐。
- JustCode — Visual Studio 2005/2008/2010 的附加元件,用於 C#、VB.NET、ASP.NET、XAML、JavaScript、HTML 和多語言解決方案的即時、全解決方案程式碼分析。
- NDepend — 透過分析和視覺化程式碼依賴關係、定義設計規則、進行影響分析以及比較程式碼的不同版本來簡化複雜 .NET 程式碼庫的管理。整合到 Visual Studio 中。
- ReSharper — IntelliJ IDEA 建立者為 Visual Studio 2003/2005/2008/2010 提供的附加元件,它也為 C# 提供靜態程式碼分析。
- Kalistick — 來自雲端的混合:靜態程式碼分析與最佳實踐提示和敏捷團隊協作工具
Ada
[edit | edit source]- Ada-ASSURED — 提供編碼風格檢查、標準執行和格式化功能的工具。
- AdaCore CodePeer — 用於 Ada 程式的自動化程式碼審查和錯誤查詢工具,它使用控制流、資料流和其他高階靜態分析技術。
- LDRA Testbed — 用於 Ada83/95 的軟體分析和測試工具套件。
- SofCheck Inspector — 提供針對 Ada 的邏輯錯誤、競爭條件和冗餘程式碼的靜態檢測。提供從程式碼本身自動提取前置/後置條件的功能。
C / C++
[edit | edit source]- CppDepend — 透過分析和視覺化程式碼依賴關係、定義設計規則、進行影響分析以及比較程式碼的不同版本來簡化複雜 C/C++ 程式碼庫的管理。整合到 Visual Studio 中。
- FlexeLint — PC-Lint 的跨平臺版本。
- Green Hills Software DoubleCheck — 用於 C/C++ 的軟體分析工具。
- 英特爾 - 英特爾並行工作室 XE:包含**靜態安全分析**(SSA) 功能
- LDRA Testbed — 用於 C/C++ 的軟體分析和測試工具套件。
- Monoidics INFER — 基於分離邏輯的 C/C++ 安全工具。
- PC-Lint — 用於 C/C++ 的軟體分析工具。
- PVS-Studio — 用於 C、C++、C++11、C++/CX 的軟體分析工具。
- QA-C(和 QA-C++) — 對 C/C++ 進行深度靜態分析,以確保質量和指南執行。
- Red Lizard 的 Goanna — 在 Eclipse 和 Visual Studio 中用於 C/C++ 的靜態分析。
- SourceMeter — 一個獨立於平臺的命令列靜態原始碼分析器,用於 Java、C/C++、RPG IV(AS/400)和 Python。
Java
[edit | edit source]- JArchitect — 透過分析和視覺化程式碼依賴關係、定義設計規則、進行影響分析以及比較程式碼的不同版本來簡化複雜 Java 程式碼庫的管理。
- Jtest — Parasoft 提供的測試和靜態程式碼分析產品。
- LDRA Testbed — 用於 Java 的軟體分析和測試工具套件。
- Oversecured — 用於 Android 應用程式的基於雲的靜態漏洞掃描器。包含 90 多個漏洞類別。
- SemmleCode — 用於靜態程式分析的面向物件的程式碼查詢。
- SonarJ — 監控程式碼與預期架構的一致性,還會計算各種軟體指標。
- Kalistick — 一個基於雲的平臺,用於為具有 DevOps 精神的敏捷團隊管理和最佳化程式碼質量
- SourceMeter — 一個獨立於平臺的命令列靜態原始碼分析器,用於 Java、C/C++、RPG IV(AS/400)和 Python。
使用形式化方法進行靜態分析的工具(例如,使用靜態程式斷言)
- ESC/Java 和 ESC/Java2 — 基於 Java 建模語言,這是 Java 的增強版本。
- Polyspace — 使用抽象解釋(一種基於形式化方法的技術[10]) 來檢測和證明 C、C++ 和 Ada 原始碼中某些執行時錯誤的缺失。
- SofCheck Inspector — 靜態確定並記錄 Java 方法的前置條件和後置條件;靜態檢查所有呼叫位置的前置條件;也支援 Ada。
- SPARK 工具集,包括 SPARK Examiner — 基於 SPARK 程式語言,Ada 的一個子集。
- ↑ "Xcode 中的靜態分析". Apple. 檢索於 2009-09-03.
- ↑ "靜態分析". Oclint. 檢索於 2015-09-06.
- ↑ "靜態分析". Faux Pas. 檢索於 2015-09-06.
- ↑ "靜態分析". Facebook. 檢索於 2015-09-06.
- ↑ "Sonar 中的靜態分析". Boto. 檢索於 2015-09-06.
- ↑ "靜態分析". Boto. 檢索於 2015-09-06.
- ↑ Parasoft 應用程式安全解決方案
- ↑ Parasoft 合規解決方案
- ↑ SourceMeter
- ↑ Cousot, Patrick (2007). "形式化方法中抽象解釋的作用". IEEE 軟體工程和形式化方法國際會議. 檢索於 2010-11-08.
- Java 靜態檢查器 在 Curlie
- Eclipse 的 Java 靜態程式碼分析外掛列表
- C 靜態原始碼分析工具列表
- CERT 的靜態原始碼分析工具列表
- SAMATE - 原始碼安全分析器
- SATE - 靜態分析工具博覽會
- “Java 錯誤查詢工具比較”,作者 Nick Rutar、Christian Almazan 和 Jeff Foster,馬里蘭大學。比較了 Bandera、ESC/Java 2、FindBugs、JLint 和 PMD。
- “Java 錯誤查詢器迷你評論”,作者 Rick Jelliffe,O'Reilly Media。
- Parallel Lint,作者 Andrey Karpov
- 將靜態分析整合到軟體開發流程中 說明了如何將靜態分析整合到軟體開發流程中。
- C/C++ 的靜態分析工具 - Polyspace
- PVS-Studio 開發人員透過靜態分析在開源專案中檢測到的錯誤