静态代码分析工具大全(收集57个)

举报
Jet Ding 发表于 2020/09/29 15:12:47 2020/09/29
【摘要】 前段时间发布的这两篇文章:《Java代码静态检查技术探究》和《C&C++代码编译和分析工具探究》收到了很多朋友的反馈,总结了一下主要有这么两个方面的关注

【引言】

前段时间发布的这两篇文章:《Java代码静态检查技术探究》和《C&C++代码编译和分析工具探究》收到了很多朋友的反馈,总结了一下主要有这么两个方面的关注:

1. 能不能加上某某工具?

2. 能不能对所有工具做个对比 ?

针对这二个问题,本文就来探索一下目前所有已知的最好的静态代码分析工具。如果有遗漏的,请大家补充。

【概述】

静态分析工具的最大好处就是在软件开发流程的早期阶段发现致命的缺陷。

我们因该尽可能的在代码实际推送到功能QA之前就修复这些缺陷。 如果拖到最后的话,要花大的代价来查找和修复这些问题。

接下来,我们就逐一的了解一下目前业内正在被使用的静态代码分析工具,然后结合您的需求,看看哪些可以对症下药帮您解决问题。

image.png

其官方网站是:

https://yetus.apache.org/

一个构建和发布工具的集合。包括 "precommit "模块,用于执行完整和部分/补丁CI构建,通过其他开源工具提供代码的静态分析,作为可配置报告的一部分。内置支持CC++JavaPerlPythonRubyShellXML。可以通过一个插件框架进行扩展。

2. Axivion Bauhaus Suite

image.png

其官方网站是:

https://www.axivion.com/

一个针对AdaCCC++C#Java代码的静态代码分析工具套件,可执行各种分析,如架构检查、接口分析、MISRA检查和克隆检测等。

3. Cigital SecureAssist

image.png

其官方网站是:

https://marketplace.eclipse.org/content/cigital-secureassist

一个轻量级的IDE插件,可以在开发人员编写代码时实时指出常见的安全漏洞。支持Java.NETPHP

 4. Code Dx

image.png

其官方网站是:

http://codedx.com/

软件应用漏洞关联与管理系统,整合多种静态应用安全测试(SAST)和动态应用安全测试(DAST)工具检测到的软件漏洞,以及手动代码审查的结果,并将其归纳整理和规范化。支持CC++C#JavaJavaScriptJSPPHPPythonRailsRubyScalaVB.NETXML/XSL

5. Infer

 

其官方网站是:

https://fbinfer.com/

一个适用于JavaCCC++Objective-C的工具。针对空指针问题、泄漏、并发问题和Facebook移动应用的API使用问题。在github上以开放源代码的形式提供。

6. Protecode

image.png

其官方网站是:

http://www.protecode.com/

分析软件源代码和二进制文件的组成,搜索开放源代码和第三方代码及其相关的许可。还可以检测安全漏洞。

7. Rogue Wave Software OpenLogic

image.png

其官方网站是:

http://www.perforce.com/

扫描源代码和二进制文件以识别开放源码和许可证,管理开放源码政策和审批,报告安全漏洞,并提供开放源码技术支持。

8. SideCI

image.png

其官方网站是:

https://sider.review/

基于静态代码分析的自动代码审查工具,适用于RubyPythonPHPJavaScriptCoffeeScriptGo。可以检查风格、质量、依赖性、安全性和bug

9. SofCheck Inspector

其官方网站是:

http://www.sofcheck.com/

用于AdaJava的逻辑错误、竞赛条件和冗余代码的静态检测;自动从代码中提取前置条件。

10.         Yet Another Source Code Analyzer

image.png

其官方网站是:

http://yasca.org/

是一个基于插件的框架,可以扫描任意文件类型,有CC++JavaJavaJavaScriptASPPHPHTML-CSSColdFusionCOBOL等文件类型的插件。它集成了其他扫描器,包括FindBugsPMDPixy

11.         Raxis

image.png

其官方网站是:

https://raxis.com/code-review

如下是其官方网站对其产品的介绍:

Raxis使用手动的、逐行的程序来审查实际代码的安全风险。我们的流程是为了满足PCI DSS要求6.3.2等合规性标准而设计的,该标准要求任何定制的内部或公开的代码必须由原作者以外的人进行审查。虽然这可能比使用自动化流程需要更长的时间,但PCI推荐的手动程序,使我们能够发现工具通常会忽略的逻辑错误。此外,我们会提出建议,在适用的情况下,即使代码没有出现直接的漏洞,我们也会提出转为安全编码最佳实践的建议。在某些情况下,我们可能会使用工具来帮助我们批量定位编码问题,但是这些工作都是由高素质的程序员和安全专家手动完成的。

我们的Raxis渗透测试团队在整个工作过程中看到了大量的编码和逻辑错误。这些编码错误往往非常简单,但是错误的结果危害性却是很大的。例如,遗漏了一个隐藏字段的输入检查,就可能会导致系统完全被破坏,包括创建用户账户的能力。虽然这种情况比较少见,但我们也看到过客户没有加入适当的用户授权设计,导致整个应用的操作权限过高的案例。自动化的解决方案并不像我们的手工流程那样有效,可能会在生产代码中留下安全漏洞,被他人利用。

12.         Rips Technologies

image.png

官方网站为:

https://www.ripstech.com/product/

RIPS是唯一能执行特定语言安全分析的代码分析解决方案。它能检测出最复杂的安全漏洞,这些漏洞往往深藏在源代码中,其他工具无法发现。

它支持主要框架、SDLC集成、相关行业标准,并可作为自托管软件部署或作为软件即服务使用。

RIPS以其高精确度和无假阳性噪声,是分析JavaPHP应用程序的理想选择。

13.         PVS-Studio

image.png

官方网站为:

https://www.viva64.com/en/pvs-studio-download/?promo=top40

PVS-Studio是一个用于检测程序源代码中的BUG和安全漏洞的工具,它是用CC++C#Java编写的。它可以在WindowsLinuxmacOS环境中工作。

它可以集成到Visual StudioIntelliJ IDEA和其他广泛使用的IDE中。分析的结果可以导入到SonarQube中。

14.         Kiuwan

image.png

官方网站为:

https://www.kiuwan.com/

Kiuwan是目前市场上技术覆盖和集成度最高的SASTSCA平台。

通过DevSecOps的方法,Kiuwan获得了出色的基准分数(如OwaspNISTCWE等),并提供了丰富的功能,超越了静态分析的范畴,能够满足SDLC中每一个利益相关者的需求。

15.         Gamma

image.png

官方网站为:

https://mygamma.io/

Gamma是一个智能软件分析平台,由Acellere开发。它可以加快代码审查速度,支持开发人员和团队在更短的时间内构建更高质量的软件。

它能自动优先处理代码中的热点,并提供清晰的可视化功能。凭借其多矢量诊断技术,它可以从多个角度来分析,包括软件设计等多个方面进行分析,使企业能够透明地管理和提高软件质量。

16.         Reshift

image.png

官方网站为:

https://www.reshiftsecurity.com/

Reshift是一个基于SaaS的软件平台,可以帮助软件开发团队在部署到生产之前,更快地在自己的代码中发现更多的漏洞。

减少发现和修复漏洞的成本和时间,识别数据漏洞的潜在风险,帮助软件公司实现合规性和监管要求。

17.         CodeScene

image.png

官方网站为:

https://empear.com/

CodeScene根据公司如何实际使用代码来优先处理技术债务和代码质量问题。因此,CodeScene将结果限制在相关的、可操作的、直接转化为商业价值的信息上。

CodeScene还超越了传统的工具,通过测量公司和人员的侧重点来检测软件架构中的协调瓶颈、离岗风险和知识差距。

最后,CodeScene集成到您的CI/CD管道中,作为一个额外的监管员来预测交付风险,并提供上下文感知的质量门来监督您的代码的健康状况。

18.         Visual Expert

image.png

官方网站为:

https://www.visual-expert.com/

Visual Expert是一款针对SQL ServerOraclePowerBuilder代码的独特静态代码分析工具。

Visual Expert工具箱提供了200多个功能,在进行修改时可以减少维护和避免衰退。

l 代码审查

l CRUD矩阵

l E/R图与代码视图同步。

l 代码性能分析

l 代码探索

l 影响分析

l 源代码文档

l 代码比较

19.         Veracode

image.png

官方网站为:

http://www.veracode.com

Veracode是一款基于SaaS模式构建的静态分析工具。该工具主要从安全的角度分析代码。

该工具使用二进制代码/字节码,因此可以确保100%的测试覆盖率。如果你想编写安全代码,这个工具被证明是一个不错的选择。

20.         Fortify

image.png

官方网站为:

https://www.microfocus.com

Fortify是惠普公司的一款工具,它的目的是让开发人员创建无错误的安全代码。

这款工具开发团队和安全团队都能使用。可以让开发团队和安全团队共同发现并修复安全相关的问题,

在扫描代码的同时,它会对发现的问题进行排序,从而可以确保首先修复最关键的问题。

21.         Parasoft

image.png

官方网站为:

https://www.parasoft.com

Parasoft是静态分析测试的最佳工具之一。与其他静态分析工具相比,Parasoft的静态分析工具略有不同,因为它能够支持各种类型的静态分析技术,如基于模式的、基于流程的、第三方分析、度量和多变量分析。

该工具的另一个好处是除了识别缺陷之外,它还提供一个防止出现缺陷的功能。

22.         Coverity

image.png

官方网站为:

https://scan.coverity.com/

Coverity Scan是一个基于云计算的开源工具。它适用于使用CC++JavaC#JavaScript编写的项目。这个工具提供了一个非常详细而清晰的问题描述,有助于更快的解决问题。

如果你正在寻找一个开源工具,这是个不错的选择。

23.         Cast

官方网站为:

http://www.castsoftware.com/

一个可以用来分析50多种语言的自动化工具,无论项目规模大小,它都能出色地工作。此外,它还为用户提供了一个仪表板,有助于衡量质量和生产力。

24.         CodeSonar

官方网站为:

http://www.grammatech.com/products/source-code-analysis

Grammatech的静态分析工具,不仅可以让用户找到编程错误,还可以帮助用户找出域相关的编码错误。它还允许自定义检查点,并且还可以根据需求配置内置检查。

总的来说,它是一个很好的检测安全漏洞的工具,它的深度静态分析能力使它从众多的静态分析工具中脱颖而出。

25.         Understand

官方网站为:

https://scitools.com/

正如它的名字一样,这个工具可以让用户通过分析、测量、可视化和维护来理解代码。这使得用户可以快速分析大量的代码。这是一个主要用于航空航天和汽车行业的工具。支持C/C++ADACOBOLFORTRANPASCALPython等主流语言和其他网络语言。

26.         Code Compare

官方网站为:

https://www.devart.com/codecompare/

Code Compare - 是一个文件和文件夹比较和合并工具。超过70,000名用户在解决合并冲突和部署源代码修改时使用Code Compare

Code Compare是一个免费的比较工具,用于比较和合并不同的文件和文件夹。Code Compare集成了所有流行的源码控制系统:TFS, SVN, Git, Mercurial, PerforceCode Compare可以作为一个独立的文件比较工具和Visual Studio的扩展使用。

主要功能:

l  文本比较和合并

l  语义源码比较

l  文件夹比较

l  Visual Studio集成

l  版本控制集成和其他

27.         Clang Static Analyzer

官方网站为:

http://clang-analyzer.llvm.org/

这是一个开源工具,可以用来分析CC++代码。它使用clang库,是一个可重用的组件,可以被多个客户端使用。

28.         CppDepend

官方网站为:

https://www.cppdepend.com/

与其他静态分析工具相比,是一款非常容易使用的工具。顾名思义,这个工具是用来分析C/C++代码的。它支持不同的代码质量指标,提供了监控趋势的功能,有一个与Visual Studio集成的插件,允许编写自定义查询,并带有非常好的诊断功能。

29.         Raxis

官方网站为:

https://www.perforce.com/products/klocwork

除了查找语义和语法错误,这个工具还可以让用户检测代码中的漏洞。这个工具很好地集成了许多常用的IDE,如EclipseVisual StudioIntellij IDEA。该工具可以与代码创建并行运行,它可以逐行检查,并提供了实时处理缺陷的功能。

30.         Cppcheck

官方网站为:

http://cppcheck.sourceforge.net/

一个免费的C/C++静态分析工具。这个工具的好处在于它与其他几个开发工具的集成,如EclipseJenkinsCLionVisual Studio等。

31.         Helix QAC

官方网站为:

https://www.perforce.com/products/helix-qac

Helix QACPerforce(原PRQA)推出的一款优秀的CC++代码静态分析测试工具。该工具自带一个安装程序,支持Windows 7Linex Rhel 5Solaris 10等平台。它提供了非常清晰的诊断程序,有助于识别根本原因和快速修复缺陷。

32.         Goanna

官方网站为:

http://redlizards.com/

一个用于C/C++的安全静态分析工具,允许与Microsoft Visual StudioEclipseTexas Instruments Code Composer和更多的IDE集成。此外,它还具有出色的错误报告功能。

33.         Polyspace

官方网站为:

http://in.mathworks.com/products/polyspace-bug-finder/

Polyspace bug-finder可以帮助查找C/C++的缺陷;

它与Eclipse集成,同时符合MISRA CMISRA C++JSF++等编码规则标准。

34.         Sourcemeter

官方网站为:

https://www.sourcemeter.com/

一个帮助分析C/C++JavaC#RPGPython代码的工具。这个工具的另一个好处是它允许与免费的静态检查工具如cppcheckPMDFindBugs集成。

这个工具的基本版是免费的,但它的功能较少。根据需要,你可以根据自己的需求来判断免费版是否满足要求。

35.         Conqat

官方网站为:

https://www.cqse.eu/en/blog/conqat-end-of-life/

一个优秀的工具,可以用于克隆检测,支持多种语言,允许与其他静态分析工具集成,提供一个仪表板,显示发现问题的详细信息和其他质量指标。

36.         JArchitect

官方网站为:

http://www.jarchitect.com/

该工具可以让分析Java代码变得简单易行,支持通过LINQ进行代码查询,提供了大量的代码指标,允许在不同的构建之间进行代码比较,并且具有很好的自定义报告功能。

37.         Oclint

官方网站为:

http://oclint.org/

是一个独立的工具,用于分析C/C++Objective-C程序,支持LinuxMac OX平台。它可以完成静态分析工具所要做的一切工作,如查找bug、未使用的代码、冗余代码等,除此之外,它还带有一个可定制的配置,可以帮助用户根据自己的需求进行定制。

38.         Watchtower

官方网站为:

https://github.com/chrisallenlane/watchtower

该工具主要用于安全专家进行手动代码审查,在本地系统上的效果最好,但也可以扫描远程网站。

有一个广泛的配置文件,可以配置不同的报告选项。创建备用的配置文件有助于同时执行多个项目。

39.         OWASP Code Crawle

官方网站为:

https://archive.codeplex.com/?p=codecrawler

用于.NETJava/J2EE代码的静态分析工具

40.         Raxis

官方网站为:

https://github.com/OWASP/owasp-orizon

一个可以让安全专家从安全的角度来进行代码审查的工具。它还提供了一套可与安全工具集成的API,以提供代码审查服务。

41.         Raxis

官方网站为:

https://gimpel.com/

用于测试C/C++源代码。PC Lint可以在windows操作系统上工作,而Flexe Lint是专为非windows操作系统设计的,可以在包括UNIX在内的支持C语言编译器的系统上运行。

42.         IBM Rational

官方网站为:

https://www.ibm.com/support/knowledgecenter/hr/SSQ2R2_9.5.1/com.ibm.help.common.rational.doc/topics/c_overview_rational.html

IBM Rational为用户提供了不同类型的工具,其中一个工具是软件分析器,它可以用来对代码进行静态分析。这个工具是在一个可扩展的框架上设计的,并与其他Rational产品很好地集成。

43.         Eclair

官方网站为:

https://www.bugseng.com/eclair-0

这个静态分析工具是一个非常灵活和易于配置的工具,几乎支持所有平台,如WindowsUNIXLinusMac OS X

44.         SonarQube

官方网站为:

http://www.sonarqube.org/

它是一个基于网络的开源工具,可以覆盖20多种语言,还允许使用多种插件。

45.         Rosecheckers

官方网站为:

https://resources.sei.cmu.edu/library/asset-view.cfm?assetID=508017

如果你正在寻找一个工具来确保开发的代码符合CERT的编码规则,你可以选择Rosecheckers

它在SourceForge中免费提供。

这个工具可以检查C/C++代码,有时会发现其他静态分析工具无法发现的问题,但不能算是一个完全成熟的独立工具,因为它无法完全测试,目前只是一个原型。

46.         Raxis

官方网站为:

http://frama-c.com/

一个开源工具,针对C语言的分析,自带一个非常灵活的框架。

47.         Semmle

官方网站为:

https://semmle.com/

开源的安全分析工具,用于JavaC语言代码。

48.         PMD

官方网站为:

https://pmd.github.io/

PMD是一个开源的代码分析工具,适用于C/C++JavaJavaScript。这是一个简单的工具,可以用来查找常见的缺陷。它还可以检测java中的重复代码。

49.         FindBugs

官方网站为:

http://findbugs.sourceforge.net/

免费工具,用于查找Java代码中的BUG。它支持任何版本的Java,但需要JRE(或JDK1.7.0或更高的版本才能运行。

50.         IBM AppScan Source

 

官方网站为:

http://www-03.ibm.com/software/products/en/appscan-source

用于在SDLC阶段的早期识别漏洞。同时支持移动扫描。

51.         Flawfinder

官方网站为:

https://www.dwheeler.com/flawfinder/

这是一个开源工具,主要用于查找C/C++程序中的安全漏洞。它可以下载、安装并在UNIX等系统上运行。

52.         Splint

官方网站为:

http://www.splint.org/

一个开源的C语言程序静态和安全分析工具。它的功能非常基本,经过额外的配置,也可以像其他标准工具一样执行。

53.         Hfcca

官方网站为:

https://code.google.com/archive/p/headerfile-free-cyclomatic-complexity-analyzer/

Header Free Cyclomatic Complexity Analyser是一个执行分析的工具,它不关心C/C++头和Java导入。使用简单,不需要安装。可用于C/C++JavaObjective C

54.         Cloc

官方网站为:

https://github.com/AlDanial/cloc

该工具用Perl编写,用户可以区分空行、注释行和物理行,并支持多种语言。总的来说,这是一个易用的工具,具有良好的功能,如提供多种格式的输出,可以在多个系统上运行,并附带一个简单的安装包。

55.         Sloccount

官方网站为:

https://www.dwheeler.com/sloccount/

一个开放源码工具,让用户在多语言和多平台上计算物理源码行数。

56.         JSHint

官方网站为:

http://jshint.com/about/

这是一个支持JavaScript静态分析的免费工具。

57.         DeepScan

官方网站为:

https://deepscan.io/

DeepScan是一个高级静态分析工具,支持JavaScriptTypeScriptReactVue.js

你可以使用DeepScan来查找可能的运行时错误和质量问题,而不是编码惯例。可与你的GitHub仓库集成,以获得对Web项目的质量洞察。

小结

本文列出了目前业内经常使用的静态代码分析工具,希望对感兴趣的朋友有所裨益。

欢迎讨论。

 


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。