VS CODE 与 VISUAL STUDIO 原生覆盖率

活在你的编辑器里的覆盖率

读取 lcov、llvm-cov JSON、Cobertura、JaCoCo、Istanbul、SimpleCov、Clover、OpenCover、coverage.py、gcov、Go、Coveralls、SonarQube、GNATcoverage、Bullseye、Visual Studio、Xcode、VectorCAST、Testwell CTC++、TRACE32、EMMA、UCIS/UCDB、NCover 和 dotCover 跟踪文件,归一化为一个规范模型,确定性地合并多次运行,并直接在编辑器装订线中查看结果 —— 在 VS Code 中,以及各个版本的 Visual Studio 2022 和 2026 中。无需离开编辑器去打开单独的查看器。

下载 VSIX 阅读用户指南 探索功能

免费上手。Fucini Coverage Studio 在 14 天试用期内免费运行,全部功能解锁。试用结束后不会将您拒之门外,而是转入免费的 Community 层级 —— 除 MC/DC 外的每一项功能都可使用,其中少数几项带有宽松的每月用量上限。您可以随时升级以获得不受限制的完整功能集,也可以通过共享详细的使用遥测免费解锁全部功能。查看方案 →

接下来:所有这些覆盖率都将进入 Azure DevOps,以免费扩展的形式。 Azure DevOps 在构建上显示覆盖率,但仅限于其自身格式所及 —— 行,以及以百分比表示的分支。Fucini DevOps Studio 将显示 Coverage Studio 读取的全部内容:这 25 种格式中的每一种,适用于每种语言,带有 MC/DC、条件、综合分数和门槛,作为生成它的流水线上的 Coverage 选项卡。请关注新闻以获知首个版本的发布。

Covered/uncovered gutters with the Test Coverage panel openScreenshot pending — add assets/img/hero.png (see SCREENSHOTS.md).

当测试是 AI 写的

生成的测试套件看起来很周全。覆盖率告诉你它是否真的如此。

语言模型几秒钟就能写出一套测试,读起来也很有说服力。它无法告诉你的是,这些测试有没有触及真正重要的地方——行覆盖率同样无法告诉你,因为一个完全没有断言的测试,照样会点亮它经过的每一行。

◆ 看判定,而不只是看行

MC/DC 与分支覆盖率显示每个判定是否真的被执行,而不只是该行是否被走到。生成的测试通常只走顺利路径,把每个 if 的另一侧原封不动地留下——这读起来就是行覆盖 100%、分支覆盖 50%。这个差距就是结论。

◆ 从未被调用的函数

死代码检测会列出没有任何测试触及的函数。生成的测试会在标题里提到它们,却从未真正到达——在一次全绿的测试运行里,这是看不见的。

◆ 与你眼前的改动挂钩

差异覆盖率只衡量相对 git 基线发生变化的部分,于是"测试通过了"变成"你刚刚接受的代码已被测试"。无论是人写的还是助手写的,都一样适用。

这些都不能证明一个测试好——没有任何东西能证明。它逐行、精确地告诉你哪些代码从未运行过:这正是评审者记不住、助手也不会主动提起的部分。通过 Vitest、Jest 或 nyc 支持 TypeScript 和 JavaScript,并通过那些工具链本就生成的 tracefile 支持 C、C++、Java 和 Ruby。

有何不同

一个模型,覆盖所有格式,无需自定义查看器

◆ 二十五种输入格式

LCOV、llvm-cov JSON、Cobertura、JaCoCo、Istanbul/nyc、SimpleCov、Clover、OpenCover、coverage.py、gcov JSON 和纯文本、Go、Coveralls、SonarQube、GNATcoverage、Bullseye、Visual Studio、Xcode、VectorCAST、Testwell CTC++、TRACE32、EMMA、UCIS/UCDB、NCover 和 dotCover —— 自动检测并以确定性方式合并,同时记录来源信息。

◆ 原生 UI 输出

行、分支和函数装订线标记、概览标尺、资源管理器徽章,以及 Covered Files 视图。

◆ MC/DC 与区域覆盖

来自 llvm-cov 的 Modified Condition/Decision Coverage、区域覆盖率和 C++ 实例化覆盖率,悬停时可查看每个判定的详细分解。

◆ 安全加权评分

跨所有指标的单一加权调和平均值,权重与 IEC 61508 / ISO 26262 / DO-178C 等级对齐。

◆ 合规性门控

基于每个指标阈值以及 strict、whm、both 或 either 模式给出的 COMPLIANT / NON-COMPLIANT 判定。

◆ 差异覆盖率

仅将装饰限制在相对于 git 基准引用发生更改的行上 —— 非常适合精确审查某个 PR 覆盖了什么、遗漏了什么。

30 秒上手

  1. 安装扩展并打开您的项目。
  2. 运行测试 — 命令面板 → Fucini Coverage: Run Tests with Coverage。它能识别 vitest、jest、pytest、go、cargo、dotnet、maven、gradle、phpunit 和 ctest,在开启覆盖率的情况下运行测试,并加载它们写出的结果。已经有跟踪文件?Fucini Coverage: Pick Coverage File 会加载并记住它。
  3. 打开源文件 — 装订线显示哪些行运行过,状态栏显示文件的百分比,悬停显示每一行的命中次数,这次运行也会出现在 Coverage 视图和 VS Code 自带的 Test Coverage 面板中。此后每当跟踪文件变化,它都会自动重新加载。

需要 VS Code ≥ 1.88,或 Visual Studio 2022 或 2026 —— Community、Professional 或 Enterprise —— 以及项目已经生成的覆盖率跟踪文件。在 Visual Studio 2022 中,内置覆盖率仅限 Enterprise;Coverage Studio for Visual Studio 在 Community 和 Professional 上也能显示它,来自您的构建已经写出的文件。

与其他方案的比较

VS Code 本身和一些免费扩展也能显示覆盖率。下表列出截至 2026 年 9 月各自文档中所说明的功能;README 中未提及的内容,表中会如实注明,而不是凭猜测填写。

Fucini Coverage StudioVS Code 内置Coverage GuttersCode Coverage (markis)Gcov Viewer
覆盖率从哪里来25 种跟踪文件格式,以及 PIT 和 Stryker 变异测试报告报告覆盖率的测试扩展lcov 和 XML 文件lcov 文件GCC 的 .gcda 文件,通过 gcov
编辑器中未覆盖的行✓✓✓✓,也显示在 Problems 中✓
分支覆盖率(按分支)✓当测试扩展报告时未说明未说明未说明
MC/DC✓ (Pro)—未说明未说明未说明
合并多个跟踪文件,并显示每一行由哪个覆盖✓—支持多个文件未说明未说明
跟踪文件变化时重新加载✓显示最近一次测试运行✓未说明未说明
差异覆盖率、阈值和历史✓在差异编辑器中显示覆盖率未说明未说明未说明
HTML 报告生成,自行托管—预览现有报告未说明未说明
面向 AI 智能体的覆盖率:语言模型工具和 MCP 服务器✓未说明未说明未说明未说明
运行过某一行的测试,以及受您的更改影响的测试✓按测试的覆盖率(当测试扩展报告时)未说明未说明未说明
编辑器中的变异测试结果✓ (PIT, Stryker)未说明未说明未说明未说明
针对新代码的门槛✓未说明未说明未说明未说明
在 Visual Studio 和命令行中得到相同的数字✓—未说明未说明未说明

这并不是与 VS Code 自带视图二选一:每次加载也会发布到原生的 Test Coverage 面板,包括按测试筛选。如果这里有内容已经过时,请通过联系页面告诉我们。

支持的格式

格式典型文件
LCOVlcov.info, *.info
llvm-cov JSONllvm-cov export --format=json
Cobertura XMLcoverage.xml
JaCoCo XMLjacoco.xml
Istanbul / nyccoverage-final.json
SimpleCov (Ruby).resultset.json, coverage.json
Clover XMLclover.xml
OpenCover XMLcoverage.opencover.xml
coverage.py JSONcoverage.json (coverage json)
gcov / gcovr JSONgcov --json-format --stdout, gcovr --json
Go coverage profilecoverage.out
SonarQube generic<coverage version="1"> XML
GNATcoverage XML (Ada)gnatcov coverage --annotate=xml
BullseyeCoverage XMLcovxml output
Visual Studio.coveragexml (dotnet-coverage convert)
Coveralls JSONcoveralls.json
Xcode xccov JSONxcrun xccov view --report --json
查看所有功能 完整用户指南