首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Bazel生成覆盖报告

使用Bazel生成覆盖报告
EN

Stack Overflow用户
提问于 2017-09-27 19:54:18
回答 3查看 10.9K关注 0票数 7

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

代码语言:javascript
复制
genhtml bazel-testlogs/path/to/TestTarget/coverage.dat --output-directory coverage

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

我不希望直接调用genthml命令,而是让Bazel处理所有事情。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-10-02 22:03:24

我找不到一种方法来获得coverage.dat文件作为bazel规则的输出。但是,我能够将所有.dat文件的所有位置作为src封装到工作区目录中的一个文件组中:

代码语言:javascript
复制
filegroup(
    name = "coverage_files",
    srcs = glob(["bazel-out/**/coverage.dat"]),
)

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

代码语言:javascript
复制
bazel coverage //path/... --instrumentation_filter=/path[/:]

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

票数 11
EN

Stack Overflow用户

发布于 2018-12-23 07:40:20

Bazel增加了对C++ coverage的支持(尽管我找不到太多的相关文档)。

我能够使用以下命令生成一个组合的coverage.dat文件

代码语言:javascript
复制
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 \
  //...

coverage文件将添加到bazel-out/_coverage/_coverage_report.dat

票数 4
EN

Stack Overflow用户

发布于 2022-01-14 14:34:57

对于基于Java的项目,我们可以通过以下方式获得代码覆盖率:

将覆盖完整的模块->

  1. 运行完整项目模块的覆盖范围。运行以下命令->

代码语言:javascript
复制
bazel coverage ... --compilation_mode=dbg --subcommands --announce_rc --verbose_failures --jobs=auto  --sandbox_debug --build_runfile_links --combined_report=lcov --coverage_report_generator=@bazel_tools//tools/test/CoverageOutputGenerator/java/com/google/devtools/coverageoutputgenerator:Main

然后,

  1. 从父项目目录运行以下命令以获取html视图。在我们指定的output-directory-name中生成超文本标记语言报告。从打开的index.html查看覆盖率报告。

代码语言:javascript
复制
genhtml -o <output-directory-name> bazel-out/_coverage/_coverage_report.dat

bazel-out目录通常在项目父目录中创建(例如,bazel WORKSPACE文件所在的位置)

可在模块->中获得特定IT/测试的覆盖范围

针对模块中特定IT/测试的

  1. 运行覆盖范围。从

的项目/子项目目录中运行以下命令

代码语言:javascript
复制
bazel coverage <class-name-of-Test-or-IT> --compilation_mode=dbg --subcommands --announce_rc --verbose_failures --jobs=auto  --sandbox_debug --build_runfile_links --combined_report=lcov --coverage_report_generator=@bazel_tools//tools/test/CoverageOutputGenerator/java/com/google/devtools/coverageoutputgenerator:Main

然后,

  1. 从父项目目录运行以下命令以获取html视图。在我们指定的output-directory-name中生成超文本标记语言报告。从打开的index.html查看覆盖率报告。

代码语言:javascript
复制
genhtml -o <output-directory-name> bazel-out/_coverage/_coverage_report.dat
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46447218

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档