VSCode不生成覆盖率报告,Coverage Gutters仅渲染外部工具生成的lcov.info或coverage.xml,且文件必须位于项目根目录或按配置指定路径,需手动刷新或配置任务触发。

VSCode 本身不生成覆盖率报告
别指望点一下“Run Test”就自动弹出绿色/红色行标记——VSCode 只是渲染器,不是执行器。所有覆盖率数据都必须由外部测试工具(jest、pytest、go test、dotnet test 等)显式生成,且格式和路径必须严格匹配插件预期。
Coverage Gutters 插件只认特定文件和路径
它默认只读 lcov.info 或 coverage.xml,而且必须出现在项目根目录(即 VSCode 打开的 workspaceFolder),不是 src/ 下、不是 tests/ 下、也不能是 coverage/coverage.xml ——除非你手动改配置:
-
"coverage-gutters.coverageFileNames": ["coverage/coverage.xml"](加到.vscode/settings.json) -
pytest --cov=. --cov-report=xml:coverage.xml生成的文件必须在根目录,否则插件找不到 -
jest --coverage默认输出coverage/lcov.info,得配"coverage-gutters.lcovname": "coverage/lcov.info" - Vitest 用户注意:
vitest --coverage reporter=lcov是必须的,vitest-coverage.json格式 Coverage Gutters 不支持
刷新不是自动的,必须手动触发或配任务
右键“Run Test”、测试面板里的 ▶ 按钮、甚至保存文件后自动跑测试,都不会通知 Coverage Gutters 重载数据:
- 最稳方式:测试跑完后按
Ctrl+Shift+P→ 输入Coverage Gutters: Refresh - 想省事?在
.vscode/tasks.json里定义 task,命令为pytest --cov=src --cov-report=xml:coverage.xml,并设"group": "build",再绑定快捷键 - Go 用户别用
Go: Toggle Test Coverage前没生成coverage.out,它不会报错,只会静默失效
路径映射错一个字符,染色就全失效
coverage.xml 里 <source>/home/user/project/src</source>,而你在 VSCode 里打开的是 ./src/main.py?不匹配。Windows + WSL 更容易翻车:
- 检查
coverage.xml中的<class name="xxx">对应的<source>路径,和编辑器里文件的完整路径是否完全一致(包括大小写、斜杠方向、开头有无./) - WSL 用户可用
sed -i 's|/mnt/c/|C:/|g' coverage.xml临时修正路径前缀 - Python 项目建议在
pyproject.toml里加[tool.coverage.run] relative_files = true,避免绝对路径依赖


















