SonarQube 指标定义

目录

前言

复杂度(Complexity)

覆盖率(Coverage)

重复(Duplication)

问题(Issues)

可维护性(Maintainability )

可靠性(Reliability)


前言

       由于团队开始使用Sonar并且要确定对应的度量指标,因此为了方便查阅,特把Sonar官方文档中的指标翻译成中文。由于本人水平有限,翻译仅供参考。

复杂度(Complexity)

指标(中文)指标(英文)描述
复杂度Complexity基于代码的分支计算出来的复杂度,即圈复杂度。当一个方法的控制流多了一个分支,它的复杂度就会增加1。每个方法的最小复杂度为1。
理解复杂Congnitive Complexity理解代码的控制流的难易程度。具体参考 https://www.sonarsource.com/resources/white-papers/cognitive-complexity.html

覆盖率(Coverage)

指标(中文)指标(英文)描述
分支覆盖Condition coverage被单元测试覆盖到的分支数
分支覆盖率Condition coverage(%)在包含一些布尔表达式的每一行代码中,条件覆盖率简单地回答了以下问题:“是否将每个布尔表达式都计算为true和false?”这是单元测试执行期间遵循的流控制结构中可能的条件的密度。
分支覆盖率 = (CT + CF)/(2*B)
其中,CT为至少一次被评估为true的分支数,CF为至少一次被评估为false的分支数,B为总分支数。
新代码的分支覆盖率Condition coverage on new code同上,但只针对新代码和更新的代码
代码覆盖率Line coverage代码行覆盖率,即被单元测试覆盖的行数/总代码行数
公式:LC / EL
其中, LC为被单元测试覆盖到的行数;EL为总代码行数。
新代码覆盖率Line coverage on new code新代码行覆盖率,公式同上,但只针对新代码或更新的代码
覆盖率Coverage总覆盖率,即分支覆盖率和代码行覆盖率的总和,它旨在提供更加准确的数据去展现源代码被单元测试覆盖的程度。
公式:(CT+CF+LC)/(2*B+EL)
新覆盖率Coverage on new code同上,但只针对新代码和更新的代码
代码行Lines to cover被单元测试覆盖的代码行数
覆盖的新代码Lines to cover on new code被单元测试覆盖的代码行数(只针对新增代码或更新的代码)
单元测试忽略数Skipped unit tests忽略的单元测试用例数
未覆盖分支Uncovered conditions单元测试未覆盖的分支数
未覆盖新分支Uncovered conditions on new code单元测试未覆盖的新增分支数
未覆盖的代码Uncovered lines单元测试未覆盖的代码行数
未覆盖的新代码Uncovered lines on new code单元测试未覆盖的新增代码行数
单元测试持续时间Unit tests duration单元测试所持续的时间
单元测试错误数Unit test errors单元测试执行错误数,即运行异常
单元测试失败数Unit test failures单元测试执行失败数,即运行正常但是得到非预期结果
单元测试成功(%)Unit test success density (%)(单元测试用例数-(单元测试错误数+单元测试失败数))/单元测试用例数*100
单元测试数Unit tests单元测试用例数

重复(Duplication)

指标(中文)指标(英文)描述
重复块Duplicated blocks重复行块数。如何定义一个块是否重复块:
JAVA类项目:
- 无论标记和行数多少,只要有至少10个连续重复的语句,则定义为重复块;

非JAVA类项目:
- 至少有100个连续重复的标记;
- 这些标记要至少分布在 1)30行代码中(如是COBOL);2)20行代码中(如是ABAP);3)10行代码中(如是其他语言)
新代码中的重复块Duplicated blocks on new code同上,但只针对新代码
重复文件Duplicated files重复的文件数
重复行Duplicated lines重复的代码行数
重复行(%)Duplicated lines (%)重复行数/总行数*100
新代码中的重复行Duplicated lines on new code同上,但只针对新代码
新代码中的重复行密度(%)Duplicated lines(%)on new code同上,但只针对新代码

问题(Issues)

指标(中文)指标(英文)描述
阻断违规Blocker violations阻断违规数
确认问题Confirmed issues确认问题数
严重违规Critical violations严重违规数
误判问题false positive violations误判问题数
提示违规Info violationd提示违规数
违规violations违规数
主要违规major violations主要违规数
次要违规minor violations次要违规数
新阻断违规New blocker violations新阻断违规数
新严重违规New critical violations新严重违规数
新提示违规New info violations新提示违规数
新违规New violations新违规数
新主要违规New major violations新主要违规数
新次要违规New minor violations新次要违规数
开启问题Open issues状态为开启的问题数
重开问题Reopen issues状态为重开的问题数
不修复的问题Unfixed issues状态为不修复的问题数

可维护性(Maintainability )

指标(中文)指标(英文)描述
技术债务Technical Debt修复所有可维护性问题所需的工作量,单位为分钟。当该值以天为单位展示时默认为8小时/天。
新代码的技术债务Technical Debt on new code同上,但只针对新代码。
坏味道Code Smells坏味道数
SQALE评级(可维护率)-根据项目技术债务比率而给与的项目评级。默认的可维护性等级为:
A = 0 - 0.05,即在0到5%之间
B = 0.06 - 0.1,即在6%到10%之间
C = 0.11 - 0.2,即在11%到20%之间
D = 0.21 - 0.5,即在21%到50%之间
E = 0.51 - 1,即超过50%
达到可维护性为A级所需的工作-能达到上述评级为A所需的工作量
新代码可维护率Maintainability Rating on new code 同上,但只针对新代码。
新增坏味道New code smell新增坏味道数
技术债务比率Technical Debt Ratio开发成本与修复成本的比率。
该比率=修复成本/开发成本,也=修复成本/(代码行数*每行代码开发成本)
每行代码开发成本为0.06天
新技术债务比率Technical Debt Ratio on new code在泄漏期间修改代码的开发成本与由此修改引入的问题成本之比。

可靠性(Reliability)

指标(中文)指标(英文)描述
新增漏洞New Vulnerabilities新增安全漏洞数
安全比率Security RatingA = 0 安全漏洞
B = 至少1个Minor漏洞
C = 至少1个Major漏洞
D = 至少1个Critical漏洞
E = 至少1个Blocker漏洞
新代码安全率Security Rating on new code同上,但只针对新代码。
安全修复工作Security remediation effort修复所有安全漏洞所需的工作量,单位为分钟。当该值以天为单位展示时默认为8小时/天。
新代码的安全修复工作Security remediation effort on new code同上,但只针对新代码。
漏洞Vulnerabilities安全漏洞数

大小(Documentation)

指标(中文)指标(英文)描述
Classes类数目
注释行数Comment lines

该指标包含注释或已注释代码的行数。不重要的注释行(即空注释行、只包含特殊字符的注释行等)不会增加注释行数量。
以下代码片段例子包含了9个注释行数:

 

/**                                                    +0 => empty comment line
 *                                                     +0 => empty comment line
 * This is my documentation            +1 => significant comment
 * although I don't                            +1 => significant comment
 * have much                                   +1 => significant comment
 * to say                                           +1 => significant comment
 *                                                      +0 => empty comment line
 ***************************                 +0 => non-significant comment
 *                                                      +0 => empty comment line
 * blabla...                                         +1 => significant comment
 */                                                     +0 => empty comment line
/**                                                     +0 => empty comment line
 * public String foo() {                       +1 => commented-out code
 *   System.out.println(message);     +1 => commented-out code
 *   return message;                         +1 => commented-out code
 * }                                                    +1 => commented-out code
 */                                                     +0 => empty comment line

注释(%)Comments(%)注释行数/(注释行数+代码行数)
目录Directories目录数
文件Files文件数
方法Functions方法数
行数Lines物理行数,包含回车。
代码行数Lines of code代码行数,包含至少一个非空格、非tab和非注释的字母的代码行数
新增代码行数Lines of new code新增代码行数,包含至少一个非空格、非tab和非注释的字母的代码行数
项目Projects项目数
语句Statements语句数
相关推荐
©️2020 CSDN 皮肤主题: 博客之星2020 设计师:CY__ 返回首页