Skip to content
| Marketplace
Sign in
Visual Studio Code>Testing>EyeCovNew to Visual Studio Code? Get it now.
EyeCov

EyeCov

Eyecov

| (0) | Free
Display code coverage in VS Code editor
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

EyeCov

eyecov-logo-w-margin

Coverage in your editor. Coverage for your AI tools.

EyeCov is built around a shared runtime coverage model. External coverage artifacts are parsed into normalized per-file records that power both the editor and MCP tools.

EyeCov reads coverage artifacts (PHPUnit HTML, Cobertura, Clover, LCOV, etc.) and turns them into a runtime coverage model used by:

  • the editor
  • developer tooling
  • AI assistants via MCP

Works in VS Code, Cursor, and Antigravity.

Coverage report CLI

For parser smoke tests and report verification during development:

npm run compile
npm run report -- --path coverage/lcov.info

This CLI is dev-only in v1 and reuses the same parser stack as the extension. See docs/COVERAGE_REPORT_CLI.md for usage, flags, exit codes, and verification behavior.

Documentation map

  • Coverage Model — the canonical data flow and shared runtime model
  • Coverage Architecture — resolver, adapters, runtime, cache, freshness
  • Coverage Features — user-visible behavior and supported features
  • Coverage Report CLI — how to run and verify coverage artifacts
  • MCP Server — tool behavior and response shapes
  • Coverage Roadmap — done, planned, and possible future work
  • Testing — unit tests, extension-host tests, and CI
  • PHPUnit HTML Format
  • PHPUnit 12 HTML Format

Coverage pipeline

EyeCov turns external coverage artifacts into a normalized runtime model:

coverage artifact
    ↓ parse
adapter
    ↓ normalize
coverage record
    ↓ aggregate / cache
editor + MCP consumers

See docs/COVERAGE_MODEL.md for the canonical model.

Coverage in the editor

Line highlighting (default)

Coverage appears directly in the editor.

  • covered lines (when the format supplies it, shaded by test size: small / medium / large)
  • uncovered lines
  • uncoverable and warning lines

EyeCov line coverage in the editor

Gutter markers

Enable gutter icons for fast scanning:

  • Cmd+Shift+P → EyeCov: Toggle Gutter Coverage, or set eyecov.showGutterCoverage to true

Track coverage through edits (default on)

When you insert or delete lines, coverage highlighting stays aligned. Turn off with EyeCov: Toggle Track Coverage Through Edits or set eyecov.trackCoverageThroughEdits to false. See docs/COVERAGE_FEATURES.md.

Status bar

The current file coverage is shown in the editor status bar (e.g. 49.0% (25/51)). Click to toggle coverage display.

When background prewarm is enabled, EyeCov also shows a temporary indexing spinner such as $(sync~spin) EyeCov: Indexing (12/240)... while it builds or refreshes the on-disk cache.


Supported coverage formats

Currently supported (resolved in order):

  • PHPUnit HTML — default path coverage-html/
  • Cobertura XML — default path coverage/cobertura-coverage.xml
  • Clover XML — default path coverage/clover.xml
  • LCOV — default path coverage/lcov.info
  • Istanbul/NYC JSON — default path coverage/coverage-final.json
  • JaCoCo XML — default paths target/site/jacoco/jacoco.xml, build/reports/jacoco/test/jacocoTestReport.xml
  • Go coverprofile — default path coverage.out
  • coverage.py JSON — default path coverage.json
  • OpenCover XML — supported via config

Example generators:

phpunit --coverage-html coverage-html
phpunit --coverage-cobertura coverage/cobertura-coverage.xml
phpunit --coverage-clover coverage/clover.xml
vitest run --coverage
nyc --reporter=json npm test
go test -coverprofile=coverage.out ./...
coverage json

Use an optional config file to set formats and paths.


AI coverage via MCP

EyeCov exposes coverage through a built-in MCP server. Available tools:

  • coverage_file — file-level coverage, uncovered lines
  • coverage_line_tests — which tests cover given line(s) (PHPUnit HTML)
  • coverage_path — aggregate coverage for a path (optional worstFilesLimit, zeroCoverageFilesLimit, coveredLinesCutoff; can return zeroCoverageFiles)
  • coverage_project — project-level coverage (optional same limits; can return zeroCoverageFiles)
  • coverage_test_priority — where to add tests first

When the background cache is mid-warm, cache-backed aggregate tools can return cacheState: "partial" instead of pretending the cache is complete.

This lets AI tools answer: Which files need tests most? Which tests cover this line? What has the lowest coverage?

When the extension is installed, EyeCov Built-in MCP Server appears in your editor’s MCP list. Enable it there.

To configure the server manually (e.g. in .cursor/mcp.json):

{
  "mcpServers": {
    "eyecov": {
      "command": "node",
      "args": ["/path/to/extension/out/mcp/server.js"]
    }
  }
}

The extension supplies workspace roots when it runs the server. Optional: add "env": { "EYECOV_WORKSPACE_ROOTS": "/path/to/workspace" } for standalone runs only.

Terminal-style eyecov branding uses this ANSI text logo:

"\033[48;2;0;0;0m\033[38;2;90;12;163m ▮\033[38;2;124;58;237m▮\033[38;2;159;103;255m▮\033[38;2;255;255;255meyecov \033[0m\n"

Configuration file (optional)

Put .eyecov.json or eyecov.json in your workspace root:

{
  "formats": [
    { "type": "phpunit-html", "path": "coverage-html" },
    { "type": "cobertura", "path": "coverage/cobertura-coverage.xml" },
    { "type": "clover", "path": "coverage/clover.xml" },
    { "type": "lcov", "path": "coverage/lcov.info" },
    { "type": "istanbul-json", "path": "coverage/coverage-final.json" },
    { "type": "jacoco", "path": "target/site/jacoco/jacoco.xml" },
    {
      "type": "jacoco",
      "path": "build/reports/jacoco/test/jacocoTestReport.xml"
    },
    { "type": "go-coverprofile", "path": "coverage.out" },
    { "type": "coveragepy-json", "path": "coverage.json" },
    { "type": "opencover", "path": "TestResults/coverage.xml" }
  ]
}

Formats are tried in order; the first with coverage for the file is used. Paths are relative to the workspace root.


Extension settings

  • eyecov.debug — When true, write debug logs to View → Output → EyeCov (including which adapters were detected and which resolved each file). Default: false
  • eyecov.showCoverageOnOpen — Show coverage when files are opened. Default: true
  • eyecov.showUncovered — Highlight uncovered lines. Default: true
  • eyecov.showCovered — Highlight covered lines. Default: true
  • eyecov.showLineCoverage — Background color on lines. Default: true
  • eyecov.showGutterCoverage — Gutter icons. Default: true
  • eyecov.prewarmCoverageCache — Build and reuse .eyecov/coverage-cache.json in the background for faster aggregate MCP queries. Default: true
  • eyecov.trackCoverageThroughEdits — Keep coverage aligned through simple line insertions/deletions. Default: true

Commands

  • EyeCov: Show Coverage — Enable coverage display
  • EyeCov: Hide Coverage — Disable coverage display
  • EyeCov: Toggle Coverage — Toggle coverage on/off
  • EyeCov: Re-read Coverage — Rebuild coverage state and re-apply it to visible editors
  • EyeCov: Show Coverage Info — Coverage details for the current file
  • EyeCov: Toggle Gutter Coverage — Toggle gutter icons (Cmd+Shift+P)
  • EyeCov: Toggle Line Coverage — Toggle line highlighting (Cmd+Shift+P)

Requirements

  • VS Code 1.105.0+ or a compatible editor (Cursor, Antigravity)
  • Coverage from at least one supported format in the workspace
  • Node.js 22+ for building and development (see .nvmrc)

Debugging

  1. Set eyecov.debug to true.
  2. Open View → Output → EyeCov.
  3. Open a file that has coverage; logs will show adapters detected at startup and, per file, which adapter was tried and which resolved (with artifact path when available).

Installation

From VSIX

npm install
npm run compile
npm run package
# Install the generated .vsix via Extensions → ... → Install from VSIX...

Development

npm install
npm run compile

npm run compile runs ESLint, Prettier check, TypeScript, and the build. Press F5 to launch the Extension Development Host.

Other commands: npm run lint, npm run lint:fix, npm run format, npm run format:check, npm test, npm run test:coverage, npm run test:extension. See CONTRIBUTING.md for the full workflow.


License

MIT

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