Dev Wiki | Johnny Salazar Reidel

Este guia explica como configurar um processo de revisão de código automatizado que utiliza uma Inteligência Artificial (como o motor do Copilot) e um prompt personalizado. A IA analisará seus Pull Requests e postará um comentário com as sugestões, funcionando como um revisor de código virtual.

Como Funciona

  1. Pull Request: Você abre um Pull Request (PR) da sua branch de desenvolvimento para a main.

  2. Gatilho da Action: A abertura do PR aciona um workflow do GitHub Actions.

  3. Análise com IA: A Action envia as alterações de código do seu PR para um modelo de linguagem (GPT-4o), juntamente com o seu prompt de instruções detalhado.

  4. Comentário no PR: A IA gera uma revisão de código baseada nas suas regras e a Action posta essa análise como um comentário diretamente no seu Pull Request.

  5. Revisão Humana: Você lê as sugestões da IA, faz os ajustes necessários e, quando estiver satisfeito, mescla o PR.

Pré-requisito: Obter uma Chave de API da OpenAI

Como o Copilot não oferece uma API direta para este tipo de automação, usaremos a API da OpenAI, que é a empresa que desenvolve os modelos de linguagem por trás dele.

  1. Acesse o site da Plataforma OpenAI.

  2. Faça login ou crie uma conta.

  3. Vá para a seção "API Keys" no menu esquerdo.

  4. Clique em "Create new secret key", dê um nome a ela (ex: GitHub Code Review) e copie a chave gerada (ela começa com sk-...). Guarde-a em segurança, pois você não poderá vê-la novamente.

Nota: O uso da API da OpenAI pode ter custos, embora o volume para revisão de código seja geralmente baixo e acessível.

Passo 1: Adicionar a Chave de API aos Secrets do GitHub

  1. No seu repositório no GitHub, vá para Settings > Secrets and variables > Actions.

  2. Clique em New repository secret.

  3. Name: OPENAI_API_KEY

  4. Secret: Cole a sua chave de API da OpenAI que você acabou de criar.

Passo 2: Criar o Workflow de Análise com IA

Agora, vamos criar a Action que fará a "mágica".

  1. Na raiz do seu projeto local, crie um novo arquivo em: .github/workflows/ai-code-review.yml

  2. Cole o seguinte conteúdo nesse arquivo (ajuste o trecho do prompt conforme regras que deseja para o repositório que está trabalhando. No exemplo abaixo usamos um prompt para Joomla e PHP):

# Nome do Workflow
name: AI Code Review

# Gatilho: Executa quando um Pull Request for aberto ou atualizado para a branch main
on:
  pull_request:
    branches: [ main ]

permissions:
  contents: read
  pull-requests: write

jobs:
  code-review:
    name: AI Code Review
    runs-on: ubuntu-latest
    steps:
      - name: Run AI Code Reviewer
        uses: alex-c/ai-code-reviewer@latest
        with:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
          OPENAI_MODEL: "gpt-4o" # Modelo mais recente e eficiente
          PROMPT: |
            Aja como um revisor de código sênior, especialista em Joomla 5+, PHP 8.3 e segurança web.
            Analise as seguintes alterações de código e forneça feedback construtivo.

            Siga estas regras estritamente:
            1.  **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.

            2.  **Segurança em Primeiro Lugar:**
                * 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')`).
                * 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.
                * **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')`).
                * **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.
                * **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).

            3.  **Código Moderno:**
                * Identifique e sugira a substituição de funções ou métodos obsoletos do PHP e do Joomla.
                * 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.

            4.  **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.

            5. **Boas Práticas e Manutenção:**
                * **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')`).
                * **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.

            Formate a resposta em Markdown, usando seções: "✅ **Pontos Positivos**", "⚠️ **Pontos de Melhoria**" e "🚨 **Alertas de Segurança**".
            Para cada ponto de melhoria ou alerta, tente forner o código com a correção.
            Se nenhum problema for encontrado, responda apenas: "Ótimo trabalho! O código segue todas as boas práticas.”

  1. Adicione, faça o commit e o push deste novo arquivo para o seu repositório.

Passo 3: (Opcional) Regra de Proteção de Branch

Diferente de um linter que dá um "passou/falhou" definitivo, a análise de uma IA é mais um feedback para ser considerado. Por isso, não é comum torná-la um status check obrigatório.

O ideal é usar a revisão da IA como um forte suporte à sua própria revisão manual antes de mesclar o Pull Request.

Conclusão

Pronto! Agora, toda vez que você abrir um Pull Request, em poucos minutos, um "robô" revisor treinado com as suas próprias regras aparecerá e deixará um comentário detalhado, ajudando você a garantir a máxima qualidade e segurança do seu código antes que ele chegue à branch main.