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
-
Pull Request: Você abre um Pull Request (PR) da sua branch de desenvolvimento para a
main. -
Gatilho da Action: A abertura do PR aciona um workflow do GitHub Actions.
-
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.
-
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.
-
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.
-
Acesse o site da Plataforma OpenAI.
-
Faça login ou crie uma conta.
-
Vá para a seção "API Keys" no menu esquerdo.
-
Clique em "Create new secret key", dê um nome a ela (ex:
GitHub Code Review) e copie a chave gerada (ela começa comsk-...). 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
-
No seu repositório no GitHub, vá para Settings > Secrets and variables > Actions.
-
Clique em New repository secret.
-
Name:
OPENAI_API_KEY -
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".
-
Na raiz do seu projeto local, crie um novo arquivo em:
.github/workflows/ai-code-review.yml -
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.”
-
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.