Skip to main content

Uma ferramenta de refatoração de código usando IA

Project description

Refactool Analisador de Código

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.

Funcionalidades

  • 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

Requisitos

  • 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)

Instalação

Este pacote está disponível no PyPI e pode ser instalado via pip:

  1. pip install refactool
    
  2. 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

  1. Clone o repositório:
    git clone https://github.com/gabrielsalvesdev/refactool
    cd refactool-beta
    
  2. Instale as dependências:
    pip install -r requirements.txt
    
  3. 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
    

Uso

Análise Básica

Para analisar um repositório usando o provedor padrão (Gemini):

python analyze_repo.py https://github.com/usuario/repositorio

Análise com Provedor Específico

Para 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

Opções Adicionais

# 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/

Configuração Personalizada

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/*"]
    }
}

Estrutura do Projeto

/
├── 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

Publicação

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.

Contribuindo

  1. Faça um fork do projeto
  2. Crie uma branch para sua feature (git checkout -b feature/nova-feature)
  3. Commit suas mudanças (git commit -am 'Adiciona nova feature')
  4. Push para a branch (git push origin feature/nova-feature)
  5. Crie um Pull Request

Licença

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.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

refactool-0.1.1.tar.gz (37.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

refactool-0.1.1-py3-none-any.whl (9.9 kB view details)

Uploaded Python 3

File details

Details for the file refactool-0.1.1.tar.gz.

File metadata

  • Download URL: refactool-0.1.1.tar.gz
  • Upload date:
  • Size: 37.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.9.21

File hashes

Hashes for refactool-0.1.1.tar.gz
Algorithm Hash digest
SHA256 b55f8fdafc9607587076dddcf29eac0b35efb52403e7dd6c6975349d4b9f3ebe
MD5 78d720c840c1c8ae85d24157c345392b
BLAKE2b-256 fe0ca45ad1421ed352a9415656072e680095bcec400f6b6f36fd33f685ed7d48

See more details on using hashes here.

File details

Details for the file refactool-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: refactool-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 9.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.9.21

File hashes

Hashes for refactool-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 7ec50569737095717da19cf173cd0a326c560802ec25894bdce95832c69abacb
MD5 b4d5b6866300cc3f9de6173776539e59
BLAKE2b-256 04d6bcefd34d820fcce2108abf9ab3d707423e1a7eeff9326409a39b19c788e4

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page