Como Restringir o GitHub Copilot a Padrões de Arquivo Específicos em um Repositório
🔍 WiseChecker

Como Restringir o GitHub Copilot a Padrões de Arquivo Específicos em um Repositório

O GitHub Copilot oferece sugestões de código em todo o seu projeto, mas às vezes você quer que ele fique em silêncio em certos arquivos. Arquivos de configuração, código gerado ou bibliotecas de terceiros geralmente produzem sugestões irrelevantes ou ruidosas. Ao restringir o Copilot a padrões de arquivo específicos, você pode focar sua assistência nos arquivos onde realmente escreve lógica. Este artigo explica como configurar exclusões e inclusões de padrões de arquivo usando um arquivo .github/copilot.yml no seu repositório.

Principais Pontos: Restringindo o GitHub Copilot por Padrão de Arquivo

  • Arquivo .github/copilot.yml na raiz do repositório: Define regras de inclusão e exclusão usando padrões glob para caminhos de arquivo.
  • A sintaxe dos padrões segue as convenções do gitignore: Use asteriscos, pontos de interrogação e intervalos de colchetes para corresponder a nomes de arquivos e diretórios.
  • Regras de exclusão sobrescrevem regras de inclusão: Se um arquivo corresponder tanto a um padrão de inclusão quanto a um de exclusão, o padrão de exclusão tem precedência.

Como Funciona a Restrição de Arquivos do GitHub Copilot

O GitHub Copilot verifica um arquivo de configuração chamado copilot.yml localizado no diretório .github do seu repositório. Este arquivo usa sintaxe YAML e suporta duas chaves principais: include e exclude. Cada chave recebe uma lista de padrões glob que correspondem a caminhos de arquivo relativos à raiz do repositório.

Quando você abre um arquivo, o Copilot avalia os padrões nesta ordem:

  1. Se o caminho do arquivo corresponder a qualquer padrão na lista exclude, o Copilot é desabilitado para esse arquivo, independentemente das regras de inclusão.
  2. Se o caminho do arquivo corresponder a qualquer padrão na lista include e não corresponder a nenhum padrão de exclusão, o Copilot é habilitado.
  3. Se o caminho do arquivo não corresponder a nenhuma lista, o Copilot usa o comportamento padrão, que é habilitado para todos os arquivos.

Este design permite criar uma lista de permissões (whitelist) de arquivos onde o Copilot está ativo ou uma lista de bloqueios (blacklist) de arquivos onde ele é suprimido. Você também pode combinar ambas as abordagens para um controle preciso.

Pré-requisitos

Antes de configurar as restrições de padrão de arquivo, confirme estes requisitos:

  • Você tem uma assinatura do GitHub Copilot para sua conta pessoal ou organização.
  • Você tem acesso de escrita ao repositório onde deseja adicionar o arquivo de configuração.
  • Seu editor ou IDE tem a extensão do GitHub Copilot instalada e está conectado à sua conta do GitHub.
  • A versão da extensão do Copilot é 1.40 ou superior para VS Code, ou a versão recente equivalente para JetBrains ou outras IDEs suportadas.

Passos para Criar o Arquivo copilot.yml e Definir Padrões

Siga estes passos para adicionar um arquivo .github/copilot.yml ao seu repositório e configurar as restrições de padrão de arquivo.

  1. Crie o diretório .github se ele não existir
    Navegue até a raiz do seu repositório local. Se não houver uma pasta .github, crie uma usando o explorador de arquivos ou o comando de terminal mkdir .github.
  2. Crie o arquivo copilot.yml
    Dentro da pasta .github, crie um novo arquivo chamado copilot.yml. Use um editor de texto simples ou sua IDE.
  3. Adicione padrões de inclusão para criar uma whitelist de arquivos específicos
    Abra copilot.yml e adicione uma chave include seguida por uma lista de padrões glob. Por exemplo, para habilitar o Copilot apenas em arquivos .ts e .tsx dentro do diretório src, escreva:

    include:
    - 'src//ts'
    - 'src/
    /tsx'

  4. Adicione padrões de exclusão para criar uma blacklist de arquivos específicos
    Após a seção de inclusão, adicione uma chave exclude com padrões para arquivos onde você deseja desabilitar o Copilot. Por exemplo, para bloquear o Copilot em todos os arquivos dentro de uma pasta generated e em arquivos .min.js, adicione:

    exclude:
    - 'generated/'
    - '
    /min.js'

  5. Salve o arquivo e faça commit no seu repositório
    Salve copilot.yml. Adicione o novo arquivo com git add .github/copilot.yml, depois faça commit com uma mensagem como “Adicionar restrições de padrão de arquivo do Copilot” e envie o commit para o repositório remoto.
  6. Verifique as restrições no seu editor
    Abra um arquivo que corresponda a um padrão de exclusão. O ícone de status do Copilot na barra de ferramentas inferior deve mostrar um estado desabilitado ou silenciado. Abra um arquivo que corresponda a um padrão de inclusão e confirme que as sugestões aparecem normalmente.

Problemas Comuns e Erros de Padrão a Evitar

Copilot Ainda Sugere em Arquivos Excluídos

Se o Copilot continuar oferecendo sugestões em arquivos que você pretendia excluir, verifique estas possibilidades:

  • O arquivo copilot.yml não está no diretório .github. Verifique se o caminho é .github/copilot.yml relativo à raiz do repositório.
  • O arquivo não foi commitado e enviado. O Copilot lê a configuração do repositório remoto, não da sua cópia de trabalho local.
  • A sintaxe do padrão está incorreta. Use barras normais para separadores de diretório, mesmo no Windows. Verifique se o padrão glob corresponde exatamente ao caminho do arquivo.
  • O padrão de exclusão está escrito errado ou usa maiúsculas/minúsculas diferentes. Os caminhos de arquivo diferenciam maiúsculas de minúsculas no Linux e macOS, e o Copilot os corresponde considerando maiúsculas/minúsculas.

Copilot Não Sugere em Arquivos Incluídos

Quando padrões de inclusão são definidos, o Copilot só ativa para arquivos que correspondem a pelo menos um padrão de inclusão. Se um arquivo não corresponder a nenhum padrão de inclusão, o Copilot permanece em silêncio. Para corrigir isso, revise seus padrões de inclusão quanto à precisão. Por exemplo, o padrão src/ts corresponde a arquivos diretamente em src, mas não em src/components. Use src//ts para corresponder a todos os subdiretórios.

Padrões de Exclusão Sobrescrevem Padrões de Inclusão

Um equívoco comum é que os padrões de inclusão têm prioridade sobre os de exclusão. Na realidade, se um arquivo corresponder tanto a um padrão de inclusão quanto a um de exclusão, o padrão de exclusão vence. Por exemplo, se você incluir src//ts mas excluir src/generated/, o Copilot não ativará em src/generated/constants.ts. Para evitar comportamentos inesperados, projete seus padrões de modo que os padrões de exclusão cubram apenas os arquivos que você realmente deseja bloquear.

Padrões Não Suportam Negação ou Comentários

A sintaxe de padrão glob no copilot.yml não suporta padrões de negação como !important.ts ou comentários inline. Cada linha deve ser um padrão glob válido. Se você precisar excluir a maioria dos arquivos exceto alguns, use um padrão de exclusão amplo e depois liste as exceções como padrões de inclusão. No entanto, lembre-se de que a exclusão ainda sobrescreve a inclusão, então essa abordagem funciona apenas se os arquivos de exceção não corresponderem ao padrão de exclusão.

Restrição de Arquivos do GitHub Copilot: Padrões de Inclusão vs Exclusão

Item Padrões de Inclusão Padrões de Exclusão
Propósito Lista de permissões de arquivos onde o Copilot está ativo Lista de bloqueios de arquivos onde o Copilot está desabilitado
Comportamento padrão Se nenhum padrão de inclusão existir, todos os arquivos são elegíveis Se nenhum padrão de exclusão existir, nenhum arquivo é bloqueado
Prioridade Menor prioridade que a exclusão Maior prioridade que a inclusão
Caso de uso comum Limitar o Copilot ao código-fonte em pastas específicas Bloquear o Copilot em arquivos gerados, configurações ou código de terceiros
Exemplos de padrão src//py ou lib/rb dist/ ou /lock

Agora você pode controlar exatamente onde o GitHub Copilot fornece sugestões no seu repositório usando padrões de inclusão e exclusão no arquivo .github/copilot.yml. Comece identificando os tipos de arquivo ou diretórios que produzem mais ruído e adicione padrões de exclusão correspondentes. Para projetos com muitos arquivos que não são de código-fonte, considere usar padrões de inclusão para restringir o Copilot aos seus diretórios de código principais. Lembre-se de commitar e enviar o arquivo de configuração para que todos os membros da equipe se beneficiem das mesmas restrições. Como dica final, teste seus padrões com um pequeno conjunto de arquivos primeiro para confirmar o comportamento antes de aplicar a todo o repositório.