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