Este projeto é uma ferramenta de análise de código que utiliza múltiplos provedores de IA para fornecer sugestões de melhoria em projetos. Por padrão, utiliza o Google Gemini, mas suporta integração com outros provedores.
- Análise estática de código
- Sugestões de melhoria em português do Brasil
- Suporte a múltiplos provedores de IA:
- Google Gemini (padrão)
- OpenAI GPT
- DeepSeek
- Ollama (para execução local)
- Análise de repositórios Git
- Relatórios detalhados em formato JSON
- Configuração flexível de provedores de IA
- Python 3.8+
- Git instalado
- Pelo menos uma das seguintes chaves de API:
- Google Gemini API Key
- OpenAI API Key
- DeepSeek API Key
- Ollama instalado localmente (opcional)
Este pacote está disponível no PyPI e pode ser instalado via pip:
-
pip install refactool
- Configure o arquivo
.env:# Configuração do Gemini (Padrão) GEMINI_API_KEY=sua-chave-api-aqui # Configuração do Git (Windows) GIT_PYTHON_GIT_EXECUTABLE=C:\Program Files\Git\bin\git.exe # Configurações Opcionais de Outros Provedores OPENAI_API_KEY=sua-chave-openai-aqui DEEPSEEK_API_KEY=sua-chave-deepseek-aqui OLLAMA_URL=http://localhost:11434/api/generate OLLAMA_MODEL=llama2:13b
OU
- Clone o repositório:
git clone https://github.com/gabrielsalvesdev/refactool cd refactool-beta - Instale as dependências:
pip install -r requirements.txt
- Configure o arquivo
.env:# Configuração do Gemini (Padrão) GEMINI_API_KEY=sua-chave-api-aqui # Configuração do Git (Windows) GIT_PYTHON_GIT_EXECUTABLE=C:\Program Files\Git\bin\git.exe # Configurações Opcionais de Outros Provedores OPENAI_API_KEY=sua-chave-openai-aqui DEEPSEEK_API_KEY=sua-chave-deepseek-aqui OLLAMA_URL=http://localhost:11434/api/generate OLLAMA_MODEL=llama2:13b
Para analisar um repositório usando o provedor padrão (Gemini):
python analyze_repo.py https://github.com/usuario/repositorioPara especificar qual provedor de IA usar:
# Usando OpenAI
python analyze_repo.py https://github.com/usuario/repositorio --provider openai
# Usando DeepSeek
python analyze_repo.py https://github.com/usuario/repositorio --provider deepseek
# Usando Ollama local
python analyze_repo.py https://github.com/usuario/repositorio --provider ollama# Salvar relatório em arquivo específico
python analyze_repo.py https://github.com/usuario/repositorio -o relatorio.json
# Usar arquivo de configuração personalizado
python analyze_repo.py https://github.com/usuario/repositorio -c config.json
# Análise com múltiplos provedores
python analyze_repo.py https://github.com/usuario/repositorio --providers gemini,openai,deepseek
# Análise focada em diretórios específicos
python analyze_repo.py https://github.com/usuario/repositorio --dirs src/,tests/Você pode criar um arquivo config.json para personalizar a análise:
{
"providers": {
"gemini": {
"enabled": true,
"model": "gemini-2.0-flash",
"temperature": 0.7
},
"openai": {
"enabled": true,
"model": "gpt-4",
"temperature": 0.5
},
"deepseek": {
"enabled": true,
"model": "deepseek-coder-33b-instruct"
},
"ollama": {
"enabled": true,
"model": "llama2:13b",
"url": "http://localhost:11434/api/generate"
}
},
"analysis": {
"max_method_lines": 30,
"max_complexity": 10,
"ignore_patterns": ["*.min.js", "vendor/*"]
}
}/
├── microservices/
│ └── source-provider/
│ └── src/
│ ├── analyzers/ # Módulos de análise
│ │ ├── ai_providers.py # Provedores de IA
│ │ └── ...
│ ├── analyze_repo.py # Script principal
│ └── test_gemini.py # Testes do Gemini
├── requirements.txt # Dependências
└── README.md # Este arquivo
Novas versões são publicadas automaticamente através do pipeline de CI/CD quando uma nova tag é criada no repositório.
Nota para desenvolvedores internos: Instruções detalhadas sobre o processo de publicação estão disponíveis na documentação interna do projeto.
- Faça um fork do projeto
- Crie uma branch para sua feature (
git checkout -b feature/nova-feature) - Commit suas mudanças (
git commit -am 'Adiciona nova feature') - Push para a branch (
git push origin feature/nova-feature) - Crie um Pull Request
Este projeto está licenciado sob a GNU Lesser General Public License v3.0 (LGPL-3.0).
Para mais detalhes, consulte o arquivo LICENSE ou visite GNU Lesser General Public License v3.0.