Home

Awesome

cargo-cov: Source coverage for Rust

cargo-cov is a cargo subcommand which performs source coverage collection and reporting for Rust crates. cargo-cov utilizes LLVM's gcov-compatible profile generation pass, and supports a lot of platforms.

Usage: for Local Testing on nightly Rust

You may install cargo-cov via cargo.

cargo install cargo-cov

The typical workflow is like this:

# clean up previous coverage result
cargo cov clean

# test the code
cargo cov test

# open the coverage report
cargo cov report --open

Usage: for Testing on stable Rust (1.19+)

We strongly recommend you use nightly Rust since only the nightly toolchain has built-in instrumented profiling support via -Zprofile.

If you must use a stable toolchain, you may try the following:

  1. Install the compiler-rt profile library.

    TargetInstruction
    Ubuntu, DebianInstall libclang-common-7-dev, or simply install clang
    FedoraInstall compiler-rt
    OpenSUSEInstall llvm-clang
    Windows (MSVC)Install Clang for Windows Pre-Built Binary from LLVM
    macOS, iOSProvided by the Xcode command line tools
    AndroidProvided by Android NDK
  2. Execute the doc-test separately from the normal tests. Run the doc-test before the normal tests.

    # Run --doc tests before other things before 1.19
    cargo cov test --doc
    cargo cov test --lib
    

We do not guarantee that a correct coverage profile will be generated using this method.