将 Bazel 与 IDE 集成

本页介绍了如何将 Bazel 与 IntelliJ、Android Studio 和 CLion 等 IDE 集成(或构建您自己的 IDE 插件)。还包含指向安装和插件详细信息的链接。

IDE 以多种方式与 Bazel 集成,从允许在 IDE 内执行 Bazel 的功能,到感知 Bazel 结构(例如 BUILD 文件的语法突出显示)。

如果您有兴趣为 Bazel 开发编辑器或 IDE 插件,请加入 Bazel Slack 上的 #ide 频道,或在 GitHub 上发起讨论。

IDE 和编辑器

IntelliJ、Android Studio 和 CLion

适用于 IntelliJ、Android Studio 和 CLion 的官方插件。该插件是开源的。

这是 Google 内部使用的插件的开源版本。

功能:

  • 与特定于语言的插件互操作。支持的语言包括 Java、Scala 和 Python。
  • BUILD 文件导入到具有 Bazel 目标语义感知能力的 IDE 中。
  • 让 IDE 了解 Starlark,这种语言用于 Bazel 的 BUILD.bzl 文件
  • 直接从 IDE 构建、测试和执行二进制文件
  • 创建用于调试和运行二进制文件的配置。

如需安装,请前往 IDE 的插件浏览器,然后搜索 Bazel

如需手动安装旧版本,请从 JetBrains 的插件代码库下载 zip 文件,然后通过 IDE 的插件浏览器安装该 zip 文件:

Xcode

rules_xcodeprojTulsiXCHammer 可根据 Bazel BUILD 文件生成 Xcode 项目。

Visual Studio Code

VS Code 的官方插件。

功能:

  • Bazel 构建目标树
  • 在 build 期间调试 .bzl 文件的 Starlark 调试器(设置断点、逐行调试代码、检查变量等)

在 Visual Studio Marketplace 中找到该插件。 该插件是开源的。

另请参阅:源代码自动补全

Atom

在 Atom 软件包管理器中找到 language-bazel 软件包

另请参阅:源代码自动补全

Vim

GitHub 上查看 bazelbuild/vim-bazel

另请参阅:源代码自动补全

Emacs

GitHub 上查看 bazelbuild/bazel-emacs-mode

另请参阅:源代码自动补全

Visual Studio

Lavender 是一个实验性项目,用于生成使用 Bazel 进行构建的 Visual Studio 项目。

Eclipse

Bazel Eclipse Feature 是一组用于将 Bazel 软件包导入 Eclipse 工作区作为 Eclipse 项目的插件。

源代码自动补全

C 语言系列(C++、C、Objective-C、Objective-C++ 和 CUDA)

kiron1/bazel-compile-commands 在 Bazel 工作区中运行 bazel-compile-commands //... 以生成 compile_commands.json 文件。 借助 compile_commands.json 文件,clang-tidyclangd (LSP) 等工具和其他 IDE 可以提供自动填充、智能导航、快速修复等功能。该工具使用 C++ 编写,并使用 Bazel 的 Protobuf 输出提取编译命令。

hedronvision/bazel-compile-commands-extractor 可在各种可扩展的编辑器(包括 VSCode、Vim、Emacs、Atom 和 Sublime)中启用自动补全、智能导航、快速修复等功能。这样一来,clangd 和 ccls 等语言服务器和其他类型的工具就可以利用 Bazel 对 ccobjc 代码编译方式的了解,包括如何为其他平台配置交叉编译。

Java

georgewfraser/java-language-server - 支持 Bazel 构建项目的 Java 语言服务器 (LSP)

在文件更改时自动运行构建和测试

Bazel 监听器是一种用于在源文件发生更改时构建 Bazel 目标的工具。

构建自己的 IDE 插件

请阅读 IDE 支持博文,详细了解在构建 IDE 插件时要使用的 Bazel API。