Bazel构建文件自省

时间:2019-10-16 04:27:28

标签: bazel

是否有用于内省Bazel构建文件集合以对代码库运行查询的工具?我在考虑一个简单的情况,即收集代码库中使用的所有已定义标签。一种类似bazel metaquery的功能,它使我可以在具有大量构建文件的存储库中确定约定和用法。

能够对它们的集合标记对cc_testpy_test规则进行交叉制表甚至更好。理想情况下,应该有一个python客户端来内省bazel文件。

1 个答案:

答案 0 :(得分:1)

bazel query使用具有高度表现力的查询语言提供有关目标依赖关系图的信息。它可以输出为DOT,XML,Protobuf等各种格式,以及扩展的BUILD文件本身的文本表示形式(如果有宏),以进行后处理。参见:Bazel query how-toBazel query reference

bazel cqueryquery相同,但还执行分析阶段,该阶段计算有关目标依赖关系图上的配置(例如CPU,API级别)的信息。这会花费更长的时间,但是可以让您更准确地表示Bazel带给执行阶段的图形。参见:Bazel cquery reference

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

querycqueryaquery对BUILD文件的语法不起作用。如果要使用Starlark语法/ AST,请在bazelbuild/buildtools存储库中检出buildozerbuildifier工具。

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