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

如何解决Scala项目SonarQube代码覆盖率报告读取失败问题

错误原因

你的报错核心是两个配置问题:

  1. sonar.scala.coverage.reportPaths配置指向了目录而非具体的覆盖率报告文件,SonarQube的Scala覆盖率传感器需要读取明确的报告文件路径
  2. 执行Sonar扫描前没有提前生成对应格式的覆盖率报告,导致目标路径不存在
修复步骤
  • 优先选择Scoverage作为Scala项目覆盖率工具(SonarQube 7.9对Scala+Jacoco的兼容性较差),首先在pom.xml中添加scoverage-maven-plugin插件配置,确保可以生成scoverage格式的xml报告
  • 修正pom中的Sonar相关配置:
    把原配置
    <sonar.scala.coverage.reportPaths>${project.basedir}/ds-rfds/target</sonar.scala.coverage.reportPaths>
    
    改为具体的报告文件路径,单模块项目参考配置如下:
    <sonar.scala.coverage.reportPaths>${project.basedir}/target/scoverage.xml</sonar.scala.coverage.reportPaths>
    
    多模块项目需调整为对应子模块的报告路径,避免多写多余的目录层级
  • 调整TeamCity的构建命令,确保先执行测试和覆盖率报告生成,再执行Sonar扫描,调整后的命令参考:
    scoverage:report org.jacoco:jacoco-maven-plugin:prepare-agent -U sonar:sonar
    
  • 如需继续使用Jacoco生成覆盖率,删除sonar.scala.coverage.reportPaths配置,新增Jacoco报告路径配置:
    <sonar.coverage.jacoco.xmlReportPaths>${project.basedir}/target/site/jacoco/jacoco.xml</sonar.coverage.jacoco.xmlReportPaths>
    
    同时调整构建命令,先执行Jacoco报告生成:
    org.jacoco:jacoco-maven-plugin:prepare-agent test jacoco:report -U sonar:sonar
    
  • 可在TeamCity构建步骤中新增临时的目录检查命令,执行ls -la target/确认报告文件实际生成路径,避免相对路径配置错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 23:27:01