我正在尝试按照这篇文章了解 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
我知道报告当然会有所不同,因为我有不同的代码库。但我不明白为什么我没有看到报告中列出的任何文件。
我知道我的单元测试已运行,从第一个命令的输出:
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 报告不包含文件列表以及每个文件的覆盖率数据。
尝试将 --branch 移到 -t html 前面。以下命令对我有用。
grcov . --branch --binary-path ./target/debug/deps/ -s . -t html --ignore-not-existing --ignore '../*' --ignore "/*" -o target/coverage/html