mirror of
https://github.com/bytedance/g3.git
synced 2026-05-01 21:20:40 +00:00
1.6 KiB
1.6 KiB
Code Coverage
Source based code coverage is available since rust version 1.60.
Compilation
The following RUSTFLAGS should be set before compiling:
Shell:
export RUSTFLAGS="-C instrument-coverage"
Fish:
set -x RUSTFLAGS "-C instrument-coverage"
Before running tests, the LLVM_PROFILE_FILE can be used to set name of the generated profraw files:
Shell:
export LLVM_PROFILE_FILE "test-%p-%m.profraw"
Fish:
set -x LLVM_PROFILE_FILE "test-%p-%m.profraw"
Parse and Report
LLVM coverage tools are needed to process coverage data and generate reports.
Independent llvm-tools
llvm-profdata is needed to merge all raw profile data files into indexed profile data file:
Shell:
llvm-profdata merge -o a.profdata $(find . -type f -name "*profraw" -exec ls \{\} \;)
Fish:
llvm-profdata merge -o a.profdata (find . -type f -name "*profraw" -exec ls \{\} \;)
llvm-cov is needed to generate reports:
llvm-cov report --instr-profile=a.profdata --ignore-filename-regex=".cargo" --ignore-filename-regex="rustc" -object <BIN/OBJ>[ -object <BIN/OBJ>]...
Bundled llvm-tools-preview
The llvm-tools you installed may be not compatible with the ones rustc used. You can use llvm-tools-preview via rustup:
rustup component add llvm-tools-preview
cargo install cargo-binutils
To run the bundled tools, just use cargo <cmd> -- <params>.