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

SonarQube配置完成后行/代码覆盖率始终显示为0的问题咨询

SonarQube行覆盖率、代码覆盖率显示为0排查方案

SonarQube自身不执行测试、也不直接计算覆盖率指标,所有覆盖率数据都依赖扫描阶段导入的测试覆盖率报告,指标显示为0基本都是报告生成、路径配置、解析匹配环节出了问题,按以下顺序排查即可:

  • 确认测试执行阶段已生成合规的覆盖率报告
    覆盖率报告必须在Sonar扫描之前生成,不同技术栈对应生成方式:
    • Java(Maven):引入JaCoCo插件,执行mvn clean test jacoco:report,默认生成报告路径为target/site/jacoco/jacoco.xml
    • Java(Gradle):配置JaCoCo插件,执行./gradlew test jacocoTestReport,默认生成报告路径为build/reports/jacoco/test/jacocoTestReport.xml
    • JavaScript/TypeScript:Jest/Vitest等框架开启覆盖率采集,执行npx jest --coverage,生成lcov格式报告
    • Python:安装pytest-cov插件,执行pytest --cov=./ --cov-report=xml,根目录生成coverage.xml报告
      注意:不要跳过test步骤直接执行扫描,没有测试执行过程就不会有覆盖率数据。
  • 确认扫描配置中正确填写了覆盖率报告路径
    可以在sonar-project.properties文件、CI扫描命令参数、Sonar项目配置页填写对应路径,核心配置项:
    • JaCoCo、pytest-cov生成的XML格式报告:配置sonar.coverage.jacoco.xmlReportPaths=报告文件相对路径,多报告用英文逗号分隔
    • JS/TS栈生成的lcov报告:配置sonar.javascript.lcov.reportPaths=lcov.info文件相对路径
      路径要写相对于扫描执行根目录的相对路径,注意目录层级、文件名拼写不要出错。
  • 通过扫描日志定位具体问题
    执行sonar-scanner时查看控制台输出,筛选coverage相关日志:
    • 出现No coverage report can be found类提示,说明路径配置错误或者报告未生成
    • 出现报告解析失败提示,检查工具版本兼容性:SonarQube 9.x及以上版本要求JaCoCo版本不低于0.8.7,版本差异过大会导致解析失败
    • 出现大量Class not found类匹配失败提示,说明源码路径配置错误、测试代码被错误排除,或者多模块项目未单独配置子模块报告路径,导致报告内的类信息和Sonar扫描到的源码无法对应。
  • 排除常见配置误区
    • 仅在Sonar仪表盘配置指标展示规则不会自动生成覆盖率数据,数据必须靠扫描阶段上传报告
    • 多模块项目不要只配置根目录路径,每个子模块的报告路径要单独声明
    • 社区版SonarQube不要安装来源不明的第三方覆盖率插件,插件冲突会导致覆盖率数据无法正常入库展示。

相关配置参考截图:
配置参考截图

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 17:39:18