GitHub Copilot vs Prettier: Corrigindo Condição de Corrida na Formatação Automática no VS Code
🔍 WiseChecker

GitHub Copilot vs Prettier: Corrigindo Condição de Corrida na Formatação Automática no VS Code

Quando você usa GitHub Copilot e Prettier juntos no VS Code, pode notar que o código gerado pelo Copilot às vezes fica mal formatado ou com indentação incorreta. Isso acontece porque ambas as extensões tentam modificar o documento ao mesmo tempo. Uma extensão escreve o código enquanto a outra o reformata, causando edições sobrepostas que corrompem o arquivo. Este artigo explica por que a condição de corrida ocorre e fornece uma correção confiável para evitá-la.

Principais Conclusões: Resolvendo a Condição de Corrida entre Copilot e Prettier

  • Configurações do VS Code > editor.formatOnSave: Defina como true e desative formatOnPaste para separar a formatação das sugestões inline.
  • Configurações do VS Code > editor.codeActionsOnSave: Adicione “source.organizeImports”: true para executar o Prettier somente após o Copilot terminar de digitar.
  • Configurações do VS Code > editor.formatOnType: Defina como false para impedir que o Prettier reformate durante a sugestão.

ADVERTISEMENT

Por que a Condição de Corrida Acontece

O GitHub Copilot e o Prettier respondem às alterações no documento no VS Code. O Copilot insere código enquanto você digita ou aceita uma sugestão inline. O Prettier observa essas mesmas alterações e reformata o documento imediatamente. Quando ambas as extensões agem no mesmo evento de edição, suas modificações colidem. Uma extensão pode escrever um colchete de fechamento enquanto a outra o remove, deixando o arquivo em um estado inconsistente. Isso é uma condição de corrida clássica, onde a ordem de execução não é garantida. O resultado geralmente é sintaxe quebrada, espaços extras ou caracteres ausentes que exigem correção manual.

A causa raiz é que o VS Code aciona a formatação no mesmo evento que o Copilot usa para inserir código. Por padrão, o Prettier pode ser configurado para formatar ao salvar, ao digitar ou ao colar. Se qualquer um desses gatilhos disparar enquanto o Copilot está no meio da geração de uma sugestão, as duas extensões competem pelo buffer do documento. O problema é mais comum em arquivos grandes ou com sintaxe complexa, onde a operação de formatação leva mais tempo.

Passos para Prevenir a Condição de Corrida

A correção envolve configurar o VS Code para que o Prettier formate o documento somente após o Copilot terminar seu trabalho. Use os seguintes passos para ajustar suas configurações de usuário ou do workspace.

  1. Abra as Configurações do VS Code
    Clique no ícone de engrenagem no canto inferior esquerdo e selecione Configurações. Alternativamente, pressione Ctrl+, no Windows ou Cmd+, no Mac.
  2. Pesquise por formatar ao salvar
    Na barra de pesquisa no topo, digite “formatar ao salvar”. Localize a configuração Editor: Formatar ao Salvar e marque a caixa para ativá-la.
  3. Desative formatar ao digitar
    Pesquise por “formatar ao digitar”. Desmarque a configuração Editor: Formatar ao Digitar. Isso impede que o Prettier reformate o documento enquanto você digita ou enquanto o Copilot gera uma sugestão inline.
  4. Desative formatar ao colar
    Pesquise por “formatar ao colar”. Desmarque a configuração Editor: Formatar ao Colar. Isso evita reformatação quando o Copilot cola um bloco de código no documento.
  5. Configure ações de código ao salvar
    Pesquise por “ações de código ao salvar”. Clique em Editar no settings.json. Adicione ou modifique a seguinte entrada:
    "editor.codeActionsOnSave": {
    "source.organizeImports": true
    }

    Isso garante que o Prettier seja executado como uma ação de código após o evento de salvar, não durante o evento de edição.
  6. Defina o Prettier como formatador padrão
    Pesquise por “formatador padrão”. Selecione Prettier no menu suspenso para a configuração Editor: Formatador Padrão. Isso garante que apenas o Prettier lide com a formatação, não o formatador integrado ou outras extensões.
  7. Reinicie o VS Code
    Feche e reabra o VS Code para aplicar todas as alterações de configuração. Teste aceitando uma sugestão do Copilot e salvando o arquivo. A formatação deve ser aplicada sem corrupção.

ADVERTISEMENT

Se a Condição de Corrida Ainda Ocorrer

Sugestões do Copilot ainda mal formatadas após a correção

Se o problema persistir, verifique se outra extensão também está formatando o documento. Extensões como ESLint, Stylelint ou editorconfig podem acionar eventos de formatação adicionais. Desative temporariamente todas as extensões não essenciais. Se o problema parar, reative as extensões uma a uma para identificar a conflitante.

Prettier não executa ao salvar

Se a formatação não for aplicada ao salvar, verifique se o Prettier está instalado e habilitado. Abra o painel de Extensões, pesquise por Prettier e certifique-se de que não está desabilitado. Confirme também se o arquivo de configurações do workspace não substitui as configurações do usuário. Abra .vscode/settings.json no seu projeto e verifique se há valores conflitantes.

Copilot para de sugerir código

Se desativar formatar ao digitar fizer o Copilot parar de fornecer sugestões, isso não é um efeito colateral direto. O Copilot não depende de formatar ao digitar. No entanto, se você desativou as sugestões inline acidentalmente, verifique as configurações da extensão do Copilot. Abra o painel de Extensões, clique em Copilot e certifique-se de que Habilitar Sugestões Inline está marcado.

Sugestões Inline do Copilot vs Formatar ao Salvar do Prettier: Comparação

Item Sugestões Inline do Copilot (padrão) Formatar ao Salvar do Prettier (recomendado)
Evento de gatilho Pressionar tecla ou pausa após digitar Salvar arquivo (Ctrl+S)
Risco de conflito Alto quando combinado com formatar ao digitar ou formatar ao colar Baixo porque a formatação ocorre após o Copilot terminar de escrever
Experiência do usuário O código aparece instantaneamente, mas pode exigir limpeza manual O código é formatado consistentemente após salvar
Recomendado ou não Use como está Ative para formatação estável

Ao desativar formatar ao digitar e formatar ao colar, você impede que o Prettier reaja ao mesmo evento de edição que o Copilot usa. Formatar ao salvar executa após o documento estar estável. Essa separação elimina completamente a condição de corrida. Se você preferir formatação em tempo real, pode ativar formatar ao digitar e aceitar correções manuais ocasionais. Mas para a maioria dos usuários, a abordagem baseada em salvar fornece um fluxo de trabalho confiável sem código corrompido.

ADVERTISEMENT