如何通过Bazel查询依赖指定文件的所有*_test规则?
用Bazel查询依赖指定文件的测试规则
可以通过bazel query的反向依赖查询结合规则过滤来实现,具体操作如下:
核心命令
假设目标文件的Bazel完整标签为//path/to/your:target_file(比如//src/main:utils.h),执行以下命令即可获取所有依赖该文件的*_test规则:
bazel query "kind('.*_test', rdeps(//..., //path/to/your:target_file))"
命令拆解
rdeps(//..., //path/to/your:target_file):查询整个工作空间(//...)中所有直接或间接依赖指定文件的目标kind('.*_test', ...):过滤出所有类型名称以_test结尾的规则(覆盖cc_test、java_test、py_test等所有测试规则类型)
进阶用法
- 仅查直接依赖的测试规则:添加
--direct参数,排除间接依赖的结果bazel query "kind('.*_test', rdeps(//..., //path/to/your:target_file))" --direct - 缩小查询范围:将
//...替换为特定包路径,比如只查//tests目录下的测试规则bazel query "kind('.*_test', rdeps(//tests/..., //path/to/your:target_file))"
注意事项
- 必须使用文件的完整Bazel标签,如果不确定标签,可先用
bazel query //path/to/directory:*查看该目录下所有文件的标签 - 如果文件未被任何Bazel目标引用,查询结果会为空
内容的提问来源于stack exchange,提问作者Vogelsgesang
相关产品推荐
相关产品推荐

