首页 > 解决方案 > Bazel 构建文件自省

问题描述

是否有任何工具可用于内省 Bazel 构建文件的集合以针对代码库运行查询?我正在考虑收集代码库中使用的所有已定义标签的简单案例。某种 bazel 元查询功能,可以让我在包含大量构建文件的 repo 中确定约定和用法。

能够对他们的集体标签进行交叉制表cc_test和规则甚至会很好。py_test理想情况下,应该有一个 python 客户端来检查 bazel 文件。

标签: bazel

解决方案


bazel query使用高度表达的查询语言提供有关目标依赖关系图的信息。它可以输出为各种格式,如 DOT、XML、Protobuf,以及扩展的 BUILD 文件本身的文本表示(如果有宏)用于后处理。请参阅:Bazel 查询操作方法Bazel 查询参考

bazel cquery与 相同query,但也执行分析阶段,该阶段计算有关目标依赖关系图上的配置(例如 CPU、API 级别)的信息。这需要稍长的时间,但可以更准确地表示 Bazel 为执行阶段带来的图表。请参阅:Bazel cquery 参考

bazel aquery与 BUILD 文件自省没有直接关系,因为它提供有关可执行操作的信息,这是在 BUILD 文件解析和分析之后的几层计算。请参阅:Bazel 查询参考

query,cquery并且aquery不要对 BUILD 文件的语法进行操作。如果您想使用 Starlark 语法/AST,请查看bazelbuild buildozer/ buildtoolsbuildifier存储库中的工具。

如果使用这些机制无法检索有关您的构建图的信息,请在 Bazel GitHub 项目上提交功能请求。


推荐阅读