Skip to content
| Marketplace
Sign in
Visual Studio Code>Testing>Fucini Coverage Studio ProNew to Visual Studio Code? Get it now.
Fucini Coverage Studio Pro

Fucini Coverage Studio Pro

Fucini Consulting

|
3 installs
| (1) | Free
Native VS Code coverage for lcov, llvm-cov JSON, Cobertura, JaCoCo, Istanbul/nyc and SimpleCov — gutters, the Test Coverage panel, CodeLens, MC/DC, diff coverage and self-hosted HTML reports. Free evaluation through 2026-12-31 — request a free activation key afterward, issued automatically.
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

Fucini Coverage Studio Pro

Native VS Code coverage for lcov, llvm-cov JSON, Cobertura, JaCoCo, Istanbul/nyc and SimpleCov. Gutters, the built-in Test Coverage panel, per-function CodeLens, branch & MC/DC hover, diff coverage, a composite safety-weighted score, and self-hosted HTML reports — wired straight into VS Code's own coverage UI. No separate viewer, no webview report to babysit.

By Mario Fucini — Fucini Consulting

Full documentation: User Guide · Notice · License · Contact


Evaluation release. This is a time-limited evaluation build: it runs free through 2026-12-31. After that, run Fucini Coverage: Show License / Activation and request a key — it's issued and applied automatically after a short evaluation questionnaire (just usage/wishes questions on a renewal) so we can improve the extension. If that ever fails, send the request code shown there via the Contact page or info@fucini.consulting instead.

Requirements

  • VS Code ≥ 1.88 (for the native Test Coverage API).
  • A coverage tracefile your project already produces — see Supported formats below.

Quick start

  1. Generate a coverage tracefile with your normal test workflow.
  2. Command Palette → Fucini Coverage: Load Coverage (or leave fuciniCoverage.watch.enabled on — the default — and it loads automatically once a matching file appears).
  3. Open a covered source file: covered lines get a green gutter with an inline hit count, uncovered lines get red, and the Test Coverage panel opens in the sidebar.

Supported formats

Format Typical file
LCOV lcov.info, *.info
llvm-cov JSON llvm-cov export --format=json output
Cobertura XML coverage.xml
JaCoCo XML jacoco.xml
Istanbul / nyc coverage-final.json
SimpleCov (Ruby) .resultset.json, coverage.json (simplecov-json gem)

Multiple tracefiles are merged deterministically into one run with recorded provenance, regardless of load order.

Features

Core

  • Native gutters, overview ruler, and Test Coverage panel — no custom webview.
  • Per-line statement, branch, function, region, MC/DC and C++ instantiation coverage (whatever the tracefile provides).
  • Multi-format ingestion and deterministic merge of several runs.
  • Path remapping — CI build-machine paths → your local workspace.
  • Diff coverage — decorate only lines changed vs a git base ref.
  • Explorer badges (line % per file/folder; colour = the composite score) and a run-wide status-bar item ($(dashboard) NN%), hover for a full metrics table.
  • Watch mode — auto-reload when a tracefile changes.

Composite score & compliance

  • A single Weighted Harmonic Mean score across lines, branches, functions, regions, MC/DC and instantiations, with weights aligned to IEC 61508 / ISO 26262 / DO-178C tiers (fuciniCoverage.whmWeights.*).
  • COMPLIANT / NON-COMPLIANT verdict driven by per-metric thresholds and a configurable fuciniCoverage.compliance.mode (strict, whm, both, either).

Excluding non-code lines

  • Comment-only and blank lines are auto-excluded from totals (handles a known llvm-cov/gcov quirk where a stray hit count lands on a comment).
  • Honors LCOV_EXCL_LINE / LCOV_EXCL_START / LCOV_EXCL_STOP markers.

In-editor analysis

  • Function CodeLens — per-function coverage %, click to jump to its first uncovered line.
  • Branch & MC/DC hover — per-arm taken/not-taken counts and per-decision condition/vector breakdowns; optional coloured MC/DC margin gutter.
  • Dead-code warnings — Problems-panel warning for functions with measurable lines and zero coverage.
  • Next/Previous Uncovered navigation commands.
  • Per-file status bar — the active editor's own coverage percentage.

Finding what to test next

  • Show Worst-Covered Files / Functions — Quick Pick ranked lowest-first.
  • Copy Uncovered Lines — Markdown summary of every gap, ready to paste into a PR description.

History & reporting

  • Optional local run history with a coverage trend (▲/▼) in the status bar, plus Compare Two History Runs and Compare with Last Run.
  • Generate Full HTML Report — a self-rendered, multi-page, per-directory report; Open HTML Report / Open Annotated Source for a single file.
  • Export Fucini JSON — the full normalised model.
  • Stale-coverage warning when a source file changed after its run.

Commands

Command Palette (Ctrl+Shift+P) → type Fucini Coverage:

Command What it does
Load Coverage Discover & load coverage for the workspace.
Pick Coverage File Manually choose a tracefile.
Show Loaded Coverage Files List the tracefiles in the active run.
Toggle Watch Turn auto-reload on/off.
Next / Previous Uncovered Jump between uncovered regions.
Open HTML Report Open the rendered static report.
Generate Full HTML Report Build the multi-page report.
Open Annotated Source / …to the Side Annotated coverage view for a file.
Toggle Annotated Source Swap between source and annotated view.
Show Worst-Covered Files / Functions Ranked lowest-first Quick Pick.
Copy Uncovered Lines Markdown summary of every uncovered range.
Compare Two History Runs / Compare with Last Run Per-file regression diff.
Check Coverage Thresholds Evaluate the compliance gates.
Export Fucini JSON Export the current run as Fucini JSON.
Show Status Bar Menu Open the quick-action menu.

CodeLens, branch/MC-DC hover, dead-code warnings, badges and the status-bar items all work automatically once coverage is loaded.

Settings

Configure in the Settings UI (search Fucini Coverage) or settings.json. Every option, with its default:

Discovery & loading

Setting Default What it does
fuciniCoverage.coverageFile.defaultLocation "" Base folder for discovery and file-pick dialogs (${workspaceFolder} supported).
fuciniCoverage.coverageFile.paths [] Tracefile(s) to load & merge, relative to the base folder. * globs recurse.
fuciniCoverage.watch.enabled true Reload coverage when a tracefile changes.

Colour scale & badges

Setting Default What it does
fuciniCoverage.colorScale.lowColor #8b1a1a Low end of the coverage gradient.
fuciniCoverage.colorScale.midColor #b8860b Pivot colour of the gradient.
fuciniCoverage.colorScale.highColor #228b22 High end (100%) of the gradient.
fuciniCoverage.colorScale.lowThreshold 80 % at which the badge steps low → mid.
fuciniCoverage.colorScale.highThreshold 90 % at which the badge steps mid → high (and gradient pivot).

Composite score (Weighted Harmonic Mean)

Setting Default What it does
fuciniCoverage.whmWeights.lines 1 Weight for line/statement coverage.
fuciniCoverage.whmWeights.functions 1 Weight for function coverage.
fuciniCoverage.whmWeights.regions 1.5 Weight for region coverage (llvm-cov).
fuciniCoverage.whmWeights.branches 2 Weight for branch coverage.
fuciniCoverage.whmWeights.mcdc 4 Weight for MC/DC coverage.
fuciniCoverage.whmWeights.instantiations 0.5 Weight for C++ template instantiations (llvm-cov).

Thresholds & compliance

Setting Default What it does
fuciniCoverage.threshold.statement 100 Minimum statement %. 0 disables the gate.
fuciniCoverage.threshold.branch 100 Minimum branch %.
fuciniCoverage.threshold.mcdc 100 Minimum MC/DC %.
fuciniCoverage.threshold.functions 100 Minimum function %.
fuciniCoverage.threshold.regions 100 Minimum region % (llvm-cov).
fuciniCoverage.threshold.instantiations 100 Minimum instantiation % (llvm-cov).
fuciniCoverage.threshold.weighted 100 Minimum composite score.
fuciniCoverage.compliance.mode strict strict | whm | both | either.

Diff, remap & reports

Setting Default What it does
fuciniCoverage.pathRemap [] Ordered {from,to} path rewrites.
fuciniCoverage.gitDiff.enabled false Restrict coverage to lines changed vs a base ref.
fuciniCoverage.gitDiff.baseRef origin/master Git base ref for diff coverage.
fuciniCoverage.externalHtmlReport.dir "" Read a pre-built llvm-cov show HTML dir for Annotated Source.
fuciniCoverage.htmlReport.outputDir "" Output dir for Generate Full HTML Report.

Display & analysis

Setting Default What it does
fuciniCoverage.mcdcGutter.enabled false Coloured MC/DC margin gutter.
fuciniCoverage.statusBar.enabled true Show run-wide & per-file status-bar items.
fuciniCoverage.statusBar.showLauncher true Always-available quick-menu launcher.
fuciniCoverage.codeLens.enabled true Per-function coverage CodeLens.
fuciniCoverage.deadCode.enabled true Warn on zero-coverage functions.
fuciniCoverage.staleWarning.enabled true Warn when a file changed after its run.
fuciniCoverage.excludeComments true Exclude comment/blank & LCOV_EXCL_* lines.
fuciniCoverage.excluded.includeInTotals false Count excluded lines toward totals.

History

Setting Default What it does
fuciniCoverage.history.enabled false Store runs locally for trend & comparison.
fuciniCoverage.history.retention 20 Max stored runs to keep.

Status-bar quick actions

All default false; enable to add the matching action to the quick menu: quickActions.compareWithLastRun, openAnnotatedSource, openAnnotatedSourceToSide, toggleAnnotatedSource, toggleWatch, worstCoveredFiles, worstCoveredFunctions, nextUncovered, previousUncovered, checkThresholds, copyUncoveredLines, compareHistoryRuns, exportJson.

Telemetry

Setting Default What it does
fuciniCoverage.telemetry.enabled true Anonymous usage telemetry, on by default for the evaluation trial — turn off at any time. Also gated by VS Code's own telemetry.telemetryLevel.

Updates

Setting Default What it does
fuciniCoverage.update.checkForUpdates true Periodically check both fucini.software and the VS Code Marketplace for a newer release, and offer to install whichever is newer.

Licensing

Setting Default What it does
fuciniCoverage.license.key "" Activation key for the evaluation pre-release. Paste the FCK1.… key you receive (see the evaluation note at the top). Bound to this machine/user.

See the User Guide for worked examples, path-remapping recipes, CI/CMake integration, and the full FUCINI_* error-code reference.

Privacy

Telemetry is controlled by the telemetry.enabled setting above. It defaults on for the evaluation trial and can be turned off at any time. See its package.json description and NOTICE.

Contact

Questions, bug reports, or alternate licensing terms — contact Fucini Consulting via the contact page or by email at info@fucini.consulting.

License

MIT with an attribution-in-release-notes condition — see LICENSE and NOTICE.

  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
© 2026 Microsoft