sonar集成jacoco展示单元测试覆盖率

本文介绍了如何将sonar-scanner与jacoco集成,以展示Java项目的单元测试覆盖率。首先,在pom.xml中配置maven-jacoco-plugin生成覆盖率报告,然后创建sonar-project.properties文件,并指定jacoco.exec路径。通过执行sonar-scanner或maven命令,可以在SonarQube上查看包含覆盖率的分析报告。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

(一)sonar-scanner结合jacoco

这里还是要用到maven生成jacoco的统计结果,所以推荐直接使用maven的方式检查项目

1.在要检测的项目的pom文件中加入如下配置:

 <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>2.18.1</version>
                <configuration>
                    <argLine>${surefireArgLine}</argLine>
                </configuration>
            </plugin>
               <plugin>
                <groupId>org.jacoco</groupId>
                <artifactId>jacoco-maven-plugin</artifactId>
                <version>0.7.9</version>
                <executions>
                    <execution>
                        <!-- 在maven的initialize阶段,将Jacoco的runtime agent作为VM的一个参数 传给被测程序,用于监控JVM中的调用。 -->
                        <id>default-prepare-agent</id>
             
### 如何在 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 中有效地监控增量代码的变化及其对应的单元测试覆盖率情况,进而帮助团队持续改进软件质量。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值