Skip to content
| Marketplace
Sign in
Visual Studio Code>Other>VSCode LCOVNew to Visual Studio Code? Get it now.
VSCode LCOV

VSCode LCOV

alexdima

|
18,784 installs
| (12) | Free
Renders line and branch coverage
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

VSCode LCOV

Renders Line and Branch coverage from lcov.info files interactively.

Live coverage info

Live info

Features

  • loosely coupled, just point it to a lcov.info file and you're in business!
  • can read multiple lcov.info files (e.g. one for the entire project, one for the last single test run)
  • generates a Coverage Report
  • supports watching certain files and executing a command (e.g. run test on file change)
  • supports JavaScript source maps

Coverage Report

  • Ctrl+T or Cmd+T then choose Show Coverage Report Coverage Report

Setting up

  • There is a complete simple example at https://github.com/alexandrudima/vscode-lcov/tree/master/examples/fizzbuzz
  • There are many tools that can generate lcov.info files
  • I have tested lcov.info files generated by istanbul e.g.istanbul cover --report lcovonly ./node_modules/mocha/bin/_mocha -- -R spec test.js
  • Configure the paths to your lcov.info files via the setting lcov.path. e.g:
"lcov.path": [
    "./.build/coverage/lcov.info",
    "./.build/coverage-single/lcov.info"
]
  • Live coverage via the setting lcov.watch. e.g. to execute a certain command any time a .js file is changed:
"lcov.watch": [{
    "pattern": "**/*.js",
    "command": "npm run test-coverage"
}]
  • Live coverage can be switched on via Ctrl+T or Cmd+T then choose Enable watchers
  • JavaScript sourcemaps via the setting lcov.sourceMaps.
"lcov.sourceMaps": true

Troubleshooting

  • View > Output and choose lcov.

Branch coverage: Configuration

"lcov.branchCoverage": "off" or "simple" (default) or "full"

Branch coverage: A single boolean expression

exports.example = function (a) {
	if (a) {
		console.log('1');
	}
}

The above source code contains a single branch block consisting of two branches.

Test Code if taken else taken "simple" "full"
//no calls ∅ ∅ image image
example(1) ✓ ∅ image image
example(0) ∅ ✓ image image
example(0), example(1) ✓ ✓ image image

Branch coverage: A binary boolean expression

exports.example = function (a, b) {
	if (a && b) {
		console.log('1');
	}
}

For the table columns:

  • IF = if taken
  • ELSE = else taken
  • A? = a evaluated
  • B? = b evaluated
Test Code IF ELSE A? B? "simple" "full"
//no calls ∅ ∅ ∅ ∅ image image
example(0,0) ∅ ✓ ✓ ∅ image image
example(0,1) ∅ ✓ ✓ ∅ image image
example(1,0) ∅ ✓ ✓ ✓ image image
example(1,1) ✓ ∅ ✓ ✓ image image
example(0,0), example(0,1) ∅ ✓ ✓ ∅ image image
example(0,0), example(1,0) ∅ ✓ ✓ ✓ image image
example(0,0), example(1,1) ✓ ✓ ✓ ✓ image image
example(0,1), example(1,0) ∅ ✓ ✓ ✓ image image
example(0,1), example(1,1) ✓ ✓ ✓ ✓ image image
example(1,0), example(1,1) ✓ ✓ ✓ ✓ image image
example(0,0), example(0,1), example(1,0) ∅ ✓ ✓ ✓ image image
example(0,0), example(0,1), example(1,1) ✓ ✓ ✓ ✓ image image
example(0,0), example(1,0), example(1,1) ✓ ✓ ✓ ✓ image image
example(0,1), example(1,0), example(1,1) ✓ ✓ ✓ ✓ image image

Branch coverage: A ternary boolean expression

exports.example = function (a, b, c) {
	if (a && b && c) {
		console.log('1');
	}
}

For the table columns:

  • IF = if taken
  • ELSE = else taken
  • A? = a evaluated
  • B? = b evaluated
  • C? = c evaluated
Test Code IF ELSE A? B? C? "full"
//no calls ∅ ∅ ∅ ∅ ∅ image
example(0,0,0) ∅ ✓ ✓ ∅ ∅ image
example(1,0,0) ∅ ✓ ✓ ✓ ∅ image
example(1,1,0) ∅ ✓ ✓ ✓ ✓ image
example(1,1,1) ✓ ∅ ✓ ✓ ✓ image
  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
© 2025 Microsoft