程式碼質量衡量指標
阿新 • • 發佈:2021-07-28
目錄
1 程式碼質量衡量指標
SQALE(Software Quality Assessment based on Lifecycle Expectations)方法整合了ISO-25010標準與程式碼規範,其目標是:以客觀、準確、可複製和自動化的方式為評估軟體應用程式的原始碼提供支援;為管理技術債務提供一種有效的方法。SQALE是目前眾多主流程式碼分析工具的參照標準,包括我們熟知的SonarQube,和CoderGears, SQUORE等商用程式碼掃描分析工具。
-
編碼規範:是否遵守了編碼規範,遵循了最佳實踐。
[強制]等級規約必須遵守 -
潛在問題:可能在最壞情況下出現問題的程式碼,以及存在安全漏洞的程式碼。
數量小於10,安全風險類潛在Bug必須修復 -
文件和註釋:過少(缺少必要資訊)、過多(沒有資訊量)、過時的文件或註釋。
-
重複程式碼:違反了Don’t Repeat Yourself原則.
重複程式碼不超過20% -
複雜度:程式碼結構太複雜(如圈複雜度高),難以理解、測試和維護.
圈複雜度超過20的程式碼必須重構
圈複雜度 | 程式碼狀況 | 可測性 | 維護成本 |
---|---|---|---|
1-10 | 清晰、結構化 | 高 | 低 |
10-20 | 複雜 | 中 | 中 |
20-30 | 非常複雜 | 低 | 高 |
>30 | 不可讀 | 不可測 | 非常高 |
-
單元測試覆蓋率:編寫單元測試,特別是針對複雜程式碼的測試覆蓋是否足夠。
達到70% -
技術債:償還債務所需耗費的資源/重寫所有程式碼預估耗費的資源
SonarQube中- [0, 5%] -> A , 預設需要達到的等級
- (5%, 10%] -> B
- (10%,20%] -> C
- (20%, 50%] -> D
- 高於50% -> E
達到100%時,即債務開始超過資產,資不抵債,這時就稱這種情況為“技術破產”。
負債等級達到B或負債比率小於等於10%