【发布时间】:2019-10-17 08:55:15
【问题描述】:
是否有任何工具可用于内省 Bazel 构建文件的集合以针对代码库运行查询?我正在考虑收集代码库中使用的所有已定义标签的简单案例。某种 bazel 元查询功能,可以让我在包含大量构建文件的 repo 中确定约定和用法。
如果能够针对它们的集体标签对cc_test 和py_test 规则进行交叉制表,那就太好了。理想情况下,应该有一个 python 客户端来检查 bazel 文件。
【问题讨论】:
-
这个想法是否类似于 graphql 查询,我从查询中提取所有逐项点击,然后由我将这些数据汇总成更能说明问题的内容?考虑到我可以针对 startlark/bazel 语法中的任意构造,这可能是站得住脚的,根据可能的查询 functions 的集合,快速浏览似乎涵盖了大部分基础。我还没有完全熟悉 bazel,还没有想到一个我无法查询的反例,它是在 bazel 文件中定义的。
-
也许另一种说法是找到某种方法来跳入一个starlark interpreter 会话并使用
type和dir命令来执行它,就像在Python 加载中所做的那样模块和四处寻找。我不确定在该会话中加载构建文件的类似入口点是什么,但这是一个有趣的想法。 -
我想知道
loadstatement 是否是 bazel 查询范围之外的一个很好的例子;例如,查找所有加载特定符号的构建文件,类似于这些行。
标签: bazel