O GitHub Copilot gera sugestões de código que às vezes violam as regras do seu ESLint. Ao salvar o arquivo, a auto-correção do ESLint altera o código. O Copilot então sugere novamente o estilo original, criando um loop infinito. Este artigo explica por que esses loops ocorrem e fornece configurações exatas para interrompê-los.
A causa raiz é uma incompatibilidade entre o estilo das sugestões do Copilot e sua configuração do ESLint. O Copilot aprende com código público, que pode não seguir as regras do seu projeto. A auto-correção do ESLint ao salvar reverte a saída do Copilot, mas o Copilot não aprende com essas correções em tempo real.
Você aprenderá a desativar a auto-correção do ESLint para linhas geradas pelo Copilot, configurar o Copilot para respeitar as regras do ESLint do seu projeto e usar configurações do editor para quebrar o loop permanentemente.
Principais Conclusões: Interrompa os Loops de Auto-Correção entre Copilot e ESLint
- settings.json do VS Code > “editor.codeActionsOnSave”: Desative a auto-correção do ESLint para tipos de arquivo ou escopos específicos para interromper o loop.
- Configurações do Copilot > “github.copilot.editor.enableAutoCompletions”: Desative temporariamente as conclusões enquanto salva e corrige um arquivo.
- Configuração do ESLint > .eslintrc.json > “rules”: Adicione uma substituição de regra para padrões de código gerados pelo Copilot para evitar o conflito.
Por que o Copilot e o ESLint Criaram um Loop de Auto-Correção
O GitHub Copilot sugere código com base em padrões de repositórios públicos. Esses padrões frequentemente usam aspas simples, indentação de dois espaços ou vírgulas finais que diferem da sua configuração do ESLint. Ao salvar o arquivo, seu editor executa a auto-correção do ESLint, que reformata o código para corresponder às suas regras. O Copilot então vê o código corrigido como contexto e sugere o estilo original novamente na próxima linha ou edição.
Este loop se repete toda vez que você salva. O loop não é um bug no Copilot ou no ESLint. É um conflito entre duas ferramentas com pontos de referência diferentes. O Copilot referencia padrões de código público. O ESLint referencia as regras do seu projeto. Nenhuma das ferramentas ajusta seu comportamento com base na saída da outra durante uma única sessão de edição.
Os gatilhos mais comuns são regras de formatação como quotes, indent, comma-dangle e semi. Se sua configuração do ESLint impõe aspas duplas e o Copilot sugere aspas simples, o loop começa. O mesmo acontece com vírgulas finais ou ponto e vírgula.
Passos para Quebrar o Loop de Auto-Correção
Método 1: Desative a Auto-Correção do ESLint ao Salvar para Arquivos Afetados pelo Copilot
- Abra o settings.json do VS Code
Pressione Ctrl+Shift+P, digite “Preferences: Open Settings (JSON)” e pressione Enter. - Localize a configuração editor.codeActionsOnSave
Encontre ou adicione a linha"editor.codeActionsOnSave": { "source.fixAll.eslint": true }. - Desative a auto-correção do ESLint para tipos de arquivo específicos
Altere a configuração para"editor.codeActionsOnSave": { "source.fixAll.eslint": "explicit" }e adicione um escopo de arquivo. Para apenas arquivos JavaScript, use:"[javascript]": { "editor.codeActionsOnSave": { "source.fixAll.eslint": false } }
Isso mantém a auto-correção para outras linguagens, mas interrompe para arquivos JavaScript onde o Copilot dispara o loop. - Salve o settings.json
Pressione Ctrl+S para salvar. O loop deve parar imediatamente.
Método 2: Desative Temporariamente as Conclusões do Copilot
- Abra o menu de status do Copilot
Clique no ícone do Copilot na barra de status do VS Code, no canto inferior direito. - Desative as conclusões
Selecione “Disable Completions” no menu. O Copilot parará de sugerir código enquanto você salva e corrige o arquivo atual. - Salve e corrija o arquivo
Pressione Ctrl+S para salvar. A auto-correção do ESLint executa uma vez e para, pois o Copilot não está gerando novas sugestões. - Reative as conclusões
Clique no ícone do Copilot novamente e selecione “Enable Completions”. O loop não deve retomar, pois o arquivo agora corresponde às regras do ESLint.
Método 3: Configure o Copilot para Respeitar as Regras do ESLint
- Adicione um arquivo .github/copilot-instructions.md
Crie este arquivo na raiz do seu repositório. Escreva instruções como:Sempre use aspas duplas.Nunca use vírgulas finais.Indente com dois espaços.
O Copilot lê este arquivo e ajusta suas sugestões para o seu projeto. - Reinicie o VS Code
Feche e reabra o VS Code. O Copilot recarrega as instruções. - Teste com uma nova linha
Digite algumas linhas de código e aceite uma sugestão do Copilot. Salve o arquivo. O loop não deve ocorrer, pois o Copilot agora corresponde às suas regras do ESLint.
Método 4: Substitua as Regras do ESLint para Código Gerado pelo Copilot
- Abra seu arquivo .eslintrc.json
Este arquivo está na raiz do seu projeto. Se não existir, crie-o com uma configuração básica. - Adicione uma substituição de regra para a regra problemática
Por exemplo, para permitir aspas simples em código gerado pelo Copilot sem disparar a auto-correção, adicione:"rules": { "quotes": ["warn", "single"] }
Alterar de “error” para “warn” impede que a auto-correção execute nessa regra. O ESLint ainda destaca o problema, mas não altera o código. - Salve o .eslintrc.json
Pressione Ctrl+S. O loop para, pois o ESLint não corrige mais automaticamente a regra de aspas.
Se o Copilot Ainda Disparar um Loop de Auto-Correção Após Essas Correções
O Copilot sugere código que o ESLint auto-corrige para um estilo diferente na mesma linha
Isso acontece quando o Copilot completa uma linha com ponto e vírgula e sua regra do ESLint impõe a ausência de ponto e vírgula. O ESLint remove o ponto e vírgula ao salvar. O Copilot então vê a linha sem ponto e vírgula e sugere adicioná-lo novamente. Para corrigir, adicione um arquivo .github/copilot-instructions.md com a instrução Nunca use ponto e vírgula. Isso informa ao Copilot para corresponder ao seu estilo desde o início.
A auto-correção do ESLint executa a cada tecla pressionada, não apenas ao salvar
Alguns editores executam a auto-correção do ESLint em tempo real enquanto você digita. Isso pode criar um loop antes mesmo de salvar. Para interromper, abra as configurações do VS Code e defina "eslint.run": "onSave". Isso restringe o ESLint a executar apenas quando você salva o arquivo, não durante a digitação.
O Copilot continua sugerindo o estilo antigo depois que você corrige o arquivo
A janela de contexto do Copilot pode ainda referenciar as linhas não corrigidas. Feche o arquivo e reabra-o. O Copilot reconstrói seu contexto a partir do conteúdo atual do arquivo, que agora corresponde às regras do ESLint. O loop não deve retornar.
| Item | Desativar Auto-Correção do ESLint ao Salvar | Desativar Temporariamente as Conclusões do Copilot |
|---|---|---|
| Efeito no loop | Impede que a auto-correção execute, então as sugestões do Copilot nunca são revertidas | Impede que o Copilot gere novas sugestões enquanto você corrige o arquivo |
| Persistência | Permanente para os tipos de arquivo configurados | Temporário até você reativar as conclusões |
| Tempo de configuração | 30 segundos | 5 segundos |
| Melhor para | Projetos com regras ESLint estritas e uso frequente do Copilot | Correções rápidas quando o loop está bloqueando seu trabalho |
Agora você pode interromper o loop de auto-correção desativando a auto-correção do ESLint ao salvar para tipos de arquivo específicos, desativando temporariamente as conclusões do Copilot ou configurando o Copilot para respeitar suas regras do ESLint. Para problemas persistentes, adicione um arquivo .github/copilot-instructions.md com suas preferências de estilo. Tente combinar a mudança permanente de configurações com o arquivo de instruções para obter o resultado mais confiável. Uma dica avançada: use a configuração "eslint.run": "onSave" junto com "editor.codeActionsOnSave": { "source.fixAll.eslint": "explicit" } para manter a auto-correção disponível, mas sob seu controle.