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

SonarQube无法显示测试结果:karma报告路径匹配问题求助

解决SonarQube无法显示Angular项目测试结果的问题

项目背景

  • 项目包含两个核心模块:
    • AWS/Lambda:存储所有AWS Lambda Python代码
    • Web:存储Angular前端项目
  • CI流水线已集成SonarQube扫描任务,目前能正常获取代码扫描结果和覆盖率数据,但测试结果无法在SonarQube中显示。

问题根源

经排查,sonar-unit-test-report.xml生成的测试文件路径缺少Web/前缀,导致SonarQube无法匹配到对应源码文件:

  • 当前错误路径示例:
    <testExecutions version="1">
      <file path="src/app/xxx/xxx.component.spec.ts">
        <testCase name="xxx should create" duration="588"/>
      </file>
    </testExecutions>
    
  • 正确路径需包含Web/前缀:
    <testExecutions version="1">
      <file path="Web/src/app/xxx/xxx.component.spec.ts">
        <testCase name="xxx should create" duration="588"/>
      </file>
    </testExecutions>
    

解决方案

方案1:修改karma.conf.js,生成带前缀的测试报告路径

在karma.conf.js的sonarQubeUnitReporter配置中添加prefix属性,指定路径前缀为Web/:

sonarQubeUnitReporter: {
  sonarQubeVersion: 'LATEST',
  outputFile: 'unit-test-results/sonar-unit-test-report.xml',
  useBrowserName: false,
  overrideTestDescription: true,
  prefix: 'Web/' // 新增此配置,自动给路径添加Web前缀
}

重新运行单元测试后,生成的XML文件路径会自动带上Web/前缀,SonarQube就能正常匹配并显示测试结果。

方案2:修改SonarQube Prepare任务配置,添加路径前缀映射

如果不想修改karma配置,可在SonarQube Prepare任务的extraProperties中添加sonar.pathPrefix属性,让SonarQube自动为测试报告中的路径添加前缀:

extraProperties: |
  # 其他原有配置保持不变
  sonar.pathPrefix=Web/

该配置会让SonarQube在解析测试报告路径时,自动加上Web/前缀,与源码路径匹配。

验证

修改完成后重新触发CI流水线,检查生成的sonar-unit-test-report.xml文件路径是否包含Web/前缀,同时查看SonarQube控制台,确认测试结果已正常显示。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 09:15:33