是否有用于内省Bazel构建文件集合以对代码库运行查询的工具?我在考虑一个简单的情况,即收集代码库中使用的所有已定义标签。一种类似bazel metaquery的功能,它使我可以在具有大量构建文件的存储库中确定约定和用法。
能够对它们的集合标记对cc_test
和py_test
规则进行交叉制表甚至更好。理想情况下,应该有一个python客户端来内省bazel文件。
答案 0 :(得分:1)
bazel query
使用具有高度表现力的查询语言提供有关目标依赖关系图的信息。它可以输出为DOT,XML,Protobuf等各种格式,以及扩展的BUILD文件本身的文本表示形式(如果有宏),以进行后处理。参见:Bazel query how-to,Bazel query reference。
bazel cquery
与query
相同,但还执行分析阶段,该阶段计算有关目标依赖关系图上的配置(例如CPU,API级别)的信息。这会花费更长的时间,但是可以让您更准确地表示Bazel带给执行阶段的图形。参见:Bazel cquery reference。
bazel aquery
与BUILD文件的内省没有直接关系,因为它提供有关可执行操作的信息,这是在BUILD文件解析和分析之后的几层计算。参见:Bazel aquery reference
query
,cquery
和aquery
对BUILD文件的语法不起作用。如果要使用Starlark语法/ AST,请在bazelbuild/buildtools存储库中检出buildozer
和buildifier
工具。
如果使用这些机制无法获取有关您的构建图的信息,请在Bazel GitHub项目上提交功能请求。