拥有CI/CD的所有益处,却更绿色
来源:perforce 作者:龙智 发布时间:2022-02-14 09:50
随着气候变化成为一个关键的全球问题,软件开发人员和DevOps专家也开始反思自己的行业,以帮助减少行业对气候产生的影响。我们今天的课题是找出在静态分析工具开发方面可以为环保做些什么。
CI/CD对软件开发的好处
在过去几年内,软件开发的一个主要改进是引入持续集成(CI)和持续部署/交付(CD),以及DevOps自动化运动。
通过使用CI/CD,开发人员可以在开发周期内尽快了解被引入代码库的构建问题——这就是通常所说的 “左移”。这种做法还能确保对团队其他成员的影响达到最小,因为当它们还没有被提交到主/主分支时,违规的修改可以很容易地被撤消。
在质量保证(QA)团队和安全团队或首席安全官(CSO)的鼓励下,DevOps专业人士经常主张将静态分析或SAST(静态分析安全测试)工具作为CI/CD管道的一部分。这确保了用户不仅能从编译器构建问题的早期检测和修复中获益,而且还能从添加到代码库中新的安全漏洞、可靠性问题或违反标准的行为中获益。
然而,CI/CD在处理器时间和能源消耗方面是有成本的。CI/CD过程所消耗的能量很大——特别是当你考虑到这些CI/CD工作最好是为每个开发人员的提交或拉取需求而运行时,这可能意味着每个开发人员每天要进行几个项目的构建。
如果你随后在这些过程中加入质量和安全检查,在最好的情况下,这复杂的运行会涉及全程序、控制和数据流静态分析引擎,将构建时间以线性方式增加(通常是标准编译和链接时间的2到10倍),那么这些工作所消耗的机器资源和能量也会按比例增加。很快你就会发现这里存在可扩展性问题,还有一个更重要的能源使用问题。
更环保的静态分析
多年来,静态分析工具的开发者们一直在孜孜不倦地提高性能,经常在性能上取得小幅提升,以抵消与扫描新类别缺陷或对某些元素进行更深入扫描以提高准确性相关的偶尔的性能下降。
但从根本上说,他们正在处理一个越来越大的问题空间,这通常被称为 “路径爆炸”——象征性地执行所有可行的程序路径。
许多静态分析工具使用的一个重要的效率改进是使用增量分析。
增量分析是指只分析基于依赖树而被改变或增加的代码。在最好的情况下,增量分析意味着只有少数文件被重新分析,从而显著减少时间、资源和能源需求。
然而,在最坏的情况下,这将涉及低效的架构系统,所有的文件都需要被重新分析的情况下,增量分析就可能等同于全面分析。此外,增量分析还要求保留以前运行的分析数据,这并不总是可行的。
Klocwork如何支持绿色软件的开发
Klocwork是一种静态分析和SAST工具,它的设计方式与众不同,通过独立分析每个节点,然后生成节点的“shorthand”表示形式以供依赖于它们的其他节点使用,从而有效地执行整个程序的数据流分析。
这种被称为 “差异分析”的能力比增量分析更进一步,不仅允许分析工作几乎无限地并行化,而且如果整个程序被分析为一个整体,它还可以将单个新节点或已更改节点与系统的其余部分隔离开来分析。
差异分析是针对一组明确的变更文件和新文件所执行的增量分析,不保留先前的运行分析数据,并且尽可能地减少重新分析的代码。
换句话说,差异分析使我们在尽可能短的时间内,使用尽可能少的能量,在每一个开发人员提交或拉取需求时,对新的或更改的代码运行静态分析或SAST检查。它拥有CI的所有优点,却能做到结果更快、能耗更低;它包含静态分析或SAST检查的CI/CD管道的所有优点,却更具有可持续性。
开始使用Klocwork开发绿色软件
亲自体验Klocwork如何帮助你为C、C++、C#、Java、JavaScript和Python开发高质量、绿色的软件。联系Klockwork中国授权合作伙伴龙智,申请免费试用。