bazel - Bazel 构建文件自省
问题描述
是否有任何工具可用于内省 Bazel 构建文件的集合以针对代码库运行查询?我正在考虑收集代码库中使用的所有已定义标签的简单案例。某种 bazel 元查询功能,可以让我在包含大量构建文件的 repo 中确定约定和用法。
能够对他们的集体标签进行交叉制表cc_test
和规则甚至会很好。py_test
理想情况下,应该有一个 python 客户端来检查 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 项目上提交功能请求。
推荐阅读
- scxml - scxml 转换目标的工作原理
- laravel - 在不同的“通过”Laravel 通知之间传递数据
- php - SessionHandler::read():会话数据文件不是由您的 uid 创建的
- javascript - JavaScript对象indexOf,返回父位置?
- json - 使用来自 PowerShell 的注释转换为 JSON
- android - 键盘出现时约束布局ListView正在移动
- javascript - 如何从 Document 对象继承到我的子对象
- html - VBA - 通过锚点从带有蒙面按钮的html中单击“下载”
- javascript - 如何等待 ajax 请求并处理结果?
- postgresql - 将整数添加到日期与天间隔比较有区别吗?