写点什么

代码质量与安全 | 免费的静态分析工具好吗?

  • 2023-03-20
    上海
  • 本文字数:2912 字

    阅读完需:约 10 分钟

代码质量与安全 | 免费的静态分析工具好吗?


在评估静态分析软件时,有许多选项可供选择:付费版本、免费或社区版本,以及任何人都可以查看、使用和修改的开源软件。


当在探索这些选择时,免费的静态分析工具可能听起来很划算,但它们真的能满足您的编程需求吗?

本篇文章将讨论免费静态分析工具的优点和局限性,为您提供静态分析工具的选型参考。 


什么是免费的静态分析工具?


静态分析是一种排除错误的方法,它在不执行程序的情况下自动检查源代码。通过这种方式,开发人员可以获得洞察能力,以帮助他们确保代码库兼容、安全、可靠。静态分析在软件开发生命周期(SDLC)的实施(编码)阶段、集成/构建和测试阶段执行,把检测和修复左移到生命周期早期,来确保代码安全。


在检查源代码的安全漏洞、质量和性能问题,和/或不符合标准等方面,免费的静态分析工具几乎是没有成本的。


静态代码分析、静态应用程序安全测试(SAST)和静态应用程序质量测试(SAQT)工具提供了一种方法,可以根据一组编码规则来分析项目的代码库,以帮助强制遵守各种编码标准。静态分析工具通过扫描项目的代码库来识别潜在的漏洞、bug 和不良编码实践。好的静态分析工具可以准确无误地做到这一点,同时在作为持续集成循环的一部分运行时,分析速度也足够地快。


开发人员可以使用好几种不同的的静态分析工具,这具体取决于他们的偏好、目标和业务需求,但并不是所有的静态分析工具开发方式都是相同的。了解工具的工作原理非常重要,因为这样才能确定哪种工具更适合您。例如,如果您所在的行业受到编码标准的限制,那么您选择的静态分析工具应该支持这些标准。


免费的静态分析工具可能会提供编程语言支持、编码标准支持或最佳实践功能,但也可能不提供。免费的静态分析工具范围很广,从类似 lint-like 的简单工具到与先进自动化代码检查平台捆绑的 bug 检测工具,都囊括其中。


在评估潜在的静态分析解决方案时,请考虑您的需求,并权衡开源/免费静态分析工具与商业工具的利弊。


免费的静态分析工具有什么优点?


免费的静态分析工具对于那些想要探索其工作原理,以及如何在开发过程中实施并分配给其他成员的开发人员来说,还是非常有用的。


成本效益


这一点显而易见:免费的静态分析工具不花一分钱,开源工具比商业解决方案(至少在最初)更具成本效益。这个优势让您在构建更强大的开发流水线时,能够腾出资金分配给其他地方。免费的工具也让您有时间思考,在扩大规模时是否需要专有解决方案的额外支持,同时也能分析您的代码,修复安全和质量问题。


敏捷性和灵活性


开发人员可以通过使用开源/免费软件,自由地发挥创意,并且根据自己的业务需要,测试他们对代码做的所有修改。免费的软件使您可以自由地了解程序中复杂的细节,以及如何在整个企业中分配它,而不必在做好准备前就投入任何一家公司或软件套件。如果您可以访问源代码,那么这就像使用开源软件一样,您能够测试这个工具的功能,甚至可以对产品进行逆向工程——所有的这些您都可以自由安排时间。


社区


一些由社区驱动的免费/开源静态分析工具,创造了一个鼓励创造性贡献和协作的社交环境。您可以轻松地与同行互动并向他们学习,如果您想壮大团队,这里还能找到顶尖人才。不仅如此,社区让每个人都可以看到工具的新更改和实施,您还可以与其他开发人员讨论这些更改如何影响软件的未来。从某些方面来说,由于多个用户一直在查看代码,该工具的社区帮助其保持了代码安全(但从另一个方面来说,免费软件会带来更大的安全风险,因为任何人都可以更新代码)。

免费静态分析工具的局限性是什么?


开源和免费的静态分析工具的局限性在于,它们往往会伴随着更大的开发风险,而且根据您所需的静态分析技术,它们不一定适合您的项目。因为静态分析的一些技术会提供不同层面的分析结果。


例如,lint 工具是一个基本的静态分析器,它检查源代码是否存在编程和风格错误——这可能完全满足了您的需求,提高了代码质量。但如果您需要更复杂的分析和指标,例如圈复杂性(cyclomatic complexity,代码复杂度的衡量标准),您就需要一个更高级的静态分析解决方案。


免费的静态分析工具可能带来的限制还包括以下方面:


可靠的支持


使用免费工具,很多事情都只能自力更生,因为缺乏用户友好的界面,使得一些应用程序难以设置和使用。开源工具可能提供社区支持,也可能快速解决问题,但您无法得到特定支持团队(与您签订了服务等级协议(SLA)的团队)的保证。当有新的修复或版本时,您还需要负责手动升级,而无法获得经过专属软件团队彻查和处理的自动/易于下载的产品发布和升级。


安全风险


对于免费的静态分析工具来说,安全性可能不是原始开发人员的首要考虑因素,因为他们通常把更多的精力放在商业的工具上。开源静态分析工具有一把双刃剑,在多个开发人员监控源代码并密切关注漏洞的同时,不良行为者也可以潜入并修改代码以达到自己的恶意目的。专有的 SAST 工具(如Klocwork)遵循安全编码实践,并支持 CWE,OWASP,CERT 等安全标准,能够尽早发现和修复安全问题,并证明代码符合这些标准。


代码质量、可靠性和合规性


当涉及到编码标准时,许多免费和开源的静态分析工具提供的功能很有限。


例如,许多开源的静态分析软件工具仅限于提供代码的结构分析。如果没有高级数据流分析(即抽象解释、符号逻辑和定理证明等运行时模拟技术),你将无法找到那些违反了重要的安全和防护标准规则的实例。

选择一个支持现有编码标准的静态分析工具,以及为您的企业定制自己的标准,这才是关键。静态分析工具(如Helix QAC)可自动监控标准合规性,从而减少记录所需的时间。有效的静态分析解决方案将快速、彻底地评估代码复杂性,并检查是否符合编码标准,如 MISRA、C/C++等,然后生成证明合规性的支持文档,并保持代码的高质量。


许可证


免费的方案通常会限制企业中分发的许可证数量,或是限制代码行数。当您只想尝试一下这些工具,或者只有少数开发人员需要试用,亦或是代码量有限的时候,免费工具是不错的。但随着业务的增长,您也必须扩展工具才能满足新的需求。商业的静态分析解决方案可以针对您的情况提供适合的许可选项。商业公司能够为您提供支持,轻松添加许可证和用户友好的特性和功能, 从而实现快速稳定的扩展。


为什么选择 Perforce 静态分析工具?


免费的静态分析工具可以工作,但它们可能无法提供满足您编程要求的所有特性、功能和分析级别。

Perforce 静态分析解决方案已深受客户信赖超 30 年,为各行各业的关键任务项目团队提供了确切精准的结果。

Helix QACKlocwork已通过认证,符合关键的功能安全标准,如 ISO 26262、IEC 61508、EN 50128、IEC 62304 等,也覆盖了重要的编码标准,并且它们提供的误报和漏报更少。


作者简介


斯图尔特·福斯特(Stuart Foster)

Klocwork 和 Helix QAC 产品经理,Perforce


斯图尔特·福斯特在移动和软件开发方面拥有超过 10 年的丰富经验,负责管理消费应用和企业软件的产品开发。目前,他负责管理 Klocwork 和 Helix QAC——Perforce 的代码质量管理解决方案。他致力于开发符合客户业务需求的产品、特性和功能,并帮助开发人员生成安全、可靠、无缺陷的代码。斯图尔特拥有 Carleton 大学的信息技术、交互式多媒体和设计学士学位,以及 Algonquin 应用艺术与技术学院的多媒体设计高级文凭。


文章来源:http://bit.ly/3lgqQrx

用户头像

还未添加个人签名 2021-05-18 加入

分享DevSecOps解决方案最新动态,帮助您学习与使用Atlassian, Perforce, Whitesource, Cloudbees及龙智自研产品,实现软件研发的高度协同与自动化,提高交付效率与质量,并确保开发过程可追溯、可度量。

评论

发布
暂无评论
代码质量与安全 | 免费的静态分析工具好吗?_SAST_龙智—DevSecOps解决方案_InfoQ写作社区