在软件开发中,你的代码是你的代言人。因此,编写简洁但可读和高性能的代码至关重要。当然,总会有一些奇怪的例外,但总的来说,安全总比后悔好。因此,拥有良好的代码质量工具在你的开发工具箱中始终是个好主意,可以帮助你管理技术债务,通过编写干净且可维护的源代码。本文将尝试列出一些值得考虑的有趣选项。虽然此列表基于我的主观意见,但我希望你觉得它有用!
DeepSource 是一种静态分析工具,它通过测试智能地运行您的代码,帮助您找出关键领域的问题,例如性能、反模式、错误风险、安全漏洞、样式和文档问题。
特征:
使用配置文件生成器进行简单配置。
宽。
持续分析在每个 PR 上运行。
更少的误报。
缺点:
目前只能作为 SaaS Web 应用程序访问;CLI 仍在开发中。
链接: https://deepsource.io/pricing/
2. Embold
Embold 允许您对软件项目运行静态分析,并为您提供代码质量报告,其中包括检测到的问题的热图,这有助于您可视化导致臭代码的确切组件。它还吹嘘自己是支持 AI 的,为您提供解决静态分析器发现的问题的建议,几乎就像代码的自动更正一样。它支持最常见的持续发展战略;您可以将其添加到 GitHub/Bitbucket 存储库,也可以在 CI/CD 管道中启用它。它对开源项目免费提供。
特征:
启用 AI 提供有关重构代码的建议。
简单的开发运营集成。
缺点:
缺乏对多语言项目的支持。
对基于代码的计费行的混淆限制。
3. SonarQube
另一个需要考虑的源代码分析工具 SonarQube 为程序员提供了一个单一平台来分析超过 27 种不同编程语言的代码,并帮助您提高性能并检测安全漏洞。它由SonarSource的团队构建,免费和开源,用于社区添加。SonarQube 可以添加到您的 CI/CD 管道中,也可以与您选择的存储库托管平台集成,帮助您执行连续的代码分析。
特征:
多语言支持。
执行安全分析。
检测棘手的问题。
开源。
缺点:
当耗时的扫描完成时,它不会通知用户。
缺乏与Jira和GitHub的更紧密的集成。
缺少忽略问题的任何方法。
链接: https://www.sonarqube.org/downloads/
4. Veracode
一套工具可让您执行代码审查、自动化测试、静态分析和必要的补救步骤,以提高软件的性能。Veracode 作为安全解决方案销售,可检测并报告程序中的漏洞,同时提供静态分析 (SAST)、软件组合分析 (SCA)、交互式分析 (IAST) 和动态分析 (DAST) 功能。
特征:
不同测试方法(SAST、DAST、IAST 和 SCA)的集中视图。
提供渗透测试即服务。
安全咨询也作为一项服务提供。
缺点:
耗时的扫描。
缺少 Web 应用程序界面。
链接: https://info.veracode.com/request-quote.html
5. Code Climate
Code Climate的代码质量工具执行自动代码审查,在特定代码行上留下注释;它还分析测试覆盖率,并提供项目结构中问题的可视化表示。它支持 11 种语言,还附带 IDE 扩展,可在本地对代码运行分析,并可与 Jira/Trello/GitHub 集成,为检测到的问题创建工单。
特征:
与 GitHub 的集成留下了对 PR 的评论。
带有浏览器扩展。
提供代码质量趋势的图表可视化效果。
缺点:
缺乏对代码库问题进行分类。
链接: https://codeclimate.com/quality/pricing/
6. Codacy
Codacy是一个代码审查自动化工具,支持30多种不同的编程语言。它还带有自托管产品。它使开发人员能够根据分析的代码选择规则集。UI 提供可视化报告,帮助团队经理了解重复违反代码质量的原因。它还与开发团队使用的其他应用程序(如Slack和GitHub)集成。
特征:
提供快速见解。
富有洞察力的仪表板。
缺点:
复杂的配置设置。
大量误报。
链接: https://www.codacy.com/pricing
7. Codebeat
Codebeat 支持多种编程语言,并且在过去几年中一直在持续开发。它不执行任何安全检查。
特征:
还对移动应用程序执行检查。
支持 Apple 开发的 Swift 和 Objective-C。
检测代码重复。
缺点:
缺乏安全检查。
必须将定义添加到 CI/CD 配置中。
链接: https://codebeat.co/pricing
8. LGTM
LGTM 是一款简单、易于设置和维护的代码质量和安全分析工具,是一款面向开源项目的免费产品和面向大型组织的自托管企业版,让开发人员兴奋不已的产品。
特征:
检测代码贡献中的零日漏洞。
与 IDE 和 git 存储库很好地集成。
基于行业标准的警报,并提供可操作的建议。