Dev Wiki | Johnny Salazar Reidel

Este guia explica como configurar um processo de revisão de código local e sob demanda, utilizando o Copilot no VS Code. Vamos criar um atalho de teclado no seu Mac que aciona o Copilot com um prompt de revisão detalhado e personalizado, permitindo uma análise rápida e consistente do seu trabalho antes de qualquer commit.

Como Funciona

  1. Trabalho no Código: Você desenvolve suas funcionalidades normalmente no VS Code.

  2. Atalho Mágico: Antes de commitar, você pressiona o atalho de teclado configurado (ex: Cmd + Option + C).

  3. Prompt Automático: O atalho abre o chat do Copilot e preenche-o automaticamente com o comando @workspace e o seu prompt de revisão de código completo.

  4. Análise da IA: Você apenas pressiona Enter. O Copilot analisa os arquivos abertos e as alterações pendentes no seu repositório, fornecendo uma revisão de código detalhada diretamente na janela de chat.

  5. Revisão Humana: Você lê as sugestões da IA, aplica as alterações necessárias e, quando estiver satisfeito, pode fazer o commit com segurança.

Passo 1: Mantenha seu Prompt Salvo e Formatado

É fundamental manter o seu prompt personalizado salvo e centralizado.

Importante: O arquivo keybindings.json não aceita múltiplas linhas para o prompt. Sempre que você editar o seu prompt na wiki, precisará convertê-lo para uma única linha de texto antes de o colar no Passo 2. Ferramentas online como "Text to single line converter" podem ajudar a fazer isso rapidamente, substituindo as quebras de linha por \n. O prompt completo que será usado está no passo seguinte.

Passo 2: Configurar o Atalho de Teclado no VS Code (Mac)

  1. Com o VS Code aberto, pressione Cmd + Shift + P para abrir a Paleta de Comandos.

  2. Digite Preferences: Open Keyboard Shortcuts (JSON) e selecione essa opção. Isso abrirá o seu arquivo pessoal keybindings.json.

  3. Dentro dos colchetes [...] do arquivo, cole o seguinte bloco de código. Se o arquivo já tiver outras configurações, adicione uma vírgula , após o bloco anterior antes de colar este.

{
    "key": "cmd+alt+c",
    "command": "workbench.action.chat.open",
    "args": {
        "query": "@workspace\n\nAja como um revisor de código sênior, especialista em Joomla 5+, PHP 8.3 e segurança web.\nAnalise as seguintes alterações de código e forneça feedback construtivo.\n\nSiga estas regras estritamente:\n1.  **Contexto Joomla:** Todo o código deve seguir as melhores e mais recentes práticas do Joomla 4, 5 e 6. Priorize dos métodos nativos do Joomla.\n\n2.  **Segurança em Primeiro Lugar:**\n    * Verifique se todas as entradas de usuário (GET, POST, etc.) são devidamente sanitizadas e validadas usando os filtros do Joomla (ex: `Joomla\\CMS\\Factory::getApplication()->input->get('nome_do_campo', 'valor_padrao', 'FILTER_TYPE')`).\n    * Garanta que todas as queries SQL utilizam `binds` (`$db->bind()`) ou parâmetros seguros para prevenir SQL Injection. Queries concatenadas com variáveis são inaceitáveis.\n    * **Input:** Verifique se todas as entradas de usuário (GET, POST, etc.) são devidamente sanitizadas e validadas usando os filtros do Joomla (ex: `Joomla\\CMS\\Factory::getApplication()->input->get('nome_do_campo', 'valor_padrao', 'FILTER_TYPE')`).\n    * **SQL:** Garanta que todas as queries SQL utilizam `binds` (`$db->bind()`) ou parâmetros seguros para prevenir SQL Injection. Queries concatenadas com variáveis são inaceitáveis.\n    * **CSRF:** Assegure que todos os formulários que modificam dados incluem e validam um token de segurança do Joomla (uso de `Joomla\\CMS\\HTML\\HTMLHelper::_('form.token')` na view e `Joomla\\CMS\\Session\\Session::checkToken()` no controller).\n\n3.  **Código Moderno:**\n    * Identifique e sugira a substituição de funções ou métodos obsoletos do PHP e do Joomla.\n    * Incentive o uso de recursos modernos do PHP 8.3 onde for aplicável, mas indicando desde que versão do PHP o recurso sugerido está disponível.\n\n4.  **Clareza e Performance:** Verifique se o código está claro, bem comentado e se não há loops ou queries ineficientes que possam impactar a performance.\n\n5. **Boas Práticas e Manutenção:**\n    * **Internacionalização:** Verifique se os textos visíveis para o utilizador não estão 'hardcoded' no código e se utilizam o sistema de tradução do Joomla (ex: `Joomla\\CMS\\Language\\Text::_('COM_MEUCOMPONENTE_MENSAGEM')`).\n    * **Gestão de Erros:** Analise se o código utiliza blocos `try...catch` em operações críticas (como interações com a base de dados ou APIs externas) para gerir exceções.\n\nFormate a resposta em Markdown, usando seções: \"✅ **Pontos Positivos**\", \"⚠️ **Pontos de Melhoria**\" e \"🚨 **Alertas de Segurança**\".\nPara cada ponto de melhoria ou alerta, tente forner o código com a correção.\nSe nenhum problema for encontrado, responda apenas: \"Ótimo trabalho! O código segue todas as boas práticas.\""
    }
}

  1. Salve o arquivo keybindings.json. O atalho já estará ativo!

Passo 3 (Opcional): Configurar um Lembrete Automático no Commit

Para garantir que a revisão nunca seja esquecida, você pode criar um "gancho" (hook) do Git que será acionado toda vez que você tentar fazer um commit. Ele irá pausar o processo e perguntar se a revisão foi feita.

  1. Abra o arquivo pre-commit no VS Code. Como a pasta .git é oculta, a forma mais garantida é usar o terminal integrado do VS Code.

    • Abra o Terminal: Use o atalho Ctrl + ' (Control + aspas simples) ou vá ao menu Terminal > New Terminal.

    • Execute o Comando: No terminal, digite o seguinte comando e pressione Enter. Ele criará e/ou abrirá o arquivo.

      code .git/hooks/pre-commit
      
    • Se o comando falhar com o erro zsh: command not found: code:

      1. Com o VS Code aberto, pressione Cmd + Shift + P para abrir a Paleta de Comandos.

      2. Digite Shell Command: Install 'code' command in PATH e selecione essa opção.

      3. Feche e abra novamente o terminal e tente o comando mais uma vez.

  2. Cole o seguinte conteúdo no arquivo pre-commit: Nota: A versão abaixo foi atualizada para ser compatível tanto com o terminal quanto com clientes Git gráficos (como o GitHub Desktop) no Mac.

    #!/bin/sh
    # Script para garantir que a revisão de código com IA foi realizada.
    # Compatível com terminal interativo e GUIs no macOS (ex: GitHub Desktop).
    
    # Verifica se o script está rodando em um terminal interativo
    if [ -t 0 ]; then
      # MODO TERMINAL: Pergunta interativa na linha de comando.
      exec < /dev/tty
      echo ""
      echo "------------------------------------------------------------------"
      echo " Lembrete: Use o atalho (Cmd + Option + C) para a revisão com IA."
      echo "------------------------------------------------------------------"
      read -p "Você já executou a revisão de código com a IA? (s/n) " resposta
      if [ "$resposta" = "s" ]; then
        exit 0
      else
        echo "❌ Commit cancelado. Por favor, execute a revisão antes de commitar."
        exit 1
      fi
    # Verifica se está rodando no macOS para tentar um prompt gráfico
    elif [ "$(uname)" = "Darwin" ]; then
      # MODO GRÁFICO (macOS): Exibe um diálogo nativo.
      # Se o botão "Não" for clicado, o comando osascript falha (retorna código 1), cancelando o commit.
      osascript -e 'tell app "System Events" to display dialog "Lembrete: Use o atalho (Cmd + Option + C) para a revisão com IA.\n\nVocê já executou a revisão de código?" buttons {"Não, cancelar commit", "Sim, continuar"} default button "Sim, continuar" with title "Revisão de Código com IA" with icon note'
      exit $?
    fi
    
    # FALLBACK: Se não for interativo e não for macOS, permite o commit.
    exit 0
    
  3. Dê permissão de execução ao script (passo crucial): No terminal, certificando-se de que você está no diretório raiz do seu repositório, execute:

    chmod +x .git/hooks/pre-commit
    

Agora, sempre que você executar git commit (seja pelo terminal ou pela interface do VS Code), este lembrete aparecerá, garantindo que você sempre revise seu código.

Conclusão

Pronto! Agora você tem uma ferramenta poderosa e extremamente ágil para fazer revisões de código de alta qualidade diretamente no seu editor. Pressionando Cmd + Alt + C e depois Enter, você aciona uma análise completa do seu trabalho, garantindo que as melhores práticas de desenvolvimento, segurança e manutenção sejam sempre seguidas.