This project implements a Code Coverage Language Server that reads LCOV coverage reports and exposes the results through the Language Server Protocol.
Coverage information is surfaced using the
textDocument/documentColor
request, allowing editors to visually highlight covered and uncovered lines.
It also includes a Zed extension that integrates the language server with Zed.
The extension may be installed from source, by cloning fargies/coverage-lsp repository and selecting the zed-coverage-lsp directory from "Install Dev Extension" menu.
If not already found in path, the extension will download and install latest coverage-lsp server from GitHub's project releases.
To install your own version of coverage-lsp, simply use:
cargo install coverage-lspThe server can be configured through the following settings.
CSS color used to highlight covered lines.
- Accepts any valid CSS Color Level 4 value.
- Set to
nullto disable highlighting for covered lines. - Parsed using
csscolorparser. - Default:
rgba(0%,100%,0%,10%)
CSS color used to highlight uncovered lines.
- Accepts any valid CSS Color Level 4 value.
- Set to
nullto disable highlighting for uncovered lines. - Parsed using
csscolorparser. - Default:
rgba(100%,0%,0%,10%)
Interval used to check whether the coverage file has changed.
- Parsed using
humantime-serde. - Example values:
3s,20s,1m - Default:
3s
Path to the LCOV coverage file to load.
- If not specified, the server searches the workspace and uses the first
*.infofile it finds.
{
"lsp": {
"coverage-lsp": {
"settings": {
"hit": null,
"miss": "#FFAA0020",
"interval": "20s",
"lcov_file": "./build/lcov.info"
}
}
}
}How coverage information is displayed in Zed depends on the LSP Document
Colors setting:

The language server provides the coverage colors, but the way those colors are rendered ultimately depends on your Zed theme. Here are some examples of the different visual styles you can achieve.
# remove downloaded releases
rm -rf ~/.local/share/zed/extensions/work/coverage-lsp/*
# Clone and build this project
git clone https://github.com/fargies/coverage-lsp.git && cd coverage-lsp
cargo build
# Add `coverage-lsp` to your path
export PATH=$PATH:$(path)/target/debug
# Start `zeditor`
zeditor
# From the "Install Dev Extension" menu select `zed-coverage-lsp` directory
# Don't forget to "Rebuild" the extension and/or "Restart" the language-server to
# reflect changes

