隨著氣候變化成為一個關(guān)鍵的全球問題,軟件開發(fā)人員和DevOps 專家也開始反思他們自己的行業(yè),以幫助減少該行業(yè)對氣候的影響。在這個大背景下,靜態(tài)分析工具可以我們提供怎樣的幫助呢?
CI/CD 對軟件開發(fā)的好處
在過去幾年中,軟件開發(fā)的主要改進(jìn)之一是引入了持續(xù)集成(CI) 和持續(xù)部署/交付 (CD),以及 DevOps 自動化。
通過使用CI/CD,開發(fā)人員可以在開發(fā)周期內(nèi)盡快了解,已引入代碼庫的構(gòu)建問題——這通常稱為“左移”。這種做法還可以確保團(tuán)隊(duì)其他成員受到的影響最小,因?yàn)檫`規(guī)更改可以很容易地撤消,因?yàn)樗鼈兩形刺峤坏?Master/Main 分支。
在質(zhì)量保證(QA) 團(tuán)隊(duì)和安全團(tuán)隊(duì)或首席安全官 (CSO) 的鼓勵下,DevOps 專業(yè)人員經(jīng)常提倡,將靜態(tài)分析或 SAST(靜態(tài)分析安全測試)工具作為 CI/CD 管道的一部分。這可確保用戶不僅可以從編譯器構(gòu)建問題的早期檢測和修復(fù)中受益,而且還可以從添加到代碼庫中的新安全漏洞、可靠性問題或違反編碼規(guī)范等行為中受益。
但是,CI/CD在處理器時間和能源消耗方面存在不菲的成本。CI/CD 流程消耗的能量非常大——尤其是當(dāng)您考慮到這些 CI/CD 作業(yè)為每個開發(fā)人員的提交或拉取請求響應(yīng)時,這可能意味著每個開發(fā)人員每天要構(gòu)建多個項(xiàng)目。
如果您隨后在這些流程中添加質(zhì)量或安全檢查,在最好的情況下,這將運(yùn)行復(fù)雜的全程序、控制和數(shù)據(jù)流靜態(tài)分析引擎,導(dǎo)致構(gòu)建時間線性遞增(通常是標(biāo)準(zhǔn)的2 倍到 10 倍)編譯和鏈接時間),那么每個作業(yè)消耗的機(jī)器資源和能源量也會成比例地增加。
更環(huán)保的靜態(tài)分析
多年來,靜態(tài)分析工具開發(fā)人員一直在精益求精地提高工具性能,這通常會在性能上取得小幅提升,以抵消掃描新類別缺陷或進(jìn)行更深入掃描以提高準(zhǔn)確性所導(dǎo)致的偶爾性能下降。
但從根本上說,他們正在處理一個越來越大的問題空間,這通常被稱為“路徑爆炸”。
許多靜態(tài)分析工具使用的一項(xiàng)顯著效率改進(jìn)方案是增量分析。
增量分析意味著只分析基于依賴樹更改或添加的代碼。在最好的情況下,增量分析意味著只有少數(shù)文件會被重新分析,從而顯著減少時間、資源和能源消耗。
然而,在最壞的情況下,增量分析可能等同于全面分析。此外,增量分析還要求保留以前運(yùn)行的分析數(shù)據(jù),這并不總是可行的。
Klocwork 如何支持綠色軟件開發(fā)
Klocwork是一種靜態(tài)分析和SAST工具,其具備獨(dú)特的設(shè)計理念,通過獨(dú)立分析每個節(jié)點(diǎn),然后生成節(jié)點(diǎn)的“速記”,供其他節(jié)點(diǎn)使用,從而使其能夠有效地執(zhí)行整個程序數(shù)據(jù)流分析。
這種被稱為“差異分析”的能力,比增量分析更進(jìn)了一步。它不僅允許分析作業(yè)可以幾乎無限地并行化,而且還可以在系統(tǒng)其余部分被隔離的情況下,分析單個新節(jié)點(diǎn)或變更節(jié)點(diǎn)。
差異分析是對一組明確的已更改文件或新文件執(zhí)行的增量分析,不保留先前的運(yùn)行分析數(shù)據(jù),并且重新分析的代碼可能最少。
換句話說,作為每個開發(fā)人員提交或拉取請求的一部分,差異分析使我們能夠在盡可能短的時間內(nèi)并使用盡可能少的能量,對新的和變更的代碼運(yùn)行靜態(tài)分析或SAST 檢查。其具備CI 的所有好處,但結(jié)果更快,能耗更低。其包含靜態(tài)分析或 SAST 檢查的 CI/CD 管道的所有好處,但更具備可持續(xù)性。
開始使用Klocwork 開發(fā)綠色軟件
親自了解Klocwork如何幫助您為 C、C++、C#、Java、JavaScript 和 Python 開發(fā)高質(zhì)量的綠色軟件。免費(fèi)試用獲取私信北匯信息即可~
-
軟件開發(fā)
+關(guān)注
關(guān)注
0文章
710瀏覽量
30096
發(fā)布評論請先 登錄
嵌入式軟件開發(fā)工具市場新動向:訂閱制趨勢下的中國開發(fā)者選擇
ADC模數(shù)轉(zhuǎn)換實(shí)戰(zhàn):硬件設(shè)計與軟件開發(fā)要點(diǎn)指南!
CW32嵌入式軟件開發(fā)的必備知識
融合AI的OpenHarmony應(yīng)用軟件開發(fā):ai學(xué)習(xí)自律輔助軟件
芯科科技推出Simplicity Ecosystem軟件開發(fā)套件
2025北京軟件開發(fā)公司推薦匯總:盤點(diǎn)10家優(yōu)秀軟件定制開發(fā)公司
知識分享 | 敏捷方法在基于模型的軟件開發(fā)項(xiàng)目中的應(yīng)用
嵌入式軟件開發(fā)常用的軟件有哪些?
基于瑞薩64位MPU RZ/G2L進(jìn)行32位應(yīng)用軟件開發(fā)
請問從哪里可以獲取CCG5 軟件開發(fā)及Layout注意事項(xiàng)?
找電機(jī)控制軟件開發(fā)兼職
綠色環(huán)保又節(jié)能,軟件開發(fā)居然也可以
評論