如何验证BAZEL项目正确性,排查未声明target引用等错误
Bazel 项目依赖引用校验方案
Bazel 自带了等效于静态语言编译期检查的内置校验能力,无需接入额外工具即可完成全项目的各类错误排查,完全可以覆盖你提到的「未声明target引用」检查需求:
基础全量校验
直接运行以下命令即可完成全项目的依赖合法性校验:
bazel build --nobuild //...
- 该命令不会触发任何实际的编译、链接、产出二进制的动作,仅会解析全项目的BUILD文件、生成构建依赖图、校验所有依赖关系的合法性
- 一旦出现引用未声明target、BUILD文件语法错误、依赖循环、规则参数非法这类问题,命令会直接抛出明确错误,定位到出错的BUILD文件路径和具体的非法引用内容
增强校验场景
如果需要覆盖更多校验场景,可以搭配以下参数使用:
- 校验所有测试目标的依赖:添加
--build_tests_only参数,命令会额外扫描所有test类型target的依赖,避免测试代码出现无效引用 - 校验依赖可见性合法性:添加
--check_visibility参数,可额外检查是否存在违规引用了设置了可见性限制的target的问题 - 校验Starlark自定义规则:添加
--check_starlark_files参数,可扫描所有自定义.bzl文件的语法错误、参数传递错误
如果你的项目包含多平台适配的条件依赖,建议加上对应平台的
--cpu、--platforms参数,避免因为条件分支未覆盖出现漏检。如果只需要检查指定目录下的内容,把命令末尾的//...替换为对应目录的target模式即可,例如//src/order/...仅会校验order目录下的所有内容。
内容的提问来源于stack exchange,提问作者user17160464
相关产品推荐
相关产品推荐

