You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Bazel自定义覆盖率配置时部分文件缺失gcno文件的问题

Bazel代码覆盖率配置问题

由于是通过Python脚本运行自定义目标,无法直接使用bazel coverage命令,以下是当前配置步骤及遇到的问题:

一、配置步骤

  • 在.bazelrc中添加如下配置:
build:coverage --collect_code_coverage
build:coverage --instrumentation_filter="^//src[/:]"
coverage --instrumentation_filter="^//src[/:]"
  • 根目录BUILD文件中添加:
config_setting(
    name = "Coverage",
    flag_values = {
        ":coverage": "true",
    },
)

bool_flag(
    name = "coverage",
    build_setting_default = False,
)
  • 在cc_binary规则中引入覆盖率编译、链接选项:
+ select({"//:Coverage": coverageCopts, "//conditions:default": [], }),
// 以及
select({"//:Coverage": coverageLopts, "//conditions:default": [], }),

其中编译和链接选项定义为:

coverageCopts = ["--coverage", "-fprofile-abs-path", "-fprofile-arcs", "-ftest-coverage"]
coverageLopts = ["--coverage", "-lgcov"]
  • 运行Python脚本的命令:
bazel run --subcommands --//\:coverage=true script:runner

二、问题现象

  • 部分CPP文件缺失gcno文件;
  • 同一库中的相邻文件可正常生成gcno文件;
  • 排查bazel --subcommands输出,确认缺失文件的编译命令已带有--coverage标志;
  • 执行bazel clean --expunge后问题依旧存在。

内容的提问来源于stack exchange,提问作者Ulrich Von Rekkenin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 14:12:33