Bazel 查询除源文件之外的所有类型,即反向搜索

Bazel query on every kind but source files, ie inverted kind search

我是 运行 bazel deps 查询,输出配置为 --output label_kind,发现大量源文件命中。是否有一种机制可以从结果中排除源文件,某种逆向搜索保留除源类型之外的所有类型?我在想像

bazel query "kind( ! source , deps(...))"

我对一个应用程序中使用的 label_kinds 进行了快速值计数制表,发现大部分 dep 只是源文件。

> bazel query "deps(//my_package/my_subpackage:my_target_app)" --output rankmin | awk '{print }' | sort | uniq -c | sort -nr

8634 source
  20 cc_library
  11 filegroup
   3 config_setting
   3 cc_binary
   3 alias
   1 sh_binary
   1 py_binary
   1 package
   1 genrule
   1 bind

实际上还有很多其他的自定义内部规则,所以我不能做一个明确的类型联合,因为我必须跟上回购协议的增加。

有点冗长,但您可以这样做(为了便于阅读,分成多行):

bazel query 'deps(//my_package/my_subpackage:my_target_app)
             except kind("source file", deps(//my_package/my_subpackage:my_target_app))'
             --output rankmin

查询函数 deps()kind() return 目标集,所以这里我们几乎从完整的依赖集中减去包含 [= 类型依赖项的集合17=]"source file".