作者丨 Saif Sadiq

策划丨田晓旭

静态代码分析或源代码分析是指使用静态代码分析工具对软件的 " 静态 " ( 不运行的 ) 代码进行分析的一种方法,找出代码中潜在的漏洞。静态代码分析器检查源代码,找出特定的漏洞,并检查代码是否符合各种编码标准。

1 为什么要进行静态代码分析?

在执行代码之前获取代码洞见;

与动态分析相比,执行速度更快;

可以对代码质量维护进行自动化;

在早期阶段 ( 尽管不是所有阶段 ) 可以自动检索 bug;

在早期阶段可以自动发现安全问题;

如果你在使用带有静态分析器的 IDE ( 例如遵循 PEP8 的 Pycharm ) ,那你已经在 " 船 " 上了。

在知道了什么是静态代码分析之后,接下来就有必要了解一下市场上有哪些好用的静态代码分析工具。废话不多说,让我们来看看现在比较流行的静态代码分析工具。

2DeepSource

DeepSource 可以帮你在代码评审期间自动发现并修复代码中的问题。它可以与 Bitbucket、GitHub 或 GitLab 帐户集成。这个工具可以找出反模式、bug 风险、性能问题。DeepSource 还会生成并跟踪各种指标(例如依赖项计数、文档覆盖率等)。分析器先发现文件级别的问题 ( 如在特定位置发现反模式 ) ,并进一步发现代码库级别的问题 ( 如发现有些依赖项没有安装 ) 。DeepSource Autofix 会为检测到的问题提出修复建议,并创建一个修复的拉取请求。

https://deepsource.io

关键特性

单个文件配置;

对拉取请求进行质量检查;问题频谱;

维护活跃度分析器;

可以详细了解每一个问题;

跟踪代码指标;

定制分析,可以忽略掉一些问题;

分析器可以为经常发生的问题提出修复建议,如果允许的话,它们还可以创建修复过的拉取请求;

对每个代码提交和拉取请求进行 Black、YAPF、Go fmt 等代码格式化。不需要进行 CI 设置。

缺点

不支持 PHP。

支持的语言

Python、JavaScript、Go、Ruby、Java、Docker、SQL、Terraform、Shell,以及 TestIdentify 和修复 bug 风险、提交代码中的反模式、性能问题和安全缺陷。

定价

开源项目、学生和非营利组织可以免费使用。付费用户从 12 美元 / 月起算。

3SonarQube

SonarQube 是一种很流行的静态分析工具,用于持续检查代码库的代码质量和安全性,并在代码评审期间指导开发团队。SonarQube 可与 CI/CD 集成,进行自动化代码检查。它还提供了质量管理工具帮你主动纠正错误:IDE 集成、Jenkins 集成和代码评审工具。

https://www.sonarqube.org

关键特性

多语言支持;

安全性分析;

发布质量代码;

可维护性;

可以识别蹊跷的问题。

缺点

并不是每个 IDE 都支持 SonarQube;

不能选择忽略团队不需要去修复的问题。

支持的语言

25 种以上的编程语言,包括 Java、C#、JavaScript、TypeScript、C/C++、COBOL 及其他。

定价

社区版是免费和开源的。商业版起步价为 120 欧元。

4Codacy

Codacy()是一个静态分析工具,可以帮助开发人员处理技术债务并提高代码质量。Codacy 监控每一次代码提交和 PR 的代码质量。你可以用它来加强代码质量标准,加强安全实践,并节省代码评审时间。

https://www.codacy.com

关键特性

代码评审自动化;

代码质量分析;

安全代码分析;

集群安装 / 多个实例。

缺点

缺乏与其他 SaaS 服务集成 ( Sonatype、Blackduck、AWS API 网关的 API QOS 指标或 UI/E2E SaaS 测试服务 ) 的能力;

无法加密项目信息或限制对源代码的访问;

社区相对较小。

支持的语言

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

定价

对开源免费,付费用户起步价为 15 美元 / 月。

5DeepScan

DeepScan 是一个支持 JavaScript、TypeScript、React 和 Vue.js 的静态分析工具。你可以使用 DeepScan 来查找部分运行时错误和质量问题,而不只是编码风格问题。将 DeepScan 与你的 GitHub 代码库集成起来,以此来发现项目的质量问题。

https://deepscan.io

关键特性

缺陷跟踪;

自动化构建;

代码评审;

协作;

持续集成。

缺点

有限的语言支持。

支持的语言

JavaScript、TypeScript、React 和 Vue.js。

定价

对开源免费,付费用户起步价为 9 美元 / 月。

6Embold

Embold 是一个通用的静态分析器,可以帮助开发人员在关键代码问题成为障碍之前把它们找出来。它是一个有效诊断、转换和维护应用程序的得力工具。它集成了人工智能和机器学习技术,可以找出一级问题,提供最佳解决方案,并在必要时重构应用程序。你可以在已有的 DevOps 技术栈中使用它,可以在内部使用,也可以在私有云和公共云中使用它。

https://embold.io

关键特性

直观的 UI;

更深入和更快的代码检查;

智能地提高性能;

无缝集成。

缺点

价格相对较高。

支持的语言

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

定价

对开源免费,付费用户每月 10 欧元。

7Veracode

Veracode 是一种流行的静态代码分析工具。它只针对安全问题,跨管道执行代码检查,以便发现安全漏洞,并将 IDE 扫描、管道扫描和策略扫描作为其服务的一部分。它会创建用于审计的代码评估,作为程序的一部分。

https://www.veracode.com/products/binary-static-analysis-sast

关键特性

编码时的安全性问题反馈;

在管道中快速获得结果;

令人满意的审计能力;

不需要调整就可以获得高精确度;

专注于修复问题。

缺点

不支持自定义扫描规则;

用户体验不是很好。

支持的语言

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

定价

基于项目的规模定价,你可以在官网上提交表单来获取报价。

8Reshift

Reshift 是一个基于 SaaS 的软件平台,它无缝地集成到软件开发工作流中,让企业可以持续地部署安全的软件产品,而不会减慢它们的速度。Reshift 减少了查找和修复漏洞、识别数据泄露的潜在风险以及帮助软件公司实现合规性和法规要求的成本和时间。

https://www.reshiftsecurity.com

关键特性

快速配置;

安全性扫描;

安全性职责。

缺点

不支持 Java 以外的语言。

支持的语言

Java

定价

对开源免费,付费用户起步价是每月 99 美元。

原文链接

https://dzone.com/articles/top-7-static-code-analysis-tools

今日好文推荐

QCon 全球软件开发大会【上海站】

PPT 资料上线

python静态分析工具_7 个顶级静态代码分析工具相关推荐

  1. 静态代码分析工具列表分析---代码分析工具列表(30款工具)

    本文是一个静态代码分析工具的清单,共有30个工具.包括4个.NET工具.2个Ada工具.7个C++工具.4个Java工具.2个JavaScript工具.1个Opa工具.2个Packaging工具.3个 ...

  2. 静态代码分析工具清单:开源篇(各语言)

    本文是一个静态代码分析工具的清单,共有26个工具.包括4个.NET工具.2个Ada工具.7个C++工具.4个Java工具.2个JavaScript工具.1个Opa工具.2个Packaging工具.3个 ...

  3. 静态代码分析工具清单:开源篇

    http://hao.jobbole.com/static_code_analysis_tool_list_opensource_lang/?utm_source=blog.jobbole.com&a ...

  4. 静态代码分析工具汇总

    静态代码扫描,借用一段网上的原文解释一下(这里叫静态检查):"静态测试包括代码检查.静态结构分析.代码质量度量等.它可以由人工进行,充分发挥人的逻辑思维优势,也可以借助软件工具自动进行.代码 ...

  5. 静态代码分析工具列表--常用静态代码分析工具介绍

    代码检测简介 本文是一个静态代码分析工具的清单,但是为公司产品需要付费使用.共有37个公司,有些公司包含多个工具.其中27个公司有多语言 工具,1个公司为PHP工具.2个公司为.NET工具.1个公司为 ...

  6. PVS-Studio C/C++/C++11 静态代码分析工具

    PVS-Studio C/C++/C++11 静态代码分析工具 静态代码分析仪是一种检测代码缺陷.分析对比 商业代码的工具,它分析源代码和它生成的目标 文件,但并不实际运行源代码.应用于对安全性. 稳 ...

  7. 如何分析android的OOM,与java静态代码分析工具

    2019独角兽企业重金招聘Python工程师标准>>> 用MAT分析OOM 很多OOM看似发生在bitmap 分配得时候,但它一般不是rootcause.根本原因都在于本应该自动释放 ...

  8. 静态代码分析工具简介

    静态代码分析工具简介 什么是静态代码分析 静态代码分析是指无需运行被测代码,仅通过分析或检查源程序的语法.结构.过程.接口等来检查程序的正确性,找出代码隐藏的错误和缺陷,如参数不匹配,有歧义的嵌套语句 ...

  9. 【翻译】Google在构建静态代码分析工具方面的经验教训

    软件bug耗费开发者和软件公司大量的时间和金钱. 以2014年为例,被广泛使用的SSL协议实现中的一个("goto fail")bug导致可接受无效的SSL证书,另外一个与日期格式 ...

  10. 软文推荐:常用 Java 静态代码分析工具的分析与比较

    http://www.uml.org.cn/j2ee/201107114.asp 常用 Java 静态代码分析工具的分析与比较 作者:赵卓 , 发布于2011-07-11 , IBM 简介: 本文首先 ...

最新文章

  1. flume+elasticsearch日志收集分析
  2. Java生鲜电商平台-B2B生鲜的互联网思维
  3. WPF 程序最大化,窗口,最小化
  4. PowerShell 操作 Azure Blob Storage
  5. mysql酒店客房管理系统的设计_酒店客房信息管理系统的设计实现(MySQL)
  6. Delphi学习视频02
  7. matlab猜数字游戏程序,matlab 猜数字小游戏
  8. 航班预订系统测试用例
  9. 祝贺软件工程成了国家一级学科
  10. 制作影像(dmg)文件详细步骤
  11. VS-code输入感叹号没有提示
  12. 学好Python的优秀资源推荐
  13. jQuery实现轮播图(fadeIn,siblings,fadeOut方法实现)
  14. php运维知识,分享一些linux运维的基础知识
  15. GitHub快速学习-三
  16. shadowplay要下载java,BBC 100件藏品中的世界史083:Shadow puppet of Bima皮影戏字符段
  17. LBP特征学习及实现
  18. OSChina 周五乱弹 ——妹子喜欢我的幻觉封印怎么破除
  19. CNN去马赛克代码阅读笔记
  20. Young For You - 歌词

热门文章

  1. 会声会影 html5,一文了解会声会影哪个版本比较好用
  2. 麦克风的计算机英语词汇,[转帖]麦克风计划:神舟五号载人飞船词汇
  3. matlab在图像两点连线,matlab画图,画出任意两点间的连线图,请高人帮忙呀,谢谢!谢谢!...
  4. 《信号与系统》(吴京)部分课后习题答案与解析——第四章(PART5)(系统分析、传输与滤波)
  5. node 简繁体转换_简体繁体转换
  6. 《概率论与数理统计》速成-练习题答案
  7. Python爬取美女图片 爬虫基础
  8. wegame安装包文件MD5校验失败解决方案
  9. linux ps3手柄驱动,ps3 DS3 手柄驱动
  10. Visio 2019连接MySQL数据库反向工程作数据库模型图