Skip to content
Cargo subcommand to run kcov to get coverage report on Linux
Branch: master
Clone or download
Latest commit b91da0e Apr 25, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
specimen Oops forgot to enable tests for macOS. May 9, 2018
src Make GitHub api usage more resilient to error Oct 17, 2018
tests Oops forgot to enable tests for macOS. May 9, 2018
.gitignore Support macOS. May 9, 2018
.travis.yml
Cargo.lock cargo update Apr 24, 2019
Cargo.toml cargo update Apr 24, 2019
README.md

README.md

cargo-kcov

Build status Coverage Status crates.io MIT

Collect test coverage on all the test cases for the current project using kcov on Linux and macOS.

Usage

In the project run

$ cargo kcov

It will run all test cases and collect coverage statistics via kcov. The coverage report can be read from target/cov/index.html.

Prerequisite

You need to install kcov v26 or above to collect coverage report from Rust. Some distro is still shipping v25 or v11, so you will need to build from source.

For macOS, you will need kcov v35 or above. Be aware that macOS performance is significantly slower when compared with Linux. If you are collecting coverage statistics on the CI and you don't have time to spend, consider ignoring macOS.

Please follow the instruction in https://users.rust-lang.org/t/650. cargo-kcov requires v30 or above since earlier versions of kcov do not report its version number.

cargo-kcov requires Rust 1.20.0 or above (due to bitflags dependency).

Install

cargo-kcov can be installed with cargo install.

$ cargo install cargo-kcov

Options

cargo-kcov 0.5.1
Generate coverage report via kcov

USAGE:
    cargo kcov [OPTIONS] [--] [KCOV-ARGS]...

OPTIONS:
        --lib                      Test only this package's library
        --bin <NAME>...            Test only the specified binary
        --example <NAME>...        Test only the specified example
        --test <NAME>...           Test only the specified integration test target
        --bench <NAME>...          Test only the specified benchmark target
    -j, --jobs <N>                 The number of jobs to run in parallel
        --release                  Build artifacts in release mode, with optimizations
        --features <FEATURES>      Space-separated list of features to also build
        --no-default-features      Do not build the `default` feature
        --target <TRIPLE>          Build for the target triple
        --manifest-path <PATH>     Path to the manifest to build tests for
        --no-fail-fast             Run all tests regardless of failure
        --kcov <PATH>              Path to the kcov executable
    -o, --output <PATH>            Output directory, default to [target/cov]
    -v, --verbose                  Use verbose output
        --all                      In a workspace, test all members
        --open                     Open the coverage report on finish
        --coveralls                Upload merged coverage data to coveralls.io from Travis CI
        --no-clean-rebuild         Do not perform a clean rebuild before collecting coverage. This improves performance
                                   when the test case was already built for coverage, but may cause wrong coverage
                                   statistics if used incorrectly. If you use this option, make sure the `target/`
                                   folder is used exclusively by one rustc/cargo version only, and the test cases are
                                   built with `RUSTFLAGS="-C link-dead-code" cargo test`.
        --print-install-kcov-sh    Prints the sh code that installs kcov to `~/.cargo/bin`. Note that this will *not*
                                   install dependencies required by kcov.
    -h, --help                     Prints help information
    -V, --version                  Prints version information

ARGS:
    <KCOV-ARGS>...    Further arguments passed to kcov. If empty, the default arguments `--verify --exclude-
                      pattern=$CARGO_HOME` will be passed to kcov.
You can’t perform that action at this time.