【摘要】代碼檢查中,提到的編程規范,規則集,規則,規則用例(場景、誤報、檢出)分別代表什么意思呢?
在 SAST 靜態檢查領域,代碼檢查服務可以幫助開發者發現和修復代碼中的風格、質量和安全等方面的問題。那么在代碼檢查服務中,提到的編程規范,規則集,規則,規則用例(場景、誤報、檢出)分別代表什么意思呢?
編程規范
在 SAST 靜態代碼檢查領域,編程規范是一套在組織層面關于代碼編寫的標準或準則。它可以幫助開發者遵循一致的風格和習慣,提高代碼的可讀性、可維護性、可移植性、安全性與可靠性,目的在于指導公司、部門、項目組編寫出 CleanCode 及高質量的軟件。
編程規范通常會參考業界標準及實踐,并包含命名、縮進、注釋、格式等方面的內容,業界內比較有名的有華為編程規范。
編程規范內的規則通常被用于在特定場景下使用,檢測出代碼中的漏洞和缺陷。但是這些規則并非就是萬能完美的,在一些場景下,可能會導致誤報率、漏報率高的情況發生。如果在日常使用中發現某些規則不適合或者無法遵循,經過團隊共同研討決策,是可以對規范中的規則進行改進甚至下線處理的。
注意,團隊內在使用編程規范的時候,是希望團隊成員都具有相應語言的基礎編程能力,而不是說希望通過編程規范來學習某個具體的語言。
規則集
規則集則是一組用于做代碼檢查的規則組成的集合。
一般根據不同的檢查目標和需求,規則集也有相應的分類,比如對安全類、安卓應用、編程風格這些類別進行檢查的時候,規則集內的規則也會有不同的選擇。
規則集可以應用在不同的范圍上,比如:公司最小規則集可以在全公司范圍內使用,產品線規則集則可以在最小規則集的基礎上再額外加些產品線特有的規則進去,構建一個范圍更大的產品線級規則集。
規則集也可以在不同的階段使用。比如針對本地 IDE 編碼階段,可以構建一個 IDE 插件檢查規則集在本地實時進行檢查。在提交增量代碼階段,使用一個更大范圍的規則集對增量代碼進行自動化檢查。在要進行版本級掃描階段,與流水線協同提供全面、深度的全量檢查。
華為云 CodeArtsCheck 的系統推薦規則集
規則
規則是一種用來指導和約束代碼檢查的標準和準則。它可以根據不同的編程語言、編碼規范、質量要求等因素來制定。每個規則可以說都定義了一個缺陷模式,當該模式在目標代碼中匹配成功后會生成一個檢查問題。
每個規則都會包含一個 ID 和一個操作。ID 可以說是規則唯一的標識符,用于區分不同的規則;操作則用于指定改規則在代碼檢查期間應該執行的動作,比如告警等。
規則一般會包含描述信息(包含編寫這條規則的背景等)、正確的代碼示例、錯誤的代碼示例、修復建議、參考的規范等信息。
華為云 CodeArtsCheck 的規則信息
規則用例
規則用例是一種用于驗證代碼檢查規則是否按照預期正確工作的測試用例。一般它會包括一個或多個測試輸入(代碼片段),執行條件以及預期的檢查結果(包括是否有問題,問題的類型,問題的位置等)。
規則用例可以說是檢驗和驗證規則的一種手段,可以幫助開發人員和測試人員評估代碼檢查規則的有效性、準確性和覆蓋性。
而和規則用例配套的術語則有:場景,誤報,檢出等。
場景
場景是一種描述代碼檢查規則應用的具體情況或背景的方法,它可以說是規則用例的集合(包含 1 個或多個規則用例)以及一些相關的信息(項目類型、編程語言、編碼規范等)的結合。場景可以比規則用例更全面的模擬代碼檢查規則的使用場景。
誤報
誤報是指代碼檢查服務錯誤地報告了一個不存在的問題或一個錯誤的問題類型的狀況。誤報一般是由于代碼檢查規則的設計缺陷、實現錯誤、使用場景不匹配或配置不當等原因造成的,會導致開發人員和測試人員對代碼檢查服務的信任度降低。
檢出
檢出則和誤報完全相反,是個好的現象,是指代碼檢查服務正確地報告了一個確實存在的問題及正確的問題類型的狀況。檢出高可以幫助開發人員預防和修復潛在的缺陷。
審核編輯 黃宇
-
代碼
+關注
關注
30文章
4753瀏覽量
68369 -
華為云
+關注
關注
3文章
2435瀏覽量
17323
發布評論請先 登錄
相關推薦
評論