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

如何合并多项目lcov.info文件生成统一覆盖率报告并上传至SonarQube?

问题

仓库包含两个项目:

  • 主项目server(位于根目录)
  • 辅助项目aux/sidecar(位于aux/sidecar文件夹)

通过jest --coverage命令分别生成覆盖率文件:

  • 根目录:coverage/lcov.info
  • 辅助项目:aux/sidecar/coverage/lcov.info

需要将这两个文件合并为单个覆盖率报告,上传至SonarQube查看仓库整体的统一覆盖率。尝试使用lcov-result-merger工具,编写的两个脚本均未达到预期:

  1. 第一个脚本:
"merge-coverage": "lcov-result-merger 'coverage/lcov.info' 'aux/sidecar/coverage/lcov.info' coverage/lcov.info"

试图将合并结果写入根项目的lcov.info,但第三个参数被忽略。

  1. 第二个脚本:
"merge-coverage": "lcov-result-merger './**/**/coverage/lcov.info' 'coverage/lcov.info'"

使用通配符匹配文件后,SonarQube仍显示0%覆盖率。

寻求脚本修复方案或其他可行工具。

解决方案

修复lcov-result-merger脚本问题

针对第一个脚本的修复:参数传递错误

lcov-result-merger的输出文件需要通过重定向指定,而非作为位置参数传入。修改脚本如下:

"merge-coverage": "lcov-result-merger coverage/lcov.info aux/sidecar/coverage/lcov.info > coverage/combined-lcov.info"
  • 移除文件名的单引号,避免shell解析异常
  • 用>将合并结果重定向到新文件coverage/combined-lcov.info,不直接覆盖原文件,防止测试与合并流程冲突

针对第二个脚本的修复:路径匹配与SonarQube兼容

通配符./**/**/coverage/lcov.info可能匹配冗余文件,或导致合并后的文件路径与SonarQube扫描路径不匹配。调整为明确路径并生成独立合并文件:

"merge-coverage": "lcov-result-merger ./coverage/lcov.info ./aux/sidecar/coverage/lcov.info > coverage/combined-lcov.info"

之后在SonarQube配置中指定coverage/combined-lcov.info为覆盖率报告文件,确保工具能正确关联项目文件路径。

替代工具方案

如果lcov-result-merger仍存在问题,可尝试以下工具:

1. nyc(推荐)

nyc原生支持覆盖率报告合并,步骤如下:

  • 在两个项目的jest配置中,将覆盖率报告格式设为json
  • 运行测试生成json格式的覆盖率报告
  • 使用nyc merge命令合并并生成lcov报告:
"merge-coverage": "nyc merge ./coverage/coverage-final.json ./aux/sidecar/coverage/coverage-final.json ./coverage/combined-coverage.json && nyc report --reporter=lcov --report-dir=coverage --temp-directory=./coverage"

该命令先合并json报告,再生成标准lcov格式的合并报告。

2. lcov-tools

使用lcov-tools的merge命令,参数格式更直观:

"merge-coverage": "lcov-tools merge -o coverage/combined-lcov.info coverage/lcov.info aux/sidecar/coverage/lcov.info"

通过-o指定输出文件路径,后续传入需要合并的文件列表即可。

内容的提问来源于stack exchange,提问作者Leonardo Alves Machado

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 17:10:14