代码检查开源工具-汇总

SamDong 发表于 2021/08/16 23:09:55 2021/08/16
【摘要】 业界比较优秀的一些开源静态代码分析的框架。

代码检查开源工具-汇总

概述

静态分析工具的最大好处就是在软件开发流程的早期阶段发现致命的缺陷。目前行业内正在被使用的静态代码分析工具如下:

1.CodeChecker

官方网站:https://codechecker.readthedocs.io/en/latest/

是否商用:否

CodeChecker是一个构建在LLVM/Clang静态分析器工具链上的静态分析基础架构,取代了Linux或macOS (OS X)开发环境中的扫描构建。

2.Cigital SecureAssist

官方网站:https://marketplace.eclipse.org/content/cigital-secureassist

是否商用:否

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

3.Gitleaks

官方网站:https://github.com/zricethezav/gitleaks

是否商用:否

Gitleaks是一个SAST工具,用于检测git repos中的密码、api密钥和令牌等硬编码机密。

4.Flawfinder

官方网站:https://www.dwheeler.com/flawfinder/

是否商用:否

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

5.Mobile Security Framework (MobSF)

官方网站:https://github.com/MobSF/Mobile-Security-Framework-MobSF

是否商用:否

TscanCode是一个静态代码分析器,支持C++, C#, Lua。

6.ShellCheck

官方网站:https://github.com/koalaman/shellcheck

是否商用:否

ShellCheck是一个检查Shell语言的静态代码检查工具。

7.ErrorPone

官方网站:https://github.com/google/error-prone

是否商用:否

ErrorPone是Java的静态分析工具,它可以在编译时捕获常见的编程错误。

8.Brakeman

官方网站:https://brakemanscanner.org/

是否商用:是

brakeman用于Ruby on Rails应用程序的静态分析安全漏洞扫描。

9.Codyze

官方网站:https://github.com/Fraunhofer-AISEC/codyze

是否商用:否

Codyze是一个静态代码分析器,专注于验证源代码中的安全合规性,即通过推断密码库的正确使用。它在代码属性图上操作,因此能够处理非编译甚至不完整的代码片段。

10.TscanCode

官方网站:https://github.com/Tencent/TscanCode

是否商用:否

TscanCode是一个静态代码分析器,支持C++, C#, Lua。

11.NullArray

官方网站:https://github.com/uber/NullAway

是否商用:否

NullAway是一个帮助消除Java代码中NullPointerExceptions(NPE)的工具。要使用NullAway,请首先在代码中添加@Nullable注释,只要字段、方法参数或返回值可能为null。给定这些注释,NullAway会执行一系列基于类型的本地检查,以确保代码中取消引用的任何指针都不能为Null。NullAway类似于Kotlin和Swift语言中基于类型的空性检查,以及Java的Checker Framework和Eradicate null checkers。

12.Roslyn

官方网站:https://github.com/dotnet/roslyn

是否商用:否

Roslyn 是微软公司开源的 .NET 编译器。编译器支持 C# 和 Visual Basic 代码编译,并提供丰富的代码分析 API。FxCop规则被实施到Roslyn。

13.Semgrep

官方网站:https://github.com/returntocorp/semgrep

是否商用:否

Semgrep是一款基于Facebook开源SAST工具pfff中的sgrep组件开发的开源SAST工具,目前由安全公司r2c统一开发维护,走的是开源共建模式,主打轻量、定制化,slogan是Static analysis at ludicrous speed, Find bugs and enforce code standards(以极致的速度扫描发现bug并强化代码规范的落地)。

14.ESLint

官方网站:https://eslint.org/https://eslint.bootcss.com/

是否商用:否

ESLint最初是由Nicholas C. Zakas 于2013年6月创建的开源项目。它的目标是提供一个插件化的javascript代码检测工具。

15.JSLint

官方网站:https://www.jslint.com/

是否商用:否

JSLint是一个JavaScript验证工具(非开源),可以扫描JavaScript源代码来查找问题。如果JSLint发现一 个问题,JSLint就会显示描述这个问题的消息,并指出错误在源代码中的大致位置。有些编码风格约定可能导致未预见的行为或错误,JSLint除了能指 出这些不合理的约定,还能标志出结构方面的问题。尽管JSLint不能保证逻辑一定正确,但确实有助于发现错误,这些错误很可能导致浏览器的 JavaScript引擎抛出错误。

16.CheckStyle

官方网站:https://github.com/checkstyle/checkstyle

是否商用:否

CheckStyle是SourceForge下的一个项目,提供了一个帮助JAVA开发人员遵守某些编码规范的工具。它能够自动化代码规范检查过程,从而使得开发人员从这项重要,但是枯燥的任务中解脱出来。

17.Detekt

官方网站:https://detekt.github.io/detekt/

是否商用:否

detekt是一个kotlin语言的静态代码扫描工具。

18.Clang-tidy

官方网站:http://clang.llvm.org/extra/clang-tidy

是否商用:否

clang-tidy是一个基于clang开发的静态扫描工具。

19.Scapegoat

官方网站:https://github.com/scapegoat-scala/scapegoat

是否商用:否

Scapegoat是一个静态代码分析器。

20.Bandit

官方网站:https://bandit.readthedocs.io/en/latest/

是否商用:否

Bandit是一个旨在查找Python代码中常见安全问题的工具。

21.nodejsscan

官方网站:https://github.com/ajinabraham/nodejsscan

是否商用:否

nodejsscan是用于Node.js应用程序的静态安全代码扫描程序。

22.GoSec

官方网站:https://github.com/securego/gosec

是否商用:否

GoSec是一款go语言的安全检查工具。

23.GoDoctor

官方网站:https://github.com/godoctor/godoctor

是否商用:否

GoSec是一款go语言的安全检查工具。

24.Security Code Scan

官方网站:https://security-code-scan.github.io/

是否商用:否

它是一款.Net静态代码分析器。

25. Apache Yetus

官方网站:https://yetus.apache.org/

是否商用:否

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

26. Infer

官方网站:https://fbinfer.com/

是否商用:否

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

27. Yet Another Source Code Analyzer

官方网站是:https://www.scovetta.com/yasca/

是否商用:否

是一个基于插件的框架,可以扫描任意文件类型,有C、C++、Java、Java、JavaScript、ASP、PHP、HTML-CSS、ColdFusion、COBOL等文件类型的插件。它集成了其他扫描器,包括FindBugs、PMD和Pixy。

28.Cppcheck

官方网站:http://cppcheck.sourceforge.net/

是否商用:否

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

29.Conqat

官方网站:https://www.cqse.eu/en/blog/conqat-end-of-life/

是否商用:否

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

30.Oclint

官方网站:http://oclint.org/

是否商用:否

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

31.Watchtower

官方网站:https://github.com/chrisallenlane/watchtower

是否商用:否

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

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

32.OWASP Code Crawle

官方网站:https://archive.codeplex.com/?p=codecrawler

是否商用:否

用于.NET和Java/J2EE代码的静态分析工具

33.Raxis

官方网站:https://github.com/OWASP/owasp-orizon

是否商用:否

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

34.Rosecheckers

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

是否商用:否

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

它在SourceForge中免费提供。

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

35.Raxis

官方网站:http://frama-c.com/

是否商用:否

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

36.Semmle

官方网站:https://semmle.com/

是否商用:否

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

37.PMD

官方网站:https://pmd.github.io/

是否商用:否

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

38.FindBugs/SpotBugs

官方网站:http://findbugs.sourceforge.net/

是否商用:否

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

39.FindSecBugs

官方网站:https://find-sec-bugs.github.io/

是否商用:否

免费工具,用于查找Java Web应用程序。

40.Splint

官方网站:http://www.splint.org/

是否商用:否

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

41.Hfcca

官方网站:https://github.com/terryyin/lizard

是否商用:否

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

42.Cloc

官方网站:https://github.com/AlDanial/cloc

是否商用:否

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

43.Sloccount

官方网站:https://www.dwheeler.com/sloccount/

是否商用:否

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

44.JSHint

官方网站:http://jshint.com/about/

是否商用:否

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

45.CheckerFramework

官方网站:https://checkerframework.org/

是否商用:否

您是否厌倦了空指针异常(null pointer exceptions)、意外副作用(unintended side effects)、SQL注入(SQL injections)、并发错误(concurrency errors)、错误的等式测试(mistaken equality tests)以及其他运行时错误?

Checker框架增强了Java的类型系统,使其更强大和有用。这使软件开发人员能够检测和防止其Java程序中的错误。检查器框架包括编译器插件(“checkers”),用于查找错误或验证它们的缺失。它还允许您编写自己的编译器插件。

46.CogniCrypt

官方网站:https://www.eclipse.org/cognicrypt/

是否商用:否

最近的大量研究表明,大多数使用密码过程的软件应用程序滥用了它们。Software Security v11 (2020)的VeraCode报告将密码学的不安全使用列为软件漏洞的第三大最常见原因,仅次于信息泄露和CRLF注入。

Eclipse CogniCrypt是在达姆施塔特技术大学(Technische Universität Darmstadt)交叉的合作研究中心开发的。它允许开发人员快速识别和修复加密库的滥用。

插件Eclipse CogniCrypt提供了两个主要组件:代码生成向导,支持开发人员为常见加密任务生成安全代码,以及静态代码分析,它直接在Eclipse中连续检查开发人员的(生成和未生成)代码。

47.FireLine

官方网站:http://magic.360.cn/zh/index.html

是否商用:否

火线团队与信息安全部门深度合作,特别定制了适用于360公司产品的安卓APP安全检查规则。目前火线扫描规则共覆盖六大类:

  • APP安全检查

  • 代码规范检查

  • 内存泄露检查

  • 日志输出检查

  • 空指针检查

  • 多线程检查

48.GodEyes

官方网站:暂无

是否商用:否

Godeyes专注于无线App代码Crash隐患静态扫描,主要有以下特性:

  • 扫描规则提取来自APP的典型crash案例代码,并且在持续增加中;

  • 覆盖已有无线代码扫描工具(findbugs、PMD、checker等)的扫描盲区;

  • 准确率不低于90%;

  • 支持Android、iOS APP代码扫描;

  • 客户端工具安装部署快捷,Eclipse插件版本、Mac一键式命令行版本;

  • 扫描规则可定制,提供html扫描报告;

  • 工具包括*Android Ecilpse插件版本、Mac命令行版本、Jenkins集成版本

  • 简单、方面、易用;

49.Clam

官方网站:https://github.com/seahorn/clam

是否商用:否

Clam是一个静态分析器,它基于Crab库计算基于LLVM语言的归纳不变量,支持LLVM 10。

50.FlowDroid

官方网站:https://blogs.uni-paderborn.de/sse/tools/flowdroid/

是否商用:否

FlowDroid是用于Android应用程序的上下文、流、字段、对象敏感和生命周期感知的静态污染分析工具。与许多其他针对Android的静态分析方法不同,它的目标是以非常高的召回率和精确度进行分析。为了实现这一目标,我们必须完成两个主要挑战:为了提高精度,我们需要构建一个上下文、流、场和对象敏感的分析;为了提高召回率,我们必须创建一个完整的Android应用程序生命周期模型。


参考

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

评论(0

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

全部回复

上滑加载中

设置昵称

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

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

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