我正在使用genhtml命令从Bazel生成的coverage.dat文件生成html覆盖率报告:
genhtml bazel-testlogs/path/to/TestTarget/coverage.dat --output-directory coverage
使用genhtml的问题是我必须提供coverage.dat文件的路径(在bazel-testlogs / ..中生成)是否可以将这些coverage.dat文件作为另一条规则的输出获取?
我不想直接调用genthml命令,但让Bazel处理所有事情。
答案 0 :(得分:8)
我无法找到将coverage.dat文件作为bazel规则输出的方法。但是,我能够将所有.dat文件的所有位置包装为srcs到WORKSPACE目录中的文件组:
filegroup(
name = "coverage_files",
srcs = glob(["bazel-out/**/coverage.dat"]),
)
然后在自定义.bzl规则中使用该文件组,该规则包装genthml命令以生成html覆盖率报告。所以现在我只需要打电话
bazel coverage //path/... --instrumentation_filter=/path[/:]
命令生成coverage.dat文件,生成html报告并压缩它。因此,bazel处理一切。
答案 1 :(得分:2)
Bazel添加了对C++ coverage的支持(尽管我找不到很多文档)。
我能够使用以下方式生成合并的coverage.dat文件
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 \
//...
覆盖率文件已添加到bazel-out/_coverage/_coverage_report.dat