成功的程式設計師們都推崇哪種靜態分析策略?

2021-10-21 20:34:21 字數 2103 閱讀 3555

作為我的「成功程式設計師的7個習慣」系列的一部分,今天我將討論一些確保靜態分析有效和可持續的方法。

要從頭開始,最好從你的靜態分析策略開始。有些人想知道為什麼這很重要,但實際上這對乙個成功的靜態分析計畫至關重要。你的策略將涵蓋諸如你應該執行哪些規則,什麼時候可以忽略它們與什麼時候必須修復它們,如何進行抑制等等。你還需要決定哪些**需要被分析,即所有你閒置的遺留**,這一點我們將很快討論。

如果沒有乙個一致的策略,靜態分析很快就會淪為乙個偶爾執行的bugfinder,縮減了你從中獲得的價值。如果你從事的是像醫療或汽車這樣的合規性業務,無論如何你都必須進行靜態分析,所以你不妨正確地進行靜態分析,以獲得一些價值。

獲得正確的工具很重要。該工具需要在你的**編輯器(ide)內,與你正在使用的語言,在你正在使用的作業系統上工作。該工具應該同時支援伺服器和ide內執行,ide內執行(對開發人員而言)和基於web的報告(對管理人員而言)。你需要能夠配置工具來執行你想要的規則(而不僅僅是工具**商希望你執行的規則)。成熟的工具都有開箱即用的配置,讓你可以使用misra、owasp、cwe和pci等行業倡議。

能夠用你自己的規則、想法和最佳實踐來擴充套件工具,對你的長期成功也很重要。而且不要忘記技術支援——能否有人圍繞嘈雜的規則看問題,並幫助你解決這些問題?你是否會使用開源並自己進行修復?你通常會使用**商服務來幫助你的專案快速啟動並朝著正確的方向發展嗎?

這些等等都是選擇工具時需要考慮的問題。不要落入陷阱——它幾乎不能提供什麼有用的資訊,說明乙個工具是否真的能做到你需要的事情,靜態分析工具只是工作方式不同而已。

如上所述,很容易掉進陷阱,只要開啟你的靜態分析工具中的任何規則就可以了。有些廠商積極鼓勵這樣做,有些廠商甚至要求這樣做!每個人的軟體測試需求都是不同的。乙個預設的配置可以讓你入門,但要想成功,你必須讓它成為你自己的。

要做的幾件事包括關閉嘈雜的規則,並讓嚴重性水平與自己的實際做法相匹配(你不希望乙個工具在你認為嚴重性很低的時候說某件事很關鍵)。乙個不明顯的提示是關閉那些你喜歡但不打算在今天修復的規則。當你有時間解決違規問題時,再開啟規則,而不是之前。在被舉報時忽略它們,只會讓開發者知道不是所有規則都重要,從而產生挫敗感和壞習慣。

你正在執行的規則應該與你在現場遇到的問題、你可能合理預期的問題、安全問題、**審查過程中發現的事情以及任何合規專案有關——這些規則你必須執行。

即使你有完全正確的規則,有時上下文會使某一特定的靜態分析發現在**的某一部分並不重要,而在另一部分卻仍然至關重要。你在這裡有幾個選擇,其中最有價值的是沮喪地關閉規則。如果你知道該規則可以在某些領域提供價值,這是乙個糟糕的選擇。如果你的工具不能讓你正確配置和抑制,你就選錯了工具——回到上面的第2步。

另乙個有些人掉進的陷阱是對結果進行一些人工管理,並將認為重要的結果傳遞出去。這是勞動密集型的,不可擴充套件的,不可維護的,而且你最終會修復那些不那麼重要的東西,而錯過那些更重要的東西。你需要乙個資料驅動的過程,幫助你評估哪些違規行為需要修復,哪些可以安全地忽略,然後有一種方法來標記它們,使它們不會再出現。理想情況下,這可以由開發人員直接在**所在的ide中完成,也可以由經理、架構師等在基於web的ui中完成。

有些人把這些抑制放在乙個單獨的系統中。這樣做的好處是永遠不會改變**,但有風險,當你進行分支或重構時,或者出現一些同步問題時,需要返工。還有一些人以特殊注釋的形式對**進行修改。雖然這確實需要修改**,但它是持久的、準確的,而且還能記錄抑制——如果你被審計,這是很好的。考慮一下你的需求,選擇最適合你的環境的方法。如果你的工具不支援這兩種方法,請回到步驟2。

遺留**與抑制有關。決定如何處理舊**很重要。這同樣取決於你的需求,但我在下面介紹了幾種方法。

有些組織選擇只在有乙個未完成的字段bug-report觸及這些**行的情況下才修復遺留**中的靜態分析違規行為——檔案中的其他任何東西都不應該被觸及。如果你的**真的很老,或者變更的風險很高,這是乙個完全合理的政策。它可以將風險降到最低。

你也可以採用混合方法,或者乾脆忽略某個日期之前的所有舊**,只用靜態分析前進。弄清楚你能達到什麼目的,然後這樣做。只要先想好你提出的策略的風險和收益。

成功的程式設計師

成功的程式設計師 世界上最成功的人一開始是個程式設計師。在1974年,bill gates為altair 8800寫了乙個4k的編譯器,今天,他創立的microsoft用windows作業系統和microsoft office,microsoft home等產品統治了pc軟體市場。bill成了世界首...

成功的程式設計師

世界上最成功的人一開始是個程式設計師。在1974年,bill gates為altair 8800寫了乙個4k的編譯器,今天,他創立的microsoft用windows作業系統和microsoft office,microsofthome等產品統治了pc軟體市場。bill成了世界首富,他的個人財產今天...

程式設計師都知道的資料變數

承載資訊的符號 a 字串常量 hello b 整數常量 12,23 c 小數常量 12.345 d 字元常量 a a 0 e 布林常量 true,falsef 空常量 null 後面講 a 二進位制 由0,1組成。以0b開頭。b 八進位制 由0,1,7組成。以0開頭。c 十進位制 由0,1,9組成。...