SQALE是什么
本文將解釋在SonarQube中看到的SQALE Rating指標的意思以及計算方法,并給出一個例子。
一、SQALE簡介
SQALE全稱是Software Quality Assessment based on Lifecycle Expectations,是一套評估代碼質量的方法。主要思路計算技術債務時間占開發所有代碼所需要的時間的比例(Technical Debt Ratio),并按照比例的大小劃分A到D的等級。
二、如何計算Technical Debt Ratio
Technical Debt Ratio計算公式
Technical Debt Ratio = 技術債務時間 / 開發時間
技術債務時間
上圖中的Debt即是技術債務時間,216d表示修復所有的Issues需要216天。
每個Issue都由SonarQube默認了修復需要的時間,雖然可以通過配置修改,但SonarQube官方表示不建議修改。
評估開發時間
開發總時間 = 每一行代碼開發所需要的時間 * 代碼總行數
其中每一行代碼開發所需要的時間是可以配置的,默認是30min。
計算公式中可配置參數
技術債務相關參數配置頁面路徑是General Settings->Technical Debt,部分參數截圖如下:
-
每一行代碼開發時間
-
一天工作小時數
-
A-E等級對應的Technical Debt Ratio范圍,默認值是0.1,0.2,0.5,1,表示[0,0.1]為A,(0.1,0.2]為B,(0.2,0.5]為C,(0.5,1]為D。
-
計算單位,可選項包括復雜度、一行代碼,默認是一行代碼。這里值得注意,上文中為了快速說清楚,忽略了一個細節。即評估開發時間的單位可以是復雜度,公式為:
開發總時間 = 每一個復雜度開發所需要的時間 * 總復雜度
三、一個例子
上圖項目Technical Debt Ratio=5.0%,SQALE Rating=A,下面展示計算過程,其中技術債務的相關參數均為SonarQube默認值。
技術債務時間 = 216d * 8 * 60min = 103680min
開發總時間 = 每一行代碼開發所需要的時間 * 代碼總行數 = 30min * 68820 = 2064600min
Technical Debt Ratio = 技術債務時間 / 開發總時間 = 103680 / 2064600 = 0.05 = 5.0%
0.05 in [0,0.1],故SQALE Rating = A
created by 兩害
主要參考:
http://www.sonarsource.com/products/plugins/governance/sqale/installation-and-usage/#understandingSqaleRatings