【问题标题】:lcov and gcovr -r commands are generating the cpp file code coverage report for UTlcov 和 gcovr -r 命令正在为 UT 生成 cpp 文件代码覆盖率报告
【发布时间】:2020-07-25 23:11:29
【问题描述】:

lcovgcovr -r . 没有为 *.cpp 文件生成代码覆盖率报告。

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

第 1 步:更新 Makefile --> -fprofile-arcs -ftest-coverage --coverage
第 2 步:构建代码。
第 3 步:运行测试用例。
第四步:gcovr -r .

观察到:未获得执行测试用例的 *.cpp 文件覆盖率。

【问题讨论】:

    标签: c++ code-coverage gcov


    【解决方案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
    

    我想在评论中回复,但此回复太长,需要格式化以确保易读性。如果认为不合适(通过投票),我会删除它。

    【讨论】:

      猜你喜欢
      • 2019-09-14
      • 2017-03-31
      • 1970-01-01
      • 2016-10-07
      • 2014-03-21
      • 1970-01-01
      • 2020-03-10
      • 2021-06-26
      • 2014-05-07
      相关资源
      最近更新 更多