Fucini Coverage Studio for Visual StudioReads the coverage file your build already wrote and paints it on the code. Visual Studio 2022 and 2026 — Community, Professional and Enterprise alike. Your build, your CI job or your target already writes a coverage report: lcov, llvm-cov, gcov, Cobertura, JaCoCo, OpenCover, coverlet, TRACE32 — 25 formats. This extension opens it and shows you, in the editor, what your tests never ran. It does not use Visual Studio's own code coverage, which on Visual Studio 2022 is Enterprise-only: on Community and Professional it is the only coverage the IDE will show, and on Enterprise it reads the reports Visual Studio's own tool cannot. It is the Visual Studio edition of Coverage Studio for VS Code: the same reader,
so the same report gives the same numbers, to the digit, in both editors, and
the same
Every project of a folder in one window. Open a folder with several projects in it and the Coverage window holds them all: collapse the tree and you read every project's coverage on one screen, with the bar and the score beside each; open a folder and you are at its files, a file and you are on its lines.
On the command line too. The same reader as this extension, free, for the places an editor is not — a CI gate, a badge, an HTML report on a build server, an MCP server for an agent:
New in 2.2026.2: the Microsoft Testing Platform, and an excluded line is greyA test project on the Microsoft Testing Platform — xunit.v3 with
2.2026.0: your AI agent can askAn agent that writes tests could run them and read a percentage. It could not
ask what this window knows. Now it can: turn on In the editor
The Coverage windowUnder View → Other Windows → Coverage: every file with its lines, branches, functions, MC/DC and CRAP score, one score over all of them, sortable, the files no test loaded listed beneath as unmeasured. A menu on each row opens the file or its folder and copies its path. The status bar carries the run's score and the open file's, each opening the full card.
What it readslcov, llvm-cov, gcov and gcovr, Cobertura, JaCoCo, Istanbul, Clover, OpenCover
and coverlet, coverage.py, SimpleCov, Go, GNATcoverage, BullseyeCoverage,
Testwell CTC++, VectorCAST, TRACE32, xccov, Coveralls, SonarQube generic, EMMA,
NCover, dotCover, UCIS and Visual Studio's own Whatever wrote the file: C, C++, C#, Visual Basic, Java, Python, Go, Rust, Swift, Objective-C, Ada, PHP, Ruby, JavaScript and TypeScript. Settings, in 18 languagesThe gear in the Coverage window's toolbar opens every setting, grouped and
explained, written to this edition's user settings or the folder's
LicenceIncluded with every paid Coverage Studio plan — Pro, Pro Plus, Business and Enterprise — and covered by a 7-day pass for its week. A machine where Coverage Studio for VS Code is activated needs nothing more: the key is found by itself. Anywhere else, Tools → Coverage Studio → Licence… takes the subscription code from your activation e-mail. There is no free tier in Visual Studio; without a subscription no coverage is read. What a plan includes is the same in both editors: a feature the plan leaves out is left out here as in VS Code. Plans and prices: https://fucini.software/coverage-studio/pricing.html Two reports, one answerWhen two reports measure the same code on purpose — the same sources built by clang and by GCC, or the unit and the integration tests of one build — the newest no longer has to win. Right-click a file in the Coverage window and pick Choose Coverage Source..., or use Tools → Coverage Studio → Choose Coverage Source for This File...: each report with its own figures, then Combine them — agree (covered only where every report ran a line) or — union (covered where any did), for the file, its folder or a pattern. The lines the reports disagree on are teal, with what each report said; the row, the status bar and the cards say where the numbers come from.
Coverage after every test runRun your tests as you always do. Tools → Coverage Studio → Collect Coverage in
Test Explorer… puts one Since the last run, and against the gatesEvery load is compared with the one before it: a triangle in the margin on
each line that started or stopped running, the trend beside the score, and
Compare with Last Run for the files whose numbers moved. Turn on
A gate on new code. Where the next test goesUnder the tree, Risk hotspots: the functions where complex code meets
little coverage, worst first by CRAP score, each opening its file at the
function. And a second dropdown beside the sort: all files, files with gaps,
untested files, or the files changed since the last run. For a .NET report a
third one shows the run by namespace, class and method instead of by
folder, each with its own numbers, every method opening where it is written.
And a search box: a name, or a comparison such as Which tests ran this lineWhere the report says — coverage.py contexts, OpenCover, an lcov tracefile written per test, or a per-test run of Run Tests with Coverage — the hover names the tests that ran a line, the function's lens counts them, and Show Tests That Ran This Line… opens the one you pick where it is written. With the runner's results file beside the report — TRX or JUnit XML — a line that a failing test ran gets a red bar, and the hover names the failing tests. Run Tests Affected by My Changes… lists the tests that went through the code you just edited, and runs only those. Show Minimal Test Set… finds the fewest tests that still run every line the suite runs, and the tests that add no line of their own. Leaving code outExclude from Coverage on a row of the Coverage window, or on the file in
front, writes the ignore rule for you and the numbers move at once. For .NET,
An exclusion can say why — the text after the marker, or the attribute's
One test, with coverageCaret in a test, Run This Test with Coverage: that method, class or file runs with coverage and nothing else does — C#, VB, F#, JavaScript, TypeScript, Python, Go and Rust, read off the text, no language service needed. Would a test notice?Run Mutation Tests Here mutates the function the caret is in — Stryker.NET for C#, StrykerJS for JavaScript and TypeScript, PIT for Java — and loads the report beside the coverage on screen: a minute for one function, where a project's mutation run takes an hour. The app itself, with coverageRun App with Coverage… starts the solution's .NET app under Microsoft's
Coverage after every saveTurn on Reports, exports and a badgeShow Annotated Source opens the file as a page — every line in its colour,
every finding beside it — that scrolls with the editor. Open HTML Report is
the run on one page in your browser; Generate Full HTML Report an index per
folder and a page per file, for the wiki or the build server. Export Coverage
Report… writes CSV per file or per function, Markdown, LCOV, Cobertura, SARIF
for the uncovered lines, an SVG badge or Fucini's own JSON. Generate Coverage
Badge keeps the badge in the repository, by itself after every load with
.NET, without ceremonyDesigner files, Nothing hooks Test Explorer, so Visual Studio 2026 and Microsoft.Testing.Platform work as they are: the collector writes the report, the extension reads it. Not in this editionThe Test Coverage panel is a VS Code API, and Solution Explorer cannot show badges. Links
|




