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

Jest覆盖率正常但Sonar扫描显示0%覆盖率问题咨询

Jest本地覆盖率正常但Sonar扫描显示覆盖率为0的排查方案

按优先级从高到低排查以下问题即可解决:

  • 首先确认Jest确实生成了符合要求的lcov报告
    打开jest.config.js检查coverageReporters配置,必须包含lcov项,建议配置为coverageReporters: ["lcov", "text", "text-summary"];同时确认coverageDirectory配置值为coverage,和sonar配置里的报告路径匹配。跑jest命令时必须携带--coverage参数,否则只会在终端输出覆盖率结果,不会生成lcov.info文件,Sonar读不到文件自然显示0。
  • 检查lcov.info内的文件路径匹配性
    打开生成的coverage/lcov.info文件,查看每个记录开头的SF:字段,该字段是源码文件的相对路径,必须和sonar-project.properties里sonar.sources配置的目录前缀完全匹配。比如你配置sonar.sources=src,那SF字段应该是类似SF:src/utils/index.js的格式,如果多了项目根目录前缀、或者路径大小写和实际文件不一致(大小写敏感系统下会触发该问题),Sonar无法把覆盖率数据和实际源码文件关联,就会显示0覆盖率。
  • 修正冗余/错误的Sonar配置
    你当前配置里存在两个问题:
    1. package.json里的sonar56x: true是适配SonarQube 5.6及更早版本的开关,如果你使用的Sonar版本高于6.x,必须把该值改为false,否则生成的测试报告格式不符合新版Sonar解析规则
    2. sonar-project.properties里同时配置了sonar.testExecutionReportPaths和sonar.genericcoverage.unitTestReportPaths属于重复冲突配置,后者是旧版Sonar通用覆盖率插件的配置项,新版SonarJS不需要,直接删除sonar.genericcoverage.unitTestReportPaths=coverage/test-report.xml这行即可。
  • 校验Sonar基础路径配置
    确认sonar-project.properties里正确配置了源码和测试文件路径:
    # 业务源码目录,根据你的实际项目结构调整
    sonar.sources=src
    # 测试用例目录,根据你的实际项目结构调整
    sonar.tests=__tests__
    # 如果使用了TS/JSX,要补全对应后缀
    sonar.javascript.file.suffixes=.js,.jsx,.ts,.tsx
    sonar.typescript.file.suffixes=.ts,.tsx
    
  • 确认执行顺序正确
    必须先执行jest命令完成测试、生成完整的coverage目录下的所有报告文件,再执行sonar-scanner启动扫描,顺序颠倒会导致Sonar读取不到最新生成的报告文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 03:33:34