SonarQube速查手册

本文档概述了SonarQube中关键的度量指标,包括代码复杂度(圈复杂度和认知复杂性)、覆盖率(分支和代码行覆盖率)、可维护性(技术债务和SQALE评级)、可靠性(漏洞和安全修复)以及重复和问题检测。了解这些指标有助于团队评估代码质量并提升开发效率。

目录

前言

复杂度(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语句数
### 回答1: SonarQube是一个开源的代码质量管理工具,用于分析和管理项目的代码质量。它提供了静态代码分析、代码复杂度、代码覆盖率、代码重复等多种功能,可帮助开发团队提高代码质量,并发现和解决潜在的缺陷和漏洞。 SonarQube 7.8是SonarQube的一个版本。下面是SonarQube 7.8的使用手册概述: 1. 安装和配置:首先需要下载SonarQube 7.8的安装包,并按照官方指南进行安装。安装完成后,需要配置数据库和其他参数,以便SonarQube能够正常工作。 2. 项目管理:在SonarQube中,可以创建和管理各种不同的项目。可以将代码仓库与SonarQube关联,以便能够对项目进行代码分析。通过SonarQube的仪表盘可以查看项目的总体代码质量。 3. 静态代码分析:SonarQube通过对代码进行静态分析,可以找出代码中的潜在问题和错误。它提供了多种静态代码分析规则和检查项,可以根据团队的需求进行定制配置。对项目进行静态代码分析可以帮助发现代码质量问题,并给出相应的改进建议。 4. 代码复杂度和覆盖率:SonarQube可以计算代码的复杂度和覆盖率。代码复杂度指标可以帮助开发团队评估代码的可读性和可维护性。代码覆盖率报告可以告诉团队哪些代码被测试覆盖,从而帮助团队提高测试覆盖率。 5. 代码重复:SonarQube可以检测代码中的重复片段,并给出相应的警告。这有助于团队发现和修复重复的代码,提高代码的可维护性和可读性。 6. 报告和历史记录:SonarQube提供了丰富的报告和历史记录功能,可以追踪项目的代码质量变化。这些报告可以帮助团队评估项目的演进,并进行合理的决策。 总结来说,SonarQube 7.8是一个功能丰富的代码质量管理工具,可以帮助开发团队提高代码质量、发现潜在问题并提供改进建议。通过使用SonarQube,团队可以更好地管理和优化项目的代码。 ### 回答2: SonarQube是一个开源的代码质量管理平台,它用于对项目代码进行静态分析和检测,以帮助团队管理和提高代码质量。下面简单介绍一下SonarQube 7.8的使用手册SonarQube 7.8的使用手册包括安装、配置和使用指南,帮助用户快速上手平台。 首先,安装SonarQube 7.8需要一台服务器,并确保服务器满足平台的要求。可以从SonarQube官方网站上下载最新版本的安装包。安装完成后,可以通过运行启动脚本来启动SonarQube服务。 接下来,配置SonarQube。用户需要在SonarQube服务器上创建一个新的项目,为此项目配置版本控制系统和构建工具。用户还可以配置SonarQube与其他外部工具的集成,例如Jenkins等。 一旦配置完成,就可以使用SonarQube对代码进行分析。用户可以通过Web界面或使用SonarScanner来进行代码分析。SonarScanner是一个命令行工具,可以将代码发送到SonarQube服务器进行静态分析,并生成分析报告。 SonarQube 7.8提供了丰富的代码质量指标和报告,可以帮助用户了解项目的代码质量情况。例如,平台可以检测出代码中的重复代码、潜在的bug、安全漏洞和代码坏味等问题,并给出建议和修复意见。 此外,SonarQube 7.8还支持团队协作功能,可以通过团队成员之间的交流和讨论来改善代码质量。用户可以在平台上创建任务,分配给团队成员,并跟踪任务的进度。 总之,SonarQube 7.8使用手册提供了详细的安装、配置和使用指南,帮助用户快速上手该平台。通过使用SonarQube,团队可以更好地管理代码质量,发现和修复潜在的问题,提高软件开发效率和质量。 ### 回答3: SonarQube 7.8使用手册是一个详细的指南,帮助用户了解和使用SonarQube软件的新版本。该手册分为几个主要部分,包括安装指南、配置指南、功能介绍和使用示例等。 首先,安装指南提供了关于如何安装SonarQube 7.8的详细步骤。它描述了系统要求、安装过程以及如何配置数据库等信息。 接下来,配置指南提供了如何在SonarQube中配置不同项目的说明。它解释了如何创建项目、设置分析参数以及如何与版本控制系统集成等。 然后,该手册介绍了SonarQube 7.8的各种功能。它解释了如何执行代码静态分析、查看和解释分析结果以及如何生成报告等。 最后,使用示例部分提供了一些典型的使用场景和案例。例如,如何使用SonarQube来检测代码中的潜在漏洞、重复代码和代码质量问题等。 此外,该手册还包括常见问题解答和附录等附加信息。它可以帮助用户解决常见的问题,并提供了额外的参考资料和资源。 总而言之,SonarQube 7.8使用手册提供了全面的指导,帮助用户了解和使用最新版本的SonarQube软件。无论是新手还是有经验的用户,都可以从中获得对SonarQube的深入了解,并学会如何有效地使用该软件进行代码质量管理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值