如何获取C ++的bazel代码覆盖率摘要?

时间:2019-02-27 12:15:11

标签: bazel

我使用静态库和可执行文件进行了小规模的设置来进行单元测试。 运行“ bazel coverage”时,它将在单元测试二进制文件的测试日志文件夹中创建coverage.dat文件。结果是lcov文件或llvm profdata文件。 bazel的coverage数据生成器似乎能够区分clang和gcc,但似乎无法生成报告。

有没有办法从覆盖范围生成器获取一些统计信息?

2 个答案:

答案 0 :(得分:1)

bazel 版本:3.7.0

bazelisk coverage  -s  \
                   --combined_report=lcov  \
                   --experimental_cc_coverage \
                   --instrumentation_filter="//Src[/:]"  \
                   --local_test_jobs=1  \
                   --nocache_test_results 
                   //tests:all

然后运行cmd:

genhtml bazel-out/_coverage/_coverage_report.dat  \
        --highlight \
        --legend \
        --output-directory coverage

结果如下:

  ......
  Overall coverage rate:
  lines......: 68.7% (3076 of 4480 lines)
  functions..: 61.5% (638 of 1037 functions)

答案 1 :(得分:0)

我这样做bazel coverage

  bazel coverage -s \                                         
    --instrument_test_targets \
    --experimental_cc_coverage \
    --combined_report=lcov \
    --coverage_report_generator=@bazel_tools//tools/test/CoverageOutputGenerator/java/com/google/devtools/coverageoutputgenerator:Main \
    //...

然后我以这种方式生成HTML输出。

  genhtml /home/user1/.cache/bazel/_bazel_user1/e74a825d0eb0c2db4b6f8afd819b274c/execroot/__main__/bazel-out/k8-fastbuild/testlogs/foo_test/coverage.dat --output-directory coverage