随着气候变化成为一个关键的全球问题,软件开发人员和 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 开发高质量的绿色软件。免费试用获取私信北汇信息即可~

注:图片源自Perforce

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

  1. 浅析数据中心布线系统的绿色环保与节能

                                   前言 <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com ...

  2. 祝贺 弓叶科技荣获中国节能环保产品、绿色环保推广产品认证

    祝贺广东弓叶科技有限公司产品荣获由中国产品质量安全监督中心颁发的<中国节能环保产品>.<绿色环保推广产品>认证.该认证代表弓叶科技的产品获得中国产品质量安全监督中心的支持与肯定 ...

  3. 我花了10天学习全自动软件开发,结果居然.....

    近日,专注中国IT人才培育的北大青鸟遴选出几十位优秀学员来到飞算科技,系统的学习飞算Soflu全自动软件工程平台. 第一期学员合照 北大青鸟始于1999年,专注IT职业教育20余年,是中国IT人才的重 ...

  4. 嵌入式组态软件HMImaker(绿色版人机界面组态软件)

    嵌入式组态软件-HMImaker,是一款人机界面软件,基于ARM架构的嵌入式工控机控制系统开发的嵌入式软件,嵌入式系统具有单片机协议,modbus通讯协议,I2C通讯协议,西门子,三菱,台达,欧姆龙等 ...

  5. 本科毕业论文-软件开发类-《基于Android端开关控制系统的设计与实现》-论文模板

    目  录 前言 一.任务书 二.目录 三.论文正文 摘要 ABSTRACT 1.引言 2.系统开发环境 2.1可行性分析 2.2 开发工具介绍 3.需求分析 3.1 功能需求分析 3.2 数据流程图 ...

  6. java-php-python-绿色生活基于PS、DW的绿色环保宣传网站计算机毕业设计

    java-php-python-绿色生活基于PS.DW的绿色环保宣传网站计算机毕业设计 java-php-python-绿色生活基于PS.DW的绿色环保宣传网站计算机毕业设计 本源码技术栈: 项目架构 ...

  7. 基于ARM嵌入式工控机主板的人机界面组态软件开发方案

    本文介绍基于ARM单片机的嵌入式控制系统的人机界面组态软件开发方案,嵌入式系统具有RS232,RS485串口,单片机TTL电平串口,I2C通讯接口,以太网接口,无线通讯,U盘存储,语音播放等功能.可以 ...

  8. java计算机毕业设计绿色生活基于PS、DW的绿色环保宣传网站源程序+mysql+系统+lw文档+远程调试

    java计算机毕业设计绿色生活基于PS.DW的绿色环保宣传网站源程序+mysql+系统+lw文档+远程调试 java计算机毕业设计绿色生活基于PS.DW的绿色环保宣传网站源程序+mysql+系统+lw ...

  9. java计算机毕业设计绿色生活基于PS、DW的绿色环保宣传网站源码+数据库+系统+lw文档+mybatis+运行部署

    java计算机毕业设计绿色生活基于PS.DW的绿色环保宣传网站源码+数据库+系统+lw文档+mybatis+运行部署 java计算机毕业设计绿色生活基于PS.DW的绿色环保宣传网站源码+数据库+系统+ ...

最新文章

  1. Docker核心技术之镜像
  2. 爬取知乎“凡尔赛语录”话题下的所有回答,我知道点开看你的很帅气,但还是没我帅
  3. Python 三元条件判断表达式(and or/if else)
  4. dao传递类参数 mybatis_MyBatis DAO层传递参数到mapping.xml 几种方式
  5. mysql 字段加comments_Mysql添加注释(comment)(转)
  6. break和continue-continue代码演练
  7. ZOJ 3965 Binary Tree Restoring
  8. mysql怎么实现生日字段前一个小时提醒_MySql学习笔记(二) 索引的设计和使用...
  9. Grinmw.py v0.1.1发布,支持Grin Wallet API V3和Grin Node API V2
  10. ROS学习记录:创建一个工作空间和功能包,完成话题与服务编程
  11. 目标检测中PR曲线和mAP
  12. Unity3D中GPS定位信息及经纬度转换方法
  13. 基础的风光摄影技术控制
  14. mysql有没有开窗函数_mysql实现开窗函数
  15. 特斯拉公布马斯克去年薪酬状况:工资5.6万美元 期权激励超过22亿美元
  16. php如何删除文件夹里的图片,php如何删除文件夹
  17. 提问 未来计算机的发展趋势是什么,计算机今后的发展趋势是什么?
  18. opencv程序十一:鼠标绘图
  19. Toy3D引擎:网页游戏3D化的利器
  20. LoRa技术的行业发展前景如何?

热门文章

  1. 股票量化交易策略:多因子筛选练习
  2. CMD命令大全,你知道的和不知道的都有,非常实用,C++中system的用法 (史上最详细)
  3. getchar()函数
  4. 2021年中国实验分析仪器仪表行业经济运行情况分析:主营收入346.5亿元,同比增涨17.49% [图]
  5. 超声波换能器和超声波传感器的详细区别
  6. ansible(1)---师傅领进门
  7. 简单制作扑克牌和洗牌
  8. 星系局部战争(结构struct,sort排序)
  9. SpringCloud - Oauth2增加短信验证码验证登录
  10. Modelsim10.4安装