Uma aplicação desktop em Python para análise de código-fonte usando Large Language Models (LLMs) através do Ollama. A aplicação foi completamente refatorada e simplificada em 2025, mantendo 100% da funcionalidade original com uma arquitetura muito mais limpa e mantenível, além de sistemas avançados de checkpoint, pausa automática e timing preciso.
Este projeto passou por uma operação de simplificação abrangente que:
- Reduziu complexidade em 60% sem perda de funcionalidade
- Eliminou over-engineering e código duplicado
- Criou componentes reutilizáveis para desenvolvimento futuro
- Manteve compatibilidade total com dados existentes
Status: ✅ Produção Ready - Simplificado e Otimizado
analisador/ # 🎯 PROJETO SIMPLIFICADO
├── core/ # 🆕 Componentes compartilhados
│ ├── base_controller.py # Controller genérico reutilizável
│ ├── ui_components.py # Cards genéricos (Config, Execution, Files)
│ └── view_manager_template.py # Template para views consistentes
├── services/
│ └── unified_timing_service.py # ⚡ Serviço unificado (substitui 3)
├── modules/ # Módulos específicos
│ ├── analise/ # Análise de código refatorada
│ ├── sintese/ # Síntese de grafos
│ ├── grafo/ # Visualização
│ └── dashboard/ # Analytics com RAG
└── storage/ # Dados persistentes
- BaseController: Elimina código duplicado entre controllers
- ConfigCard: Gera UI de configuração dinamicamente
- ExecutionCard: Controle padronizado de execução
- FilesCard: Seleção unificada de arquivos
- UnifiedTimingService: Substitui 3 serviços de timing por 1
- Compatibilidade mantida com dados antigos
- Tracking integrado de LLM calls
- Sistema de Checkpoint Inteligente: Evita análises redundantes validando configurações anteriores
- Pausa Automática por API: Detecta limites de API (429, 403) e pausa automaticamente com retentativa
- Timing Preciso: Mede tempo efetivo excluindo períodos de pausa automática
- Suporte para múltiplas linguagens (C, C++, Python, Java, JavaScript, etc.)
- Extração automática de grafos de chamadas de funções
- Análise estrutural usando LLMs via Ollama com extração robusta de JSON
- Processamento em batch com controle de threads e recuperação automática
- Timing preciso excluindo pausas: Mede tempo efetivo vs tempo total com pausas
- Serviço unificado de timing para todas as medições
- Registro detalhado de períodos de pausa automática
- Tempo de processamento LLM por arquivo
- Estatísticas consolidadas em tempo real
- Exportação automática em
storage/export/com métricas completas
- Interface responsiva construída com Flet
- Componentes genéricos reutilizáveis entre módulos
- Visualização em tempo real do progresso com informações de checkpoint
- Display integrado de timing efetivo e métricas de economia
- Logs detalhados com encoding corrigido
- Controles dinâmicos: Botão de retry aparece automaticamente durante pausas
- Status inteligente: Mostra arquivos pulados por checkpoint e economia de API
- Estrutura otimizada em
storage/ - Exportação de resultados em JSON
- Logs unificados de timing e analytics
- Compatibilidade mantida com dados existentes
Para informações detalhadas, consulte a documentação em docs/:
- 📖 docs/DEVELOPMENT_GUIDE.md - Guia completo para desenvolvedores
- 📊 docs/SIMPLIFICATION_REPORT.md - Relatório da refatoração de Novembro 2025
- 🔄 docs/checkpoint_system.md - NOVO: Sistema completo de checkpoint, pausa automática e timing preciso
- ✅ Caracteres acentuados agora aparecem corretamente
- ✅ Emojis removidos apenas no Windows (mantidos em Linux)
- ✅ Logs legíveis: "Configuração atualizada" em vez de "Configura??o atualizada"
- ✅ Interface atualizada corretamente durante análises
- ✅ Components UI conectados adequadamente ao controller
- ✅ Botão "Forçar Retry" aparece automaticamente durante pausas
- ✅ Card "Controle de Execução" mostra informações dinâmicas de checkpoint
- ✅ Checkpoint Inteligente: Sistema completo para evitar análises redundantes
- ✅ Pausa Automática: Detecção e recuperação automática de limites de API
- ✅ Timing Preciso: Medição de tempo efetivo excluindo períodos de pausa
- ✅ JSON Robusto: Extração com múltiplas estratégias e fallbacks
- ✅ Economia de API: Relatórios detalhados de requisições economizadas
- Python 3.8+
- Ollama instalado e rodando
- Modelo LLM disponível (ex:
codellama,gpt-oss)
- Clone o repositório:
git clone <repositório>
cd analisador- Instale as dependências:
pip install -r requirements.txt- Inicie o Ollama:
ollama serve- Baixe um modelo:
ollama pull codellama- Execute a aplicação:
flet run --web main.py- Dentro do arquivo storage/users.json, é necessário inserir o hash SHA-256 para a senha que você desejar acessar com o usuário "mestre".
Exemplo de SHA-256 para o login (usuário "mestre", senha "mestre"):
SHA-256 correspondente para a senha "mestre":
863d84a7041da19852d2a33098dcda868cf000f6b2b07c1f7c12560e0a7a0ec3.
- Selecione os Arquivos: Na aba "Arquivos", selecione os arquivos de código-fonte que deseja analisar
- Configure a Análise: Defina o modelo LLM, temperatura e outras configurações
- Inicie a Análise: Clique em "Iniciar Análise" para começar o processamento
- Acompanhe o Progresso:
- Veja o tempo efetivo de processamento (excluindo pausas automáticas)
- Monitore checkpoints: arquivos pulados serão mostrados com "✅ Checkpoint reaproveitado"
- Durante pausas automáticas, botão "Forçar Retry" aparecerá para retentativa imediata
- Visualize Resultados: Confira os grafos gerados, estatísticas e economia de API
- Gerencie Análises: Use status completo para ver economia e limpe análises com erro
O sistema gera automaticamente arquivos de timing detalhados em storage/export/ com medições precisas que excluem períodos de pausa automática:
{
"metadata": {
"tool_name": "CallGraphAnalyzer",
"project_name": "projeto_exemplo",
"timestamp": "2025-11-18T03:24:26Z",
"has_checkpoint_system": true,
"has_automatic_pause": true
},
"timing": {
"total_analysis_time_ms": 3124567.89, // Tempo total com pausas
"effective_analysis_time_ms": 2456789.12, // Tempo efetivo sem pausas
"files_processing_time_ms": 2890123.45, // Tempo dos arquivos
"llm_total_time_ms": 2564321.10, // Tempo total de chamadas LLM
"total_pause_time_ms": 667856.77, // Tempo total em pausa automática
"files": [
{
"file_path": "src/main.c",
"analysis_time_ms": 45234.56,
"nodes": 15,
"edges": 8,
"checkpointed": false
},
{
"file_path": "src/utils.c",
"analysis_time_ms": 0.0, // Checkpoint reaproveitado
"nodes": 22,
"edges": 14,
"checkpointed": true
}
]
},
"summary": {
"total_files_processed": 658,
"total_nodes": 12450,
"total_edges": 8932,
"checkpoints_used": 234,
"api_requests_saved": 234
}
}-
Tempo Efetivo (
effective_analysis_time_ms):- Mede apenas tempo de trabalho real
- Exclui automaticamente períodos de pausa por API
- Representa o tempo real de processamento
-
Tempo Total (
total_analysis_time_ms):- Inclui tempo de pausas automáticas
- Tempo decorrido desde início até fim
- Útil para planejamento de tempo total
-
Tempo de Pausa (
total_pause_time_ms):- Tempo acumulado em pausas automáticas por API
- Calculado automaticamente pelo sistema
- Importante para métricas de eficiência
-
Economia de Checkpoint:
- Arquivos com
analysis_time_ms: 0.0foram reaproveitados - Redução significativa no uso da API
- Economia de tempo e recursos
- Arquivos com
Para detalhes completos, veja docs/checkpoint_system.md.
analisador/
├── modules/ # Módulos principais
│ ├── analise/ # Análise de código
│ ├── sintese/ # Síntese de grafos
│ ├── grafo/ # Visualização
│ ├── dashboard/ # Dashboard analítico
│ └── auth/ # Autenticação
├── services/ # Serviços auxiliares
│ ├── ollama_service.py
│ ├── timing_logger_service.py
│ └── analysis_timer_service.py
├── storage/ # Dados persistentes
│ ├── export/ # Arquivos de timing
│ ├── data/ # Resultados JSON
│ └── *.db # Bancos SQLite
├── docs/ # Documentação
└── main.py # Ponto de entrada
- Localização:
log/app.log - Níveis: INFO, WARNING, ERROR
- Logs em tempo real na interface
- Localização:
storage/export/timing_*.json - Gerado automaticamente após cada análise
- Inclui métricas detalhadas por arquivo
A configuração pode ser ajustada na interface ou diretamente no arquivo:
llm_modelo: Modelo LLM a usarllm_temperatura: Criatividade da geração (0.0-1.0)llm_tamanho_contexto: Tamanho do contexto (tokens)
-
Ollama não conectado
- Verifique se
ollama serveestá rodando - Confirme a URL em
http://localhost:11434
- Verifique se
-
Modelo não encontrado
- Use
ollama listpara ver modelos disponíveis - Baixe com
ollama pull <modelo>
- Use
-
Timeout na análise
- Aumente o timeout para análises complexas
- Reduza o tamanho do contexto
-
Arquivo de timing não gerado
- Verifique permissões em
storage/export/ - Confirme se a análise foi concluída com sucesso
- Verifique permissões em
- Fork o projeto
- Crie uma branch de feature
- Faça commit das mudanças
- Abra um Pull Request
MIT License - Veja o arquivo LICENSE para detalhes.
Para suporte e dúvidas:
-
Abra uma issue no GitHub
-
Consulte a documentação em
docs/ -
Verifique os logs em
log/app.log