提前锁票 InfoQ 最具价值感的视频栏目 | InfoQ 大咖说 了解详情
写点什么

7 个顶级静态代码分析工具

2021 年 2 月 19 日

7个顶级静态代码分析工具

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

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


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

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

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

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

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

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


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

DeepSource


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 美元 / 月起算。

SonarQube


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


https://www.sonarqube.org


关键特性


  • 多语言支持;

  • 安全性分析;

  • 发布质量代码;

  • 可维护性;

  • 可以识别蹊跷的问题。


缺点


  • 并不是每个 IDE 都支持 SonarQube;

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


支持的语言


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


定价


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

Codacy


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 美元 / 月。

DeepScan


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


https://deepscan.io


关键特性


  • 缺陷跟踪;

  • 自动化构建;

  • 代码评审;

  • 协作;

  • 持续集成。


缺点


有限的语言支持。


支持的语言


JavaScript、TypeScript、React 和 Vue.js。


定价


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

Embold


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


https://embold.io


关键特性


  • 直观的 UI;

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

  • 智能地提高性能;

  • 无缝集成。


缺点


价格相对较高。


支持的语言


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


定价


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

Veracode


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,等等。


定价


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

Reshift


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


https://www.reshiftsecurity.com


关键特性


  • 快速配置;

  • 安全性扫描;

  • 安全性职责。


缺点


不支持 Java 以外的语言。


支持的语言


Java


定价


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


原文链接:


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

2021 年 2 月 19 日 09:011820

评论

发布
暂无评论
发现更多内容

蔡超:这八点架构师感悟,真的很干货 | 大道至简

李忠良

28天写作

看懂2020年智能浪潮,我们从百度和谷歌的AI足迹出发

脑极体

基础不牢,地动山摇;自学进大厂的第18天!

Java架构师迁哥

从烟酒茶说系统化学习

张老蔫

28天写作

Spring Boot 中使用拦截器

武哥聊编程

Java springboot SpringBoot 2 拦截器 28天写作

Windows DHCP最佳实践(三)

BigYoung

windows Windows Server 2012 R2 DHCP

观看辽篮比赛,思考团队管理——关于团队的灵魂拷问,你中了几个?

伯薇

团队管理 团队建设 团队 赋能 激励

企业短信服务质量与用户体验如何监控?短信监测技术震撼来袭

BonreeAPM

短信 数据监测

数据倾斜?Spark 3.0 AQE专治各种不服

王知无

大数据 spark

HDFS中的常用压缩算法及区别

王知无

大数据 hdfs

重学JS | Web Workers让JS存在多线程环境

梁龙先森

编程 前端 28天写作

LKA是如何实现的(28天写作 Day13/28)

mtfelix

自动驾驶 28天写作

【盘点2020】机房网络性能哪家强?年度冠军揭晓

BonreeAPM

机房 评测

直播预告丨NLP领域的2020年大事记及2021展望

京东科技开发者

机器学习 AI nlp

JVM的内存分代,这篇文章帮你理一理

Java鱼仔

Java 面试 JVM

技术分享 | 漫谈音视频中的拥塞控制

拍乐云Pano

1000公里续航动力电池背后的迷雾与真相

脑极体

京东架构师分享的 Redis学习笔记手抄版;

Java架构师迁哥

永续合约APP系统软件开发

开發I852946OIIO

系统开发

休息一天

Tango

日更挑战

大数据知识专栏 - MapReduce的Combiner实现shuffle调优

小马哥

大数据 hadoop mapreduce 日更挑战

【我给面试官画饼】软件测试理论基础、质量保证常见面试题——会被面试官赶出来吗?

程序员一凡

面试 软件测试 测试工程师 质量保证

HTML(四)——建立超链接

程序员的时光

html 程序员 28天写作

基于Prometheus+Grafana打造企业级Flink监控系统

王知无

大数据 flink 监控

深入解析vue响应式原理

互联网架构师小马

Vue 响应式

程序员生产环境-软件篇

ITCamel

效率工具 工作效率 程序员软件

大数据知识专栏 -MapReduce 自定义排序技术

小马哥

大数据 hadoop mapreduce 日更挑战

管理者掌握这5个提问技巧,秒变提问高手

一笑

团队管理 管理 团队建设 提问的艺术 28天写作

Orleans 知多少 | .NET分布式框架

圣杰

dotnet actor orleans

Soul网关源码阅读(八)路由匹配初探

Java 源码阅读 网关

Android面试(二)

我就感觉到快

打造 VUCA 时代的 10 倍速 IT 团队

打造 VUCA 时代的 10 倍速 IT 团队

7个顶级静态代码分析工具-InfoQ