Repositórios poliglotas que usam Bazel como sistema de build exigem que os desenvolvedores escrevam e mantenham arquivos BUILD e .bzl para cada linguagem e alvo. Esses arquivos têm uma sintaxe estrita de Starlark que pode ser tediosa de digitar manualmente, especialmente quando o repositório contém dezenas ou centenas de alvos. O GitHub Copilot pode gerar regras do Bazel, dependências e macros diretamente de comentários em linguagem natural e do contexto existente do arquivo, reduzindo trabalho braçal e erros de sintaxe. Este artigo explica como configurar o Copilot para arquivos Bazel, escrever prompts eficazes e evitar armadilhas comuns ao trabalhar com repositórios multilíngues.
Principais conclusões: Usando o Copilot com Bazel em repositórios poliglotas
- Configurações do Copilot > Habilitar para arquivos Starlark: Adicione as extensões de arquivo Starlark aos idiomas reconhecidos do Copilot para que ele forneça conclusões em arquivos BUILD e .bzl.
- Comentários em linguagem natural em arquivos BUILD: Escreva um comentário como
# python_library para processamento de dadosacima de uma definição de alvo para acionar sugestões de regras. - Geração de alvos multilíngues: Use um único comentário para solicitar regras para vários idiomas em um arquivo, por exemplo
# go_binary, java_library, py_binary.
Como o Copilot interpreta arquivos BUILD e .bzl do Bazel
O Bazel usa Starlark, uma linguagem de domínio específico semelhante ao Python, para definir alvos de build em arquivos BUILD e macros em arquivos .bzl. O modelo do Copilot é treinado em um grande corpus de repositórios Bazel de código aberto, então ele pode reconhecer padrões comuns como go_library, java_binary, py_test e cc_library. No entanto, o Copilot não tem conhecimento embutido das regras exatas de sintaxe do Bazel, a menos que a extensão do arquivo seja mapeada para um idioma suportado.
Por padrão, o Copilot trata arquivos com as extensões .bzl e BUILD como arquivos de texto simples ou semelhantes ao Python. Para obter conclusões precisas, você deve adicionar essas extensões à lista de idiomas do Copilot. Depois disso, o Copilot usa as importações, chamadas de função e comentários existentes do arquivo para prever a próxima linha ou bloco. Para repositórios poliglotas, o Copilot pode gerar alvos para vários idiomas no mesmo arquivo BUILD se o comentário e o contexto forem explícitos.
Pré-requisitos para o Copilot em arquivos Bazel
Antes de começar, confirme o seguinte:
- O GitHub Copilot está habilitado no seu editor (VS Code, JetBrains ou Neovim).
- Seu workspace Bazel tem pelo menos um arquivo BUILD ou .bzl aberto.
- O Copilot não está desabilitado para o workspace ou tipo de arquivo nas suas configurações.
- Você tem uma conexão de internet estável para o Copilot consultar seu modelo.
Passos para habilitar e usar o Copilot para arquivos Bazel
Siga estes passos para configurar o Copilot e começar a gerar regras do Bazel com prompts em linguagem natural.
- Adicione extensões de arquivo Starlark à lista de idiomas do Copilot
No VS Code, abra a Paleta de Comandos com Ctrl+Shift+P, procure por Preferências: Abrir Configurações (JSON) e adicione a seguinte linha ao seu arquivo settings.json:"github.copilot.editor.enableAutoCompletions": true,
"files.associations": {"bzl": "python", "BUILD": "python"}
Isso diz ao Copilot para tratar arquivos .bzl e BUILD como Python, o que ativa as conclusões. Para IDEs JetBrains, vá em Configurações > Idiomas e Estruturas > GitHub Copilot e adicionebzleBUILDà lista de padrões de arquivo. - Abra um arquivo BUILD e escreva um comentário descrevendo o alvo
Crie uma nova linha no seu arquivo BUILD e digite um comentário que descreva o que você quer que o Copilot gere. Por exemplo:# go_library para o pacote auth
Pressione Enter e aguarde o Copilot sugerir as próximas linhas. O Copilot normalmente gera a regrago_librarycom os atributos corretosname,srcs,depseimportpath. - Aceite a sugestão ou alterne entre alternativas
Pressione Tab para aceitar o bloco de código sugerido. Se a sugestão não for o que você precisa, pressione Alt+] ou Option+] para alternar entre conclusões alternativas. O Copilot pode oferecer diferentes conjuntos de atributos ou listas de dependências com base no contexto do arquivo. - Solicite alvos multilíngues em um único arquivo BUILD
Para repositórios poliglotas, escreva um comentário que liste os idiomas e alvos que você precisa. Exemplo:# py_binary para a ferramenta CLI, go_library para o backend, java_library para o SDK
O Copilot gerará três regras separadas na ordem que você especificou. Verifique se os atributosdepsreferenciam os alvos internos corretos. - Use o Copilot para gerar macros .bzl
Abra um arquivo .bzl e escreva um comentário descrevendo a macro que você deseja. Exemplo:# macro que define um go_binary e um go_test para um serviço
O Copilot gerará uma função com parâmetros paraname,srcsedeps. Você pode então chamar essa macro de vários arquivos BUILD.
Armadilhas comuns ao usar o Copilot com Bazel
O Copilot sugere sintaxe Python em vez de Starlark
Como o Copilot trata arquivos .bzl e BUILD como Python, às vezes ele sugere construções específicas do Python, como def __init__ ou import os. O Starlark não suporta essas construções. Para corrigir isso, escreva um comentário no topo do arquivo dizendo # arquivo de build Starlark para Bazel ou # arquivo de build para Bazel. Isso ajuda o Copilot a ajustar suas conclusões para a sintaxe Starlark.
O Copilot gera nomes de dependências incorretos
O Copilot pode sugerir rótulos de dependência que não existem no seu workspace, como //third_party:some_lib quando seu repositório usa um caminho diferente. Para mitigar isso, forneça um comentário que liste os caminhos reais das dependências. Por exemplo:# deps: //internal/auth, //internal/logger, @com_google_protobuf//:protobuf
O Copilot usará esses caminhos exatos na regra gerada.
O Copilot não oferece conclusões em arquivos BUILD
Se o Copilot permanecer em silêncio quando você digitar em um arquivo BUILD, a extensão do arquivo provavelmente não está mapeada para um idioma suportado. Verifique novamente as configurações do Passo 1. Também verifique se o arquivo não faz parte de um workspace onde o Copilot está desabilitado. No VS Code, observe o ícone na barra de status para o Copilot; ele deve mostrar uma marca de seleção verde. Se mostrar um ícone cinza, clique nele e selecione Habilitar Conclusões.
Regras geradas omitem atributos obrigatórios
As regras do Bazel geralmente exigem atributos específicos como visibility, testonly ou tags. O Copilot pode omiti-los. Após aceitar uma sugestão, adicione manualmente os atributos ausentes. Você também pode escrever um comentário que os solicite explicitamente: # go_library com visibilidade pública e tags manual.
| Item | Arquivo BUILD | Arquivo .bzl |
|---|---|---|
| Descrição | Define alvos de build para um único pacote | Contém macros e funções reutilizáveis |
| Caso de uso do Copilot | Gerar uma ou mais regras a partir de um comentário | Gerar uma macro com parâmetros e lógica |
| Contexto necessário | Deps, srcs e caminhos de workspace existentes | Assinatura da função e tipo de retorno |
| Prompt comum | # java_library para o módulo core |
# macro que cria um go_binary e um go_test |
| Risco | Atributos ausentes ou deps errados | Sintaxe específica do Python em Starlark |
Agora você pode usar o Copilot para escrever regras do Bazel mais rapidamente em repositórios poliglotas. Comece adicionando extensões de arquivo Starlark à lista de idiomas do Copilot e, em seguida, escreva comentários precisos para cada alvo. Para macros complexas, divida o prompt em partes menores e verifique cada bloco gerado. Um próximo passo prático é criar uma pequena macro .bzl que encapsule seu padrão de alvo mais comum e reutilizá-la em vários arquivos BUILD. Isso reduz o trabalho manual e garante consistência entre idiomas.