如何使用 grcov 正确生成 HTML 覆盖率报告

问题描述 投票:0回答:1

我正在尝试按照这篇文章了解 Rust 中的代码覆盖率。

我从文章中运行了这些命令:

CARGO_INCREMENTAL=0 RUSTFLAGS='-Cinstrument-coverage' LLVM_PROFILE_FILE='cargo-test-%p-%m.profraw' cargo test
grcov . --binary-path ./target/debug/deps/ -s . -t html --branch --ignore-not-existing --ignore '../*' --ignore "/*" -o target/coverage/html

这是文章中显示的报告截图: enter image description here

这是我生成的报告的屏幕截图: enter image description here

我知道报告当然会有所不同,因为我有不同的代码库。但我不明白为什么我没有看到报告中列出的任何文件。

我知道我的单元测试已运行,从第一个命令的输出:

running 1 test
test analysis_engine::test::analysis_engine_test ... ok

test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.05s

     Running unittests src/bin/lich.rs (target/debug/deps/lich-59b92cf3de49f636)

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

   Doc-tests lich

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

如果我生成 Markdown,我实际上会看到每个文件的覆盖信息:

$ grcov . --binary-path ./target/debug/deps/ -s . -t markdown --branch --ignore-not-existing --ignore '../*' --ignore "/*"
| file                         | coverage | covered   | missed_lines
            |
|------------------------------|----------|-----------|-----------------------------------------------------------------------------|
| src/bin/lich.rs              | 0.00%    | 0 / 41    | 27-80
            |
| src/config_engine.rs   | 83.43%   | 141 / 169 | 78-80, 105-111, 169, 193-195, 234, 240-245, 250, 254, 265-266, 270, 277-280 |
<snip>

Total coverage: 58.69%

我正在寻求帮助,以了解为什么我的 HTML 报告不包含文件列表以及每个文件的覆盖率数据。

rust code-coverage rust-cargo
1个回答
0
投票

尝试将 --branch 移到 -t html 前面。以下命令对我有用。

 grcov . --branch  --binary-path ./target/debug/deps/ -s . -t html --ignore-not-existing --ignore '../*' --ignore "/*" -o target/coverage/html
© www.soinside.com 2019 - 2024. All rights reserved.