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

SonarQube 6.7.7通过Sonar Scanner 4.6.2上传后无法显示代码覆盖率问题求助

解决SonarQube 6.7.7无法显示Jacoco代码覆盖率的问题

针对你遇到的上传覆盖率报告后SonarQube仪表板无数据的情况,结合你的环境(SonarQube 6.7.7 + Sonar Scanner 4.6.2),我整理了几个关键排查和修复步骤:

1. 优先修正报告路径配置

你的配置里sonar.coverage.jacoco.xmlReportPaths=/target/site/jacoco/jacoco.xml用了绝对路径,这大概率是核心问题。Sonar Scanner是在项目根目录执行的,绝对路径会去系统根目录下找/target,而非项目内部的target目录。

修改为相对路径:

sonar.coverage.jacoco.xmlReportPaths=target/site/jacoco/jacoco.xml

如果改用jacoco.exec格式,同样把路径改成相对路径target/jacoco.exec,并取消sonar.jacoco.reportPaths的注释。

2. 确认Jacoco报告已正确生成

在运行Sonar Scanner前,先手动验证报告文件:

  • 执行ls target/site/jacoco/jacoco.xml(Linux/macOS)或直接查看Windows文件资源管理器,确认报告存在且内容正常(不是空文件)。
  • 如果报告不存在,说明你的构建流程(比如mvn clean test jacoco:report)没有正确生成Jacoco报告,先确保构建步骤能产出有效的覆盖率文件。

3. 检查SonarQube插件兼容性

SonarQube 6.7.7是较老的LTS版本,需要确认:

  • SonarQube后台已安装并启用Jacoco插件(在「Administration > Marketplace」中检查),且插件版本与SonarQube 6.7.7兼容。
  • Sonar Scanner 4.6.2与SonarQube 6.7.7的版本匹配(官方文档显示Scanner 4.x兼容SonarQube 6.7+,若仍有问题可尝试降级到Scanner 3.x)。

4. 补充测试报告配置

覆盖率数据依赖单元测试的执行结果,建议取消测试报告路径的注释,让Sonar能关联测试用例数据:

sonar.junit.reportsPath=target/surefire-reports
sonar.surefire.reportsPath=target/surefire-reports

这两个属性在6.7.7版本中可同时配置,确保Sonar能识别测试执行情况,进而正确关联覆盖率数据。

5. 分析Sonar Scanner的Verbose日志

你已开启sonar.verbose=true,执行Scanner时重点查看日志:

  • 搜索「Jacoco」关键词,确认是否有「Reading report from...」的日志,验证Sonar是否成功找到报告文件。
  • 如果出现「Failed to read coverage report」或「No coverage information will be saved」的提示,根据提示进一步排查(比如文件损坏、权限不足)。

6. 检查文件权限

如果在CI/CD环境运行Sonar Scanner,确保执行进程对target/site/jacoco/目录及文件有读取权限,避免因权限问题导致Sonar无法加载报告。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 23:12:40