gpt4 book ai didi

bazel - 如何找到多个 bazel 目标中包含的所有源文件?

转载 作者:行者123 更新时间:2023-12-05 05:16:07 31 4
gpt4 key购买 nike

在我的代码库中,在多个目标(cc_binarycc_library 等)中包含相同的源文件通常是错误的。我想检测这个。

我可以

bazel query labels(srcs, //target:name)

获取单个目标的源列表。通过对每个目标执行此操作并检测哪些源文件位于多个目标中,这足以确定哪些源是多个目标的一部分。但我仍然需要一个查询来获取每个目标的列表。

如果我可以只查询一个源文件属于哪个目标并查看它是否是多个目标的来源,那将会更容易/更清晰。这可能吗?

另外,我有很多源文件,查询的最优性也是一个问题。

最佳答案

几个澄清的问题:

  • 您想以什么频率检测这种情况? (即,您要将此作为测试运行,还是要手动验证?)
  • 如果两个不相关的目标 A 和 B 都依赖于文件 foo,即使 A 不依赖于 B,B 也不依赖于 A,是否认为是错误?
  • 将 src 可见性限制在同一包中定义的目标是否不够?例如,考虑确保 foo/bar/src.c 仅对 foo/bar/BUILD 中定义的目标可见,然后确保 foo/bar/BUILD 仅包含一个 cc_library 目标。

考虑使用 aspects获取给定目标的所有传递源文件的列表。

如果您真的很喜欢使用bazel query,您可以通过调用获得项目下每个目标的完整列表,例如,

bazel query //...

关于bazel - 如何找到多个 bazel 目标中包含的所有源文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50845271/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com