You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Jacoco与SonarQube联动代码覆盖的相关问题咨询

Jacoco与SonarQube代码覆盖集成问题解答

项目配置背景

我们有一个可本地运行、部署后云端运行的Java项目,采用Jacoco与SonarQube实现代码覆盖,具体配置如下:

  • 本地通过Jacoco验证测试覆盖并生成报告,Jacoco配置在POM文件中,通过两种方式排除部分文件的覆盖计算:
    • 利用POM文件里的configuration & excludes元素排除指定包与类;
    • 使用Retention Policy为RUNTIME的自定义@Generated注解标记排除类。
  • Jenkins流水线中配置Sonar计算代码覆盖,Jenkins文件中设置了以下属性:
    "sonar.java.coveragePlan": "jacoco"
    "sonar.coverage.jacoco.xmlReportPaths": "***/target/site/jacoco/jacoco.xml"
    

问题与解答

问题1:已在POM文件中指定需排除Jacoco代码覆盖的Java类,Sonar是自行运行代码覆盖,还是使用Jacoco生成的报告?

Sonar会直接使用Jacoco生成的XML报告来统计代码覆盖,不会自行重新运行代码覆盖逻辑。因为你配置的sonar.coverage.jacoco.xmlReportPaths指定了Jacoco报告的路径,同时sonar.java.coveragePlan设为jacoco,这两个配置明确告知Sonar要复用Jacoco的覆盖结果。

问题2:Sonar是否能识别Jacoco已排除的包与类,还是需单独指定排除文件?

Sonar会自动识别Jacoco报告中已排除的包和类,不需要在Sonar中单独配置排除规则。原因如下:

  • 通过POM中Jacoco的excludes元素排除的类,Jacoco生成的报告里不会包含这些类的覆盖数据;
  • 用自定义@Generated注解标记的类,Jacoco在生成报告时会跳过统计,Sonar读取这份报告后自然不会将这些类纳入覆盖计算。

内容的提问来源于stack exchange,提问作者Srikanth

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 23:53:18