Renders Line and Branch coverage from lcov.info
files interactively.
- 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
- 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 byistanbul
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 settinglcov.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
orCmd+T
then chooseEnable watchers
- JavaScript sourcemaps via the setting
lcov.sourceMaps
.
"lcov.sourceMaps": true
View
>Output
and chooselcov
.
"lcov.branchCoverage": "off" or "simple" (default) or "full"
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 |
∅ | ∅ | ||
example(1) |
✓ | ∅ | ||
example(0) |
∅ | ✓ | ||
example(0), example(1) |
✓ | ✓ |
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
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 |
∅ | ∅ | ∅ | ∅ | ∅ | |
example(0,0,0) |
∅ | ✓ | ✓ | ∅ | ∅ | |
example(1,0,0) |
∅ | ✓ | ✓ | ✓ | ∅ | |
example(1,1,0) |
∅ | ✓ | ✓ | ✓ | ✓ | |
example(1,1,1) |
✓ | ∅ | ✓ | ✓ | ✓ |