Rustc is known to report an incorrect coverage for some lines (https://stackoverflow.com/questions/32521800/why-does-kcov-calculate-incorrect-code-coverage-statistics-for-rust-programs).
rust-covfix
will read coverage from the file generated by grcov), fix it, then outputs the correct coverage.
Though only lcov
format is supprted at current, Another formats is going to be supported in future releases.
rust-covfix
is also available with Rust API (Documentation)Optional features are available with cargo's --features
option. You can specify the features like:
console
$ cargo install --no-default-features --features "cli lcov"
|Feature name|Description|Default?|
|:--:|--|:--:|
|cli|Command Line Interface. This feature is required to build rust-covfix
executable.|yes|
|noinline|Avoid adding #cfg[inline]
attribute on function.|no|
|lcov|Make LcovParser available|yes|
|backtrace|Dump backtrace information on every time the error has occured.|yes|
Download the latest release from GitHub Release Page.
You can also install via cargo
command.
rust
$ cargo install rust-covfix
rust_covfix
fixes the coverage information using some rules. You can pass --rules
option to specify which rules are used to fix coverages.
closing brackets, line of else
block will be ignored.
rust
if a > 0 {
b = a
} else { // <-- marked as "not executable"
b = -a
}; // <-- marked as "not executable"
module block named test
or tests
which has attribute cfg(test)
will be ignored
```rust
mod tests { // <-- removed from coverage fn util() { ... } // <-- removed from coverage
#[test]
fn test_hoge() { ... } // <-- removed from coverage
} ```
Fix rust internal bugs that loop branches are not correctly passed.
rust
for i in 0..10 { // <-- fix branch coverage information
println!("{}", i);
}
structs with derive(...)
attribute will be ignored
```rust
struct Point { // <-- removed from coverage x: f64, // <-- removed from coverage y: f64 // <-- removed from coverage } // <-- removed from coverage ```
cobertura.xml
file. (WIP)👤 Kogia-sima
Contributions, issues and feature requests are welcome!
Feel free to check issues page.
Give a ⭐️ if this project helped you!
Copyright © 2019 Kogia-sima.
This project is MIT licensed.
This README was generated with ❤️ by readme-md-generator