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

JS项目使用GitHub Actions跑SonarCloud覆盖率为0、LCOV未找到问题求助

问题排查与解决方案

根本原因

当前工作流仅执行了Sonar扫描步骤,未前置执行单测命令生成LCOV覆盖率文件,导致Sonar扫描时找不到指定路径下的coverage/lcov.info文件,最终覆盖率显示为0。

分步排查修复

  • 补充工作流的测试执行步骤
    SonarCloud本身不会主动执行单测生成覆盖率报告,需要你在扫描前手动完成依赖安装、单测执行的流程,修改后的工作流配置参考:
    sonarcloud:
      runs-on: ubuntu-latest
      steps:
        - uses: actions/checkout@v2
          with:
            fetch-depth: 0
        - name: Setup Node.js
          uses: actions/setup-node@v3
          with:
            node-version: 18 # 替换为你的项目实际使用的Node.js版本
            cache: 'npm' # 用yarn/pnpm的话对应修改即可
        - name: 安装项目依赖
          run: npm ci
        - name: 执行单测生成覆盖率报告
          run: npm run test:coverage
          # 请确保package.json的scripts中已配置test:coverage命令,示例:
          # "test:coverage": "jest --coverage" (jest场景)
          # "test:coverage": "vitest run --coverage" (vitest场景)
        - name: 验证覆盖率文件生成
          run: ls -la coverage/lcov.info
        - name: SonarCloud Scan
          uses: sonarsource/sonarcloud-github-action@master
          env:
            GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
            SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
    
  • 核对LCOV文件路径配置
    1. 本地执行npm run test:coverage,确认项目根目录下是否生成coverage/lcov.info文件
    2. 核对sonar-project.properties中sonar.javascript.lcov.reportPaths的路径和实际生成路径完全一致,注意Linux系统大小写敏感,不要写错路径大小写
  • 若为monorepo项目,需补充所有子包的LCOV路径,多个路径用英文逗号分隔,示例:
    sonar.javascript.lcov.reportPaths=packages/package-a/coverage/lcov.info,packages/package-b/coverage/lcov.info
    

验证方式

推送修改后的工作流配置后,查看GitHub Actions执行日志,若验证覆盖率文件生成步骤正常打印文件信息,Sonar扫描步骤不再抛出找不到LCOV文件的提示,即配置生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 15:06:07