Skip to content
| Marketplace
Sign in
Visual Studio Code>Linters>ProofNew to Visual Studio Code? Get it now.
Proof

Proof

Mert Demir

|
2 installs
| (0) | Free
Runs the proof CLI (currently proof-java) and renders its verdict: inline coverage gutter, per-line test evidence, and mutation findings.
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

Proof for VS Code

See which of your passing tests actually prove anything, inline as you code.

Coverage tells you a line executed. It doesn't tell you that anything checked what that line did. This extension runs proof-java against your workspace and shows its verdict directly in the editor: which lines are covered, which of the tests covering them have no real assertion, and, when you ask for it, which mutations nothing catches.

Works in VS Code, Cursor, and Windsurf.

Coverage gutter and Explorer badges

Why

A green test suite and a high coverage percentage both quietly assume the same thing: that the code checking your program actually works. It's common for that assumption to be wrong: a test with no assertion, a test that compares a constant to itself, a test whose only checks sit inside a try block that swallows the exception. All three run green. All three raise your coverage number. None of them would catch a real bug.

Proof reads the evidence your build already produces (a JaCoCo report, your git diff, and optionally a PIT mutation run) and turns it into specific findings, shown where you're already looking: the editor gutter, a hover, the Problems panel.

Features

  • Coverage gutter: inline, colored by line. Covered, partially covered, uncovered, excluded, or oracleless (covered, but by tests with no real assertion), each with its own distinct color, because "covered" and "meaningfully tested" are not the same claim.
  • Explorer badges: coverage percentage on every file and folder in the file tree, rolled up from the same data as the gutter.
  • Line → Tests: for the file you have open, which tests cover a given line, and whether each one has a real oracle. In a test file, the same view runs in reverse, showing which production lines this test actually exercises.
  • Test Quality view: every finding (no assertion, tautological assertion, swallowed exception, null-check-only, and more), filterable and groupable by rule or by file, with a plain-language explanation for each.
  • Mutation testing: run PIT against a single class (usually a few seconds) or a whole module (minutes, behind a confirmation, since it can run long). Results: class → method → mutant → the tests that failed to kill it, with live progress.
  • Problems panel integration: every finding also shows up as a standard VS Code diagnostic, so it participates in the usual navigation/quick-fix flow.
  • HTML export: a single, offline HTML report of the current results, for sharing outside the editor.
  • Every number comes from the CLI's own JSON. The extension never parses coverage XML, runs git, or computes a percentage itself.

Screenshots

Line → Tests: which tests cover this line, and whether each one has a real oracle (a test file open shows the reverse: which lines this test actually exercises).

Line → Tests view

Test Quality: every finding, filterable and groupable by rule or file.

Test Quality view

Mutation: class → method → mutant → the tests that failed to kill it, with live progress on a run.

Mutation view

Requirements

  • A Maven or Gradle project with a JaCoCo report. Quick Scan finds either target/site/jacoco/jacoco.xml (Maven) or build/reports/jacoco/test/jacocoTestReport.xml (Gradle) automatically. Run Tests, Deep Scan, and Mutation Testing all work for a plain-Java Gradle project too, provided it has a committed Gradle Wrapper (gradlew/gradlew.bat) - this extension only ever runs a project's own pinned wrapper, never a bare gradle on PATH. See proof-java's own README for the full build-tool support matrix (including Android/Kotlin gaps).
  • proof-java.jar: the CLI this extension runs. See proof-java for what it does and how it works. The extension can fetch the jar for you (see Usage below); you never need to clone or build that repository yourself just to use this extension.

Installation

Search for Proof in the VS Code Extensions view, or install it from the Marketplace listing.

To build it from source instead, see CONTRIBUTING.md.

Usage

  1. Open your project in VS Code and open the Proof icon in the Activity Bar. If proof-java.jar isn't already on your machine, run Proof: Download proof-java.jar (Command Palette or the Run panel). It fetches the latest release from proof-java, verifies it against the published checksum, and installs it somewhere the extension already knows to look (no setting to configure). Already have a jar elsewhere? Point proof.jarPath at it instead.
  2. Run Quick Scan for coverage and oracle findings, Deep Scan to also collect per-test line evidence, or right-click a file and choose Mutation Test This Class for mutation results on just that class.
  3. Click through the Coverage / Test Quality / Line → Tests / Mutation views, or just read the gutter and hover over a line.

Configuration

The most commonly changed settings (search proof. in Settings for the full list):

Setting Default Purpose
proof.jarPath (auto-detected) Path to proof-java.jar, if it isn't in one of the default locations
proof.diffMode uncommitted What counts as "changed": no-vcs, uncommitted, or base
proof.baseRef (none) The ref to diff against when diffMode is base
proof.badgeMetric sonar-compatible Which of the three coverage modes drives the gutter/badges
proof.show.oraclelessLines true Highlight covered-but-unasserted lines separately
proof.mutationTimeout 300 Per-module time budget (seconds) for mutation testing

Documentation

  • CONTRIBUTING.md: building, running, and testing the extension itself.
  • proof-java: the CLI this extension runs, and what each finding actually means.
  • skills/proof-java: if you use an AI coding agent to write or repair tests, this is a skill for it. It runs proof-java, reads the verdict JSON, and acts on the findings in a loop instead of guessing whether a test is good.

License

Apache-2.0, the same license as proof-java.

  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
  • Your Privacy Choices
  • Consumer Health Privacy
© 2026 Microsoft