2017-09-22 352 views
1

我能够产生与巴泽尔命令coverage.dat文件:如何合并来自多个.dat文件覆盖巴泽勒

bazel coverage //tests/... --instrumented_filter=/src[/:] 

这将生成类的一个报告,因为coverage.dat文件生成分别为不同目录中的每个检测文件。我如何获得合并coverage.dat?

回答

2

coverage.dat报告应包含有关受--instrumentation_filter影响的所有类别的覆盖信息。该文件应位于bazel-testlogs/path/to/your/package/TestTarget之下。

你不应该写任何额外的东西。 Bazel确实会生成多个临时文件.dat,但它会将所有文件合并到最终的coverage.dat文件中,该文件在完成运行时由bazel打印。该文件是我上面描述的位置。请确保检查该文件,并检查您是否正确使用--instrumentation_filter(*)。

(*)从command line manual

启用覆盖,仅使用指定 基于regex-过滤器中包含的名称规则将进行检测。以' - '作为前缀 的规则被排除在外。请注意,除非已启用 - instrument_test_targets,否则只有非测试规则是 。

+0

好的,我想清楚为什么我的coverage.dat文件没有正确的信息 - 正如你所说的,coverage.dat文件是在TestTarget目录下生成的,我正在做的是单独运行每个测试类java_test()规则,而不是使用Suit将所有测试类合并为一个。一旦合并成一个测试类并从单个java_test()规则运行,coverage.dat就会生成,并包含所有文件的所有覆盖范围。 – Zeitgeist

+0

Bazel是否具有为覆盖范围生成实际index.html的手段?现在我正在使用genhtml coverage.dat命令从Bazel生成的coverage.dat生成html覆盖率报告。 – Zeitgeist

+1

不,Bazel不支持生成index.html。大多数人也使用genz和Bazel。 –