跳转到内容

软件工程/工具/静态代码分析简介

来自维基教科书,开放世界中的开放书籍

这是一个静态代码分析工具列表。

历史产品

[编辑 | 编辑源代码]
  • 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。

.NET (C#, VB.NET 和所有兼容 .NET 的语言)

[编辑 | 编辑源代码]
  • FxCop — 免费的 Microsoft .NET 程序静态分析,编译为 CIL。独立版本和集成在一些 Microsoft Visual Studio 版本中。来自 Microsoft。
  • Gendarme — 由 Mono 项目创建的开源(MIT 许可证)等效于 FxCop。可扩展的基于规则的工具,用于查找 .NET 应用程序和库中的问题,特别是那些包含 ECMA CIL 格式代码的应用程序和库。
  • StyleCop — 分析 C# 源代码以强制执行一组样式和一致性规则。它可以在 Microsoft Visual Studio 内部运行,也可以集成到 MSBuild 项目中。从 Microsoft 免费下载。

ActionScript

[编辑 | 编辑源代码]
  • 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 — 一个管理软件质量的平台(也适用于其他语言,但使用商业分析工具)。

JavaScript

[编辑 | 编辑源代码]
  • Closure Compiler — JavaScript 优化器,它会重写 JavaScript 代码以使其更快、更紧凑。它还会检查你对原生 JavaScript 函数的使用情况。
  • JSLint — JavaScript 语法检查器和验证器。

Objective-C

[编辑 | 编辑源代码]
  • 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 语言的产品。

  • 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-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。
  • 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 的一个子集。

参考资料

[编辑 | 编辑源代码]
  1. "Xcode 中的静态分析". Apple. 检索于 2009-09-03.
  2. "静态分析". Oclint. 检索于 2015-09-06.
  3. "静态分析". Faux Pas. 检索于 2015-09-06.
  4. "静态分析". Facebook. 检索于 2015-09-06.
  5. "Sonar 中的静态分析". Boto. 检索于 2015-09-06.
  6. "静态分析". Boto. 检索于 2015-09-06.
  7. Parasoft 应用程序安全解决方案
  8. Parasoft 合规解决方案
  9. SourceMeter
  10. Cousot, Patrick (2007). "形式化方法中抽象解释的作用". IEEE 软件工程和形式化方法国际会议. 检索于 2010-11-08.
[编辑 | 编辑源代码]
华夏公益教科书