随着气候变化成为一个关键的全球问题,软件开发人员和 DevOps 专家也开始反思他们自己的行业,以帮助减少该行业对气候的影响。在这个大背景下,静态分析工具可以我们提供怎样的帮助呢?
CI/CD 对软件开发的好处
在过去几年中,软件开发的主要改进之一是引入了持续集成 (CI) 和持续部署/交付 (CD),以及 DevOps 自动化。
通过使用 CI/CD,开发人员可以在开发周期内尽快了解,已引入代码库的构建问题——这通常称为“左移”。这种做法还可以确保团队其他成员受到的影响最小,因为违规更改可以很容易地撤消,因为它们尚未提交到 Master/Main 分支。
在质量保证 (QA) 团队和安全团队或首席安全官 (CSO) 的鼓励下,DevOps 专业人员经常提倡,将静态分析或 SAST(静态分析安全测试)工具作为 CI/CD 管道的一部分。这可确保用户不仅可以从编译器构建问题的早期检测和修复中受益,而且还可以从添加到代码库中的新安全漏洞、可靠性问题或违反编码规范等行为中受益。
但是, CI/CD在处理器时间和能源消耗方面存在不菲的成本。CI/CD 流程消耗的能量非常大——尤其是当您考虑到这些 CI/CD 作业为每个开发人员的提交或拉取请求响应时,这可能意味着每个开发人员每天要构建多个项目。
如果您随后在这些流程中添加质量或安全检查,在最好的情况下,这将运行复杂的全程序、控制和数据流静态分析引擎,导致构建时间线性递增(通常是标准的 2 倍到 10 倍)编译和链接时间),那么每个作业消耗的机器资源和能源量也会成比例地增加。
更环保的静态分析
多年来,静态分析工具开发人员一直在精益求精地提高工具性能,这通常会在性能上取得小幅提升,以抵消扫描新类别缺陷或进行更深入扫描以提高准确性所导致的偶尔性能下降。
但从根本上说,他们正在处理一个越来越大的问题空间,这通常被称为“路径爆炸”。
许多静态分析工具使用的一项显着效率改进方案是增量分析。
增量分析意味着只分析基于依赖树更改或添加的代码。在最好的情况下,增量分析意味着只有少数文件会被重新分析,从而显著减少时间、资源和能源消耗。
然而,在最坏的情况下,增量分析可能等同于全面分析。此外,增量分析还要求保留以前运行的分析数据,这并不总是可行的。
Klocwork 如何支持绿色软件开发
Klocwork是一种静态分析和SAST工具,其具备独特的设计理念,通过独立分析每个节点,然后生成节点的“速记”,供其他节点使用,从而使其能够有效地执行整个程序数据流分析。
这种被称为“差异分析”的能力,比增量分析更进了一步。它不仅允许分析作业可以几乎无限地并行化,而且还可以在系统其余部分被隔离的情况下,分析单个新节点或变更节点。
差异分析是对一组明确的已更改文件或新文件执行的增量分析,不保留先前的运行分析数据,并且重新分析的代码可能最少。
换句话说,作为每个开发人员提交或拉取请求的一部分,差异分析使我们能够在尽可能短的时间内并使用尽可能少的能量,对新的和变更的代码运行静态分析或 SAST 检查。其具备CI 的所有好处,但结果更快,能耗更低。其包含静态分析或 SAST 检查的 CI/CD 管道的所有好处,但更具备可持续性。
开始使用 Klocwork 开发绿色软件
亲自了解Klocwork如何帮助您为 C、C++、C#、Java、JavaScript 和 Python 开发高质量的绿色软件。免费试用获取私信北汇信息即可~
全部0条评论
快来发表一下你的评论吧 !