Total Quality指标解析

2024-02-11 13:38
文章标签 解析 指标 quality total

本文主要是介绍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指标解析的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/699926

相关文章

nginx -t、nginx -s stop 和 nginx -s reload 命令的详细解析(结合应用场景)

《nginx-t、nginx-sstop和nginx-sreload命令的详细解析(结合应用场景)》本文解析Nginx的-t、-sstop、-sreload命令,分别用于配置语法检... 以下是关于 nginx -t、nginx -s stop 和 nginx -s reload 命令的详细解析,结合实际应

MyBatis中$与#的区别解析

《MyBatis中$与#的区别解析》文章浏览阅读314次,点赞4次,收藏6次。MyBatis使用#{}作为参数占位符时,会创建预处理语句(PreparedStatement),并将参数值作为预处理语句... 目录一、介绍二、sql注入风险实例一、介绍#(井号):MyBATis使用#{}作为参数占位符时,会

PostgreSQL的扩展dict_int应用案例解析

《PostgreSQL的扩展dict_int应用案例解析》dict_int扩展为PostgreSQL提供了专业的整数文本处理能力,特别适合需要精确处理数字内容的搜索场景,本文给大家介绍PostgreS... 目录PostgreSQL的扩展dict_int一、扩展概述二、核心功能三、安装与启用四、字典配置方法

解读GC日志中的各项指标用法

《解读GC日志中的各项指标用法》:本文主要介绍GC日志中的各项指标用法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、基础 GC 日志格式(以 G1 为例)1. Minor GC 日志2. Full GC 日志二、关键指标解析1. GC 类型与触发原因2. 堆

深度解析Java DTO(最新推荐)

《深度解析JavaDTO(最新推荐)》DTO(DataTransferObject)是一种用于在不同层(如Controller层、Service层)之间传输数据的对象设计模式,其核心目的是封装数据,... 目录一、什么是DTO?DTO的核心特点:二、为什么需要DTO?(对比Entity)三、实际应用场景解析

深度解析Java项目中包和包之间的联系

《深度解析Java项目中包和包之间的联系》文章浏览阅读850次,点赞13次,收藏8次。本文详细介绍了Java分层架构中的几个关键包:DTO、Controller、Service和Mapper。_jav... 目录前言一、各大包1.DTO1.1、DTO的核心用途1.2. DTO与实体类(Entity)的区别1

Java中的雪花算法Snowflake解析与实践技巧

《Java中的雪花算法Snowflake解析与实践技巧》本文解析了雪花算法的原理、Java实现及生产实践,涵盖ID结构、位运算技巧、时钟回拨处理、WorkerId分配等关键点,并探讨了百度UidGen... 目录一、雪花算法核心原理1.1 算法起源1.2 ID结构详解1.3 核心特性二、Java实现解析2.

使用Python绘制3D堆叠条形图全解析

《使用Python绘制3D堆叠条形图全解析》在数据可视化的工具箱里,3D图表总能带来眼前一亮的效果,本文就来和大家聊聊如何使用Python实现绘制3D堆叠条形图,感兴趣的小伙伴可以了解下... 目录为什么选择 3D 堆叠条形图代码实现:从数据到 3D 世界的搭建核心代码逐行解析细节优化应用场景:3D 堆叠图

深度解析Python装饰器常见用法与进阶技巧

《深度解析Python装饰器常见用法与进阶技巧》Python装饰器(Decorator)是提升代码可读性与复用性的强大工具,本文将深入解析Python装饰器的原理,常见用法,进阶技巧与最佳实践,希望可... 目录装饰器的基本原理函数装饰器的常见用法带参数的装饰器类装饰器与方法装饰器装饰器的嵌套与组合进阶技巧

解析C++11 static_assert及与Boost库的关联从入门到精通

《解析C++11static_assert及与Boost库的关联从入门到精通》static_assert是C++中强大的编译时验证工具,它能够在编译阶段拦截不符合预期的类型或值,增强代码的健壮性,通... 目录一、背景知识:传统断言方法的局限性1.1 assert宏1.2 #error指令1.3 第三方解决