绿色环保又节能,软件开发居然也可以

作者:亿网科技  来源:亿网科技  发布时间:2022-12-28

85871669306977097.jpg

随着气候变化成为一个关键的全球问题,软件开发人员和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工具,具有独特的设计理念。通过独立分析每个节点,然后生成该节点的简写供其他节点使用,可以有效地进行整个程序的数据流分析。


这种称为“差异分析”的能力比增量分析更进了一步。它不仅允许几乎无限地并行化分析作业,而且当系统的其余部分被隔离时,还可以分析单个新节点或更改的节点。


差异分析是对一组明确更改的文件或新文件执行的增量分析,它不保留以前运行的分析数据,重新分析代码可能很少。


换句话说,作为每个开发人员提交或拉取请求的一部分,差异分析使我们能够以最短的时间和最少的精力对新的和更改的代码运行静态分析或SAST检查。它具有CI的所有优点,但见效更快,能耗更低。它包含了静态分析或SAST检测CI/CD管道的所有优点,但更具可持续性。