繁体   English   中英

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

[英]How can I find all source files included in multiple bazel targets?

在我的代码库中,将相同的源文件包含在多个目标( 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目标。

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

如果您确实bazel query使用bazel query ,则可以通过调用获得项目下每个目标的全面列表,例如,

bazel query //...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM