Skip to content

Repository files navigation

Code Coverage Language Server

Crates.io CI License

GitHub Sponsors Buy Me A Coffee

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.

Zed-editor extension

Installation

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-lsp

Configuration

The server can be configured through the following settings.

hit

CSS color used to highlight covered lines.

  • Accepts any valid CSS Color Level 4 value.
  • Set to null to disable highlighting for covered lines.
  • Parsed using csscolorparser.
  • Default: rgba(0%,100%,0%,10%)

miss

CSS color used to highlight uncovered lines.

  • Accepts any valid CSS Color Level 4 value.
  • Set to null to disable highlighting for uncovered lines.
  • Parsed using csscolorparser.
  • Default: rgba(100%,0%,0%,10%)

interval

Interval used to check whether the coverage file has changed.

lcov_file

Path to the LCOV coverage file to load.

  • If not specified, the server searches the workspace and uses the first *.info file it finds.

Example Configuration

{
  "lsp": {
    "coverage-lsp": {
      "settings": {
        "hit": null,
        "miss": "#FFAA0020",
        "interval": "20s",
        "lcov_file": "./build/lcov.info"
      }
    }
  }
}

Look & Feel

How coverage information is displayed in Zed depends on the LSP Document Colors setting: Zed LSP Document Colors

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.

Background coloring: Zed Background Coloring

Border coloring: Zed Border Coloring

Inlay coloring: Zed Inlay Coloring

Development

# 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

About

No description, website, or topics provided.

Resources

Stars

17 stars

Watchers

0 watching

Forks

Releases

Sponsor this project

Packages

Contributors

Languages