提问者:小点点

lcov和gcovr-r命令正在为UT生成cpp文件代码覆盖率报告


lcov和“GCOVR-R”。没有为*.cpp文件生成代码覆盖率报告。

我是googletest框架的新手。我编写了一个UT来测试代码的功能,并在makefiles中使用选项“-fprofile-arcs-ftest-coverage--coverage”和“lgcov”编译了代码。在执行测试用例之后。我能够看到*.gcno和。gcda文件。但没有获得正确的代码覆盖率报告。

步骤1:更新Makefile--&>;“-fprofile-arcs-ftest-coverage--coverage”第2步:构建代码。步骤3:运行测试用例。步骤4:GCOVR-R。

观察者:没有获得执行测试用例*.cpp文件覆盖率。


共1个答案

匿名用户

我在设置测试覆盖率时遇到了一些麻烦,但我最终成功了。虽然我不用你用的工具。

我使用的是Clang++和LLVM工具。我正在使用我自己的基本单元测试框架,它类似于Catch2(但不像Catch2那样功能齐全)。

下面是我运行的命令,如果这对您有帮助的话:

clang++ -Weverything -Wno-c++98-compat -Wno-c++98-compat-pedantic -Wno-padded -Wno-c99-compat -pedantic -fsanitize=undefined,null -std=c++17 -O0 -g -fprofile-instr-generate -fcoverage-mapping Experiment.cpp

./a.out --test-noisy --test-only

llvm-profdata merge -sparse default.profraw -o default.profdata

llvm-cov show -format=html -tab-size=4 ./a.out -instr-profile=default.profdata Experiment.cpp > default.html

echo '<style>pre { font-family: Monaco, Consolas, monospace; }</style>' >> default.html

我很想在评论中做出回应,但是这个回应太长了,为了便于阅读,需要进行格式化。如果认为不合适(通过投票),我会删除它。