Como integrar o Bazel com ambientes de desenvolvimento integrado

Nesta página, explicamos como integrar o Bazel a ambientes de desenvolvimento integrado, como IntelliJ, Android Studio e CLion, ou criar seu próprio plug-in para ambientes de desenvolvimento integrado. Ele também inclui links para detalhes de instalação e plug-in.

Os ambientes de desenvolvimento integrado se integram ao Bazel de várias maneiras, desde recursos que permitem execuções do Bazel dentro do ambiente de desenvolvimento integrado até reconhecimento de estruturas do Bazel, como destaque de sintaxe dos arquivos BUILD.

Se você tiver interesse em desenvolver um editor ou plug-in de ambiente de desenvolvimento integrado para o Bazel, participe do canal #ide no Bazel Slack ou inicie uma discussão no GitHub (em inglês).

Ambientes de desenvolvimento integrado e editores

IntelliJ, Android Studio e CLion

Plug-in oficial para IntelliJ, Android Studio e CLion. O plug-in tem código aberto.

Esta é a versão de código aberto do plug-in usada internamente no Google.

Recursos:

  • Interoperabilidade com plug-ins específicos para cada linguagem. As linguagens com suporte incluem Java, Scala e Python.
  • Importe arquivos BUILD para o ambiente de desenvolvimento integrado com reconhecimento semântico de destinos do Bazel.
  • Faça com que seu ambiente de desenvolvimento integrado reconheça o Starlark, a linguagem usada para os arquivos BUILD e .bzl do Bazel.
  • Criar, testar e executar binários diretamente do ambiente de desenvolvimento integrado.
  • Crie configurações para depurar e executar binários.

Para instalar, acesse o navegador de plug-ins do ambiente de desenvolvimento integrado e pesquise por Bazel.

Para instalar manualmente versões mais antigas, faça o download dos arquivos ZIP do repositório de plug-ins da JetBrains e instale-os no navegador de plug-ins do ambiente de desenvolvimento integrado:

Xcode

rules_xcodeproj, Tulsi e XCHammer geram projetos Xcode a partir de arquivos BUILD do Bazel.

Código do Visual Studio

Plug-in oficial para o VS Code.

Recursos:

  • Árvore de destinos de build do Bazel
  • Depurador do Starlark para arquivos .bzl durante um build (definir pontos de interrupção, percorrer o código, inspecionar variáveis etc.)

Encontre o plug-in no mercado do Visual Studio. O plug-in tem código aberto.

Consulte também: Preenchimento automático para código-fonte

Atom

Encontre o pacote language-bazel no gerenciador de pacotes Atom.

Consulte também: Preenchimento automático para código-fonte

Vim

Consulte bazelbuild/vim-bazel no GitHub

Consulte também: Preenchimento automático para código-fonte

Emacs

Consulte bazelbuild/bazel-emacs-mode no GitHub

Consulte também: Preenchimento automático para código-fonte

Visual Studio

O Lavender é um projeto experimental para gerar projetos do Visual Studio que usam o Bazel para criação.

Eclipse

O recurso Bazel Eclipse é um conjunto de plug-ins para importar pacotes do Bazel para um espaço de trabalho do Eclipse como projetos do Eclipse.

Preenchimento automático para código-fonte

Família de linguagens C (C++, C, Objective-C e Objective-C++)

O hedronvision/bazel-compile-commands-extractor ativa o preenchimento automático, a navegação inteligente, as correções rápidas e muito mais em diversos editores extensíveis, como VSCode, Vim, Emacs, Atom e Sublime. Ele permite que servidores de linguagem, como clangd e ccls, e outros tipos de ferramentas, sejam baseados no conhecimento do Bazel sobre como o código cc e objc serão compilados, incluindo como ele configura a compilação cruzada para outras plataformas.

Java

georgewfraser/java-language-server: servidor de linguagem Java (LSP) com suporte a projetos criados pelo Bazel

Executar build e testar automaticamente quando houver mudança de arquivo

O Bazel watcher é uma ferramenta para criar destinos do Bazel quando os arquivos de origem mudam.

Como criar seu próprio plug-in do ambiente de desenvolvimento integrado

Leia a postagem do blog sobre suporte ao ambiente de desenvolvimento integrado (em inglês) para saber mais sobre as APIs do Bazel que podem ser usadas ao criar um plug-in desse ambiente.