隨著氣候變化成為一個關鍵的全球問題,軟件開發人員和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文章
624瀏覽量
27389
發布評論請先 登錄
相關推薦
評論