使用Bazel生成覆盖率报告

Zei*_*ist 6 code-coverage bazel

我正在使用genhtml命令从Bazel生成的coverage.dat文件生成html覆盖率报告:

genhtml bazel-testlogs/path/to/TestTarget/coverage.dat --output-directory coverage
Run Code Online (Sandbox Code Playgroud)

使用genhtml的问题是我必须提供coverage.dat文件的路径(在bazel-testlogs /中生成).是否可以将这些coverage.dat文件作为另一个规则的输出获取?

我想不必直接调用genthml命令,但让Bazel处理所有事情.

Zei*_*ist 9

我无法找到将coverage.dat文件作为bazel规则输出的方法.但是,我能够将所有.dat文件的所有位置包装为srcs到WORKSPACE目录中的文件组:

filegroup(
    name = "coverage_files",
    srcs = glob(["bazel-out/**/coverage.dat"]),
)
Run Code Online (Sandbox Code Playgroud)

然后在自定义.bzl规则中使用该文件组,该规则包装genthml命令以生成html覆盖报告.所以现在我只需要打电话

bazel coverage //path/... --instrumentation_filter=/path[/:]
Run Code Online (Sandbox Code Playgroud)

命令生成coverage.dat文件,生成html报告并压缩它.因此,bazel处理一切.