vscode本身不采集覆盖率数据,必须由jest/vitest等框架生成lcov.info,再由coverage gutters等插件读取渲染;关键在于确保collectcoverage:true、reporter设为lcov、路径匹配且手动或任务自动刷新。

VSCode 本身不采集覆盖率数据,必须靠 Node 测试框架(如 Jest/Vitest)生成 lcov.info,再由插件读取渲染。自动采集的关键是让测试命令稳定输出标准报告,并与 Coverage Gutters 绑定刷新。
Jest 项目:确保 --coverage 参数生效且路径可被识别
很多人跑 npm test 看到终端有覆盖率数字,但 VSCode 侧边栏没颜色——问题通常出在 Jest 配置或命令参数上:
-
jest.config.js中必须显式设collectCoverage: true,不能只依赖package.json脚本里的--coverage;否则vscode-jest插件可能忽略覆盖率收集 - Node 14+ 环境下,
coverageProvider必须为"v8",写成"babel"会导致lcov.info里没有行级数据(DA 行为空) -
coverageDirectory建议固定为"coverage",避免写成"./out/coverage"这类非标准路径——Coverage Gutters 默认只查coverage/lcov.info - 运行命令必须带
--coverageReporters=lcov,否则 Jest 默认只生成 HTML 和 text-summary,不写lcov.info
Vitest 项目:配置 coverage.reporter 并禁用默认 JSON 输出
Vitest 默认输出 coverage/vitest-coverage.json,而 Coverage Gutters 不支持该格式,直接导致“no coverage data found”:
使用一条命令部署ProbeChain Rydberg测试网代理节点。自动注册为Agent(NodeType=1),免gas,支持macOS/Linux/Windows。触发词:/r
- 在
vitest.config.ts中必须配置:coverage: { reporter: ['lcov'] },不能只写reporter: 'lcov'(类型错误) - 若已存在
coverage/vitest-coverage.json,先手动删掉它,否则 Coverage Gutters 可能误读旧文件并报错 - 命令行运行时加
vitest --coverage reporter=lcov是临时验证手段,但长期应以 config 文件为准 - 注意
all: true选项会影响覆盖率统计范围——未被test文件 import 的模块不会被插桩,即使写了collectCoverageFrom
VSCode 任务绑定:让覆盖率刷新真正“自动”
按 Ctrl+Shift+P → “Coverage Gutters: Refresh” 手动刷一次很轻松,但开发中频繁切换文件后容易忘——真自动得靠 tasks.json:
- 在
.vscode/tasks.json中定义一个type: "shell"任务,命令为npm run test:coverage或vitest --coverage - 设
"isBackground": true并配"problemMatcher"(如"$tsc-watch"或自定义正则),否则 VSCode 不认为任务“完成”,不会触发后续动作 - 在
launch.json的preLaunchTask或postLaunchTask中引用该任务,即可在调试启动/结束时自动刷新覆盖率 - 别依赖右键菜单“Run Test”——它调用的是
vscode-jest或Test Explorer的内部逻辑,不会通知 Coverage Gutters
路径映射失败:lcov.info 里的 SF: 行必须和 VSCode 打开的文件路径一致
染色失败最隐蔽的原因:覆盖率文件记录的源码路径和编辑器里打开的文件路径对不上。比如:
-
lcov.info里写的是SF:/Users/me/project/src/index.ts,但你在 VSCode 里打开的是src/index.ts(相对路径) - TypeScript 项目中,
tsconfig.json的outDir若设为"dist",而include没包含.ts源文件,Jest/Vitest 就会基于编译后路径生成SF:,导致匹配失败 - 多根工作区(workspace folder)下,每个子项目需单独配置
coverage-gutters.coverageFileNames,否则插件只查第一个根目录 - 检查
lcov.info文件头部几行,确认SF:后的路径是否真实存在、是否拼写一致(大小写敏感!Linux/macOS 下尤其关键)
真正卡住人的从来不是插件装没装,而是 lcov.info 是否存在、路径是否对得上、以及 VSCode 有没有被通知去重读它——这三个点漏任何一个,侧边栏就永远是灰色。










