建议尝试的七大静态密码分析工具

译文
开发 开发工具
本文通过探讨目前市场上七种领先的静态代码分析工具,旨在帮助您提高代码质量,减少错误,并加快开发的交付速度。

[[359116]]

【51CTO.com快译】静态代码分析,或称为源代码分析,是一种将静态代码分析工具,以非运行的方式运用到软件源代码上,以审查其是否符合既定的编码标准,进而发现各种潜在漏洞的方法。通常,静态分析可以为我们带来如下好处:

  • 在代码被执行之前,获取对其的深入洞见
  • 与动态分析相比,静态分析的执行速度更快
  • 可自动化维护代码的质量
  • 能够在早期阶段自动搜索出部分错误(尽管不是全部)
  • 可以在早期阶段自动发现各种安全问题

在实际运用中,您可以使用任何带有静态分析器的IDE(如:Pycharm使用的是pep8),来开展静态分析。下面,让我们一起来探讨一下,目前市场上七种领先的静态代码分析工具:

1.DeepSource

DeepSource可帮助您在代码审查期间,自动查找并修复代码中的各类问题。在使用过程中,它可以与用户的Bitbucket、GitHub或GitLab帐户相集成。该工具可以查找反模式(anti-patterns)、Bug风险、以及由性能引发的各种问题。同时,DeepSource还会生成并跟踪例如:依赖项数量、文档覆盖率等相关指标。

该分析器既可以运行在文件级别,在特定位置发现反模式;又可以运行在存储库级别,发现某些依赖项尚未安装等深层次问题。此外,DeepSource的Autofix还会为发现的问题提供修复建议,并根据更改建议创建拉取式请求。

主要特征

  • 提供单个文件配置
  • 对拉取式请求进行质量审查
  • 能够覆盖广泛的问题
  • 提供主动且可维护的分析器
  • 可详细解析每个问题
  • 可跟踪代码的各项指标
  • 可通过自定义分析,选择性忽略某些问题
  • 可针对常见问题提出修复建议,如适合,可根据更改建议创建拉取式请求
  • 无需设置CI,即可在每一次提交和拉取请求上,运行Black、YAPF、Go fmt等代码格式化文件。

缺点

  • 不支持PHP语言

语言支持

  • 支持Python、JavaScript、Go、Ruby、Java、Docker、TestIdentify
  • 能够在每一次提交和拉取请求中覆盖SQL、Terraform、Shell

定价:

  • DeepSource免费提供给开源组织、学生组织、以及非营利组织使用。其付费计划从每用户、每月12美元起,具体请参见--https://deepsource.io/pricing/?utm_source=dzone。

2.SonarQube

作为一种流行的静态分析工具,SonarQube可用于持续审查代码库中的代码质量和安全性,并在代码审查期间给予开发团队相应的指导。同时,它也可被用于带有CI/CD集成的自动化代码审查中。此外,SonarQube还通过提供质量管理工具,来主动协助IDE集成、Jenkins集成、持续集成服务器、以及确保代码查看工具的正确设置。

主要特征

  • 支持多语言
  • 提供安全分析
  • 确保代码的发布质量
  • 具有可维护性
  • 可识别出较为棘手的问题

缺点

  • 并非所有的IDE都能够支持SonarQube
  • 无法为那些团队暂时绕开,或暂缓解决的问题提供忽略选项

语言支持

  • 支持包括Java、C#、JavaScript、TypeScript、C/C ++、以及COBOL等25种以上的编程语言

定价:

  • SonarQube的社区版是免费和开源的。其商业版许可证的售价为120欧元起,具体请参见--https://www.sonarsource.com/plans-and-pricing/。

3.Codacy

Codacy是一种静态分析工具,可以帮助开发人员解决技术问题,并提高代码质量。Codacy在每一次提交和PR(产品迭代)中监视代码质量。您可以用它来执行代码质量标准,执行安全性实践,并节省代码审查的时间。

主要特征

  • 提供代码审查的自动化
  • 提供代码质量分析
  • 支持代码安全性分析
  • 支持集群安装与多实例

缺点

  • 缺乏与某些SaaS服务的集成,其中包括:Sonatype、Blackduck、AWS API网关的API QOS各项指标、以及UI/E2E的各种Saas测试服务
  • 无法对项目的相关信息进行加密,或是限制对UI中的源代码进行访问
  • 其拥有的社区相对较小

语言支持

  • 支持包括Elixir、Go、Java、JavaScript、JSON、Kotlin、Python、Ruby、Scala、Swift、TypeScript等30多种语言。

定价:

  • Codacy具有免费的开源版本。其高级版本的起价为每用户、每月15美元,具体请参见--https://www.codacy.com/pricing。

4.DeepScan

DeepScan是一款业界技术领先的静态分析工具。它能够方便开发人员查找运行时(runtime)中的各项错误与质量问题,而不仅仅停留在编码规则的层面上。通过将DeepScan与目标GitHub存储库的集成,您可以对自己项目的产品质量进行深入了解。

主要特征

  • 错误追踪
  • 自动化构建
  • 代码审查
  • 协作
  • 持续集成

缺点

  • 支持的编程语言较为有限

语言支持

  • 能够支持JavaScript、TypeScript、React和Vue.js。

定价:

  • DeepScan对于开源项目是免费的。其付费计划从每用户、每月9美元起,具体请参见--https://deepscan.io/pricing/。

5.Embold

作为一种通用的静态分析器,Embold既可帮助开发人员在那些关键代码问题出现在产品中之前,事先查找并定位它们,又能够针对应用程序,提供诊断、转换和运维等服务。

由于整合了AI和机器学习技术,Embold能够通过评级机制,对发现的问题提出最佳解决方案,并按需对应用进行重构。而且,它可运行在诸如DevOps技术栈、本地系统、私有云、以及公有云中。

主要特征

  • 直观的用户界面
  • 提供更加深入和快速的审查
  • 增强的智能性能
  • 提供无缝的集成

缺点

  • 定价过高

语言支持

  • Java、C、C ++、C#、Objective-C、TypeScript、JavaScript、Python、PHP、Go、Kotlin、Solidity、SQL

定价:

  • Embold的基本版本是免费开源的。其高级版本的售价从每月10欧元起,具体请参见--https://embold.io/pricing-cloud。

6.Veracode

Veracode是一款仅针对安全性问题的流行静态代码分析工具。它能够通过IDE扫描、管道(pipeline)扫描、以及策略扫描等方式,在整个管道中执行代码审查,以发现安全漏洞。通过创建对于代码的评估,Veracode能够被作为程序的一部分进行审计。

主要特征

  • 提供编码时的安全性反馈
  • 在管道中提供快速的运行成果
  • 满足审计员的各项要求
  • 分析的精度较高,无需额外调优
  • 提供修复建议

缺点

  • 不提供任何可自定义的扫描规则
  • UX(用户体验)不太好

语言支持

Java、.NET、JavaScript、Scala、Python、PHP、Ruby on Rails、ColdFusion、Swift、C/C ++、COBOL、Visual Basic 6、RPG等

定价:

  • Embold许可证的定价取决于目标项目的规模。您可以通过链接—https://info.veracode.com/request-quote.html,获悉详细报价。

7.Reshift

Reshift是一个基于SaaS的软件平台。它可以无缝地被集成到软件开发的工作流程中。项目团队可以用它来加速交付流程,并确保持续部署过程中的安全性。Reshift能够减少他们花费在查找与修复漏洞,识别数据泄露的潜在风险,以及协助软件产品合规性等方面的成本和时间。

主要特征

  • 能够快速被设置
  • 提供安全扫描

缺点

  • 除Java之外,并不支持其他语言

语言支持

  • Java

定价:

  • Reshift的基本版本是免费开源的。其商业版的售价为每月99美元起,具体请参见--https://www.reshiftsecurity.com/pricing/。

原文标题:Top 7 Static Code Analysis Tools,作者:Saif Sadiq

【51CTO译稿,合作站点转载请注明原文译者和出处为51CTO.com】

 

责任编辑:华轩 来源: 51CTO
相关推荐

2013-09-23 09:43:01

编程编程实验

2015-11-09 17:28:17

2021-05-24 09:00:00

ETL工具数据

2021-07-13 09:00:00

网站开发工具

2019-01-31 09:02:56

网页抓取设计模式数据

2022-03-17 15:15:53

数据分析大数据

2015-07-02 09:15:02

2015-07-29 10:05:55

电子邮件邮件安全电子邮件加密

2012-04-09 10:48:07

云计算IT.安全

2011-06-20 09:12:50

2019-09-26 05:30:03

物联网通信协议IOT

2021-03-30 09:00:00

工具自动化开发

2010-04-16 12:08:20

2018-04-11 14:13:29

物联网信息技术互联网

2020-12-22 09:55:55

IT首席信息官CIO

2022-05-23 08:09:42

物联网IOT

2015-07-08 08:51:11

SDN

2020-12-18 10:35:27

IT技术领导者

2022-04-06 17:48:44

数据分析梳理数据业务

2019-06-27 05:45:01

安全风险网络安全恶意代码
点赞
收藏

51CTO技术栈公众号