sonar覆盖率、代码覆盖率、分支覆盖率的计算方式

代码质量的覆盖率分为三种,覆盖率、代码覆盖率、分支覆盖率,那每一种的计算方式是怎么样的呢?

举例:

在这里插入图片描述

上面最有疑惑的是覆盖率,不知道怎么算出了来的,后面再说。

通过sonarqube可以分析出:

指标
可覆盖行(lines_to_cover) 13242
未覆盖的代码(uncovered_lines) 7943
可覆盖分支(conditions_to_cover) 7943
未覆盖分支(uncovered_conditions) 7943

代码覆盖率

代码覆盖率(line_coverage) = (可覆盖行 - 未覆盖的代码)/可覆盖行

或者

行覆盖率 ( line_coverage):在给定的代码行上,行覆盖率只是回答“这行代码是否在单元测试执行期间被执行过?”的问题。它是单元测试覆盖线的密度:

线路覆盖率 = LC / EL
其中:

LC = 覆盖线 ( lines_to_cover - uncovered_lines)
EL = 可执行行总数 ( lines_to_cover)

分支覆盖率

分支覆盖率(branch_cov

### 如何在 Sonar 中实现增量代码的单元测试覆盖率检测 为了实现在 SonarQube 中检查增量代码的单元测试覆盖率,需要配置合适的工具链并遵循特定的工作流程。以下是具体方法: #### 配置环境与工具 SonarQube 是一个强大的代码质量管理平台[^1],而 JaCoCo 可以记录代码覆盖率完全依赖于对原始代码的插桩,在 CI 实践中已经广泛应用于单元测试代码覆盖率统计[^3]。 #### 设置 Jenkins 和 SonarQube 的集成 当代码被推送至代码库时,Jenkins 将触发构建过程,并利用 JaCoCo 统计单元测试代码覆盖率的数据,随后这些数据会被上传到 SonarQube 平台进行展示和分析。 #### 启用增量分析模式 要在 SonarQube 上启用增量代码的单元测试覆盖率检测,需设置 `sonar.coverage.exclusions` 参数排除不必要的文件路径,并确保只针对新提交或修改过的代码计算覆盖率指标。这可以通过调整项目的属性文件完成,例如 `.properties` 文件中的如下配置项: ```properties # 排除某些目录下的文件不参与覆盖率计算 sonar.coverage.exclusions=src/test/**/*, src/main/java/com/example/old/** ``` 此外,还需要开启分支保护规则以及 PR (Pull Request) 分析功能,以便每次创建新的 Pull Request 时自动启动该特性,从而专注于最近更改的部分。 #### 使用 Opencover 或其他替代方案生成报告 如果遇到无法获取正确覆盖率的情况,则可能是因为缺少必要的集成步骤。此时可考虑引入像 OpenCover 这样的第三方工具来辅助生成更精确的单元测试覆盖报告文档[^4]。 通过上述措施可以在 SonarQube 中有效地监控增量代码的变化及其对应的单元测试覆盖率情况,进而帮助团队持续改进软件质量。
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IccBoY

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值