本文主要是介绍Total Quality指标解析,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
什么是Total Quality
Total Quality(简称TQ)是一个全局的代码质量指标,是sonar的一个插件,它提供了统一的评分标准。Total Quality包含四个方面的内容:
- 架构(Architecture,简称ARCH)
- 设计(Design ,简称DES)
- 代码(Code ,简称CODE)
- 测试(Overall Test ,简称OVERALL_TS)
TQ的缺省计算公式为:TQ = 0.25*ARCH + 0.25*DES + 0.25*CODE + 0.25*OVERALL_TS
在缺省的计算公式中,每个方面都是0.25的权重,该值可以在sonar的系统设置里面进行调整。
Architecture (ARCH)
Architecture的计算公式为: ARCH = 100 – TI
其中TI代表Package tangle index(包纠缠指数)。例如某系统的Package tangle index值是2.6%,则该系统的ARCH值为97.4%(100-2.6=97.4)。 提高此项得分的途径是消除包之间的循环依赖。
Design (DES)
Design的计算公式为: DES = 0.15*NOM + 0.15*LCOM + 0.25*RFC + 0.25*CBO + 0.20*DIT
- NOM 用于衡量类平均复杂度和方法平均复杂度。提高此项得分的途径是降低类平均复杂度和方法平均复杂度。
- LCOM 用于衡量类中的方法是否缺乏内聚。根据“单一职责原则”,如果一个类中两个方法没有使用相同的属性或调用相同的其他方法,则这两个方法也许应该拆分到两个不同的类中去。换句话说,将一个类分割成几个类,可以在类的层面提高模块化程度。提高此项得分的途径是降低“缺乏内聚度”(LCOM4指标)。详细信息可以参考《LCOM4 - Lack of Cohesion of Methods》
- RFC 是“Response for Class”的简称,用于衡量类在方法调用层面上的复杂程度。对于每个类,每多一个方法定义,RFC值加1;每次直接的方法调用(get、set方法除外),RFC值加1。此指标属于间接指标,表示设计上可能存在问题。当优化设计之后,此指标会随之改善,无需单独考虑。下面是一个例子:
- CBO 用于衡量某个类对其他类的依赖个数。此指标属于间接指标,表示设计上可能存在问题。当优化设计之后,此指标会随之改善,无需单独考虑。
- DIT 是“Depth of Inheritance Tree”的简称,表示从java.lang.Object开始的继承层次。超过5层的继承深度将对该值产生不良影响。
Code (CODE)
Code的计算公式为: Code = 0.15*DOC + 0.45*RULES + 0.40*DRYNESS
- DOC = Documented API density 有注释的API(public方法)百分比,补充注释将提高此项得分。
- RULES = Rules compliance index 规则符合指数,消除违规项将提高此项得分。目前的扫描规则仅限于findbugs的高级别警告,必须尽快修改扫描出来的违规项。
- DRYNESS = 100 - Duplicated lines density 重复代码行百分比,消除重复代码将提高此项得分。
Overall Test (OVERALL_TS)
此项分数取决于测试的覆盖率和测试案例执行的成功率。计算公式为: Test = 0.60*(0.80*COV + 0.20*SUC) + 0.40*IT_COV
- COV = Code coverage 单元测试覆盖率
- SUC = Unit Tests success density 单元测试成功率
- IT_COV = Integration Tests coverage 集成测试覆盖率
这篇关于Total Quality指标解析的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!