Skip to content

eusener/code-analyzer

Repository files navigation

Analisador COCOMO II

Analisador de código baseado na metodologia COCOMO II (Constructive Cost Model) que calcula complexidade, esforço, tempo e recursos necessários para desenvolvimento de software.

Scripts Disponíveis

1. tui_analyzer.py - Interface TUI Interativa (RECOMENDADO)

Interface TUI (Text User Interface) interativa para análise de múltiplos projetos com configuração personalizada de salário e geração automática de relatórios.

Características:

  • Análise de múltiplos projetos em uma única execução
  • Configuração de salário personalizada
  • Geração automática de relatórios JSON com nome do projeto e data
  • Suporte para análise COCOMO II simples ou integrada com Git
  • Interface amigável com validação de entrada

2. main.py - Análise COCOMO II

Analisador de código que calcula métricas baseadas em COCOMO II.

3. git_analyzer.py - Análise Integrada Git + COCOMO II

Análise completa que cruza dados COCOMO II com histórico de commits Git.

Funcionalidades

🔒 Análise de Segurança com Semgrep (NOVO!)

  • Análise estática de segurança:
    • Identificação automática de vulnerabilidades
    • Detecção de bad practices e anti-patterns
    • Score de segurança de 0-100
    • Classificação por severidade (Crítica, Alta, Média, Baixa, Info)
    • Categorização (Segurança, Best Practices, Performance)
    • Identificação de arquivos mais vulneráveis
    • Mapeamento de CWE (Common Weakness Enumeration)
    • Compatibilidade com OWASP Top 10
  • Disponível via:
    • Interface TUI (integrada automaticamente)
    • Linha de comando (análise integrada)
    • Relatórios PDF com seção dedicada de segurança
    • Exportação JSON com métricas completas

🤖 Insights com Inteligência Artificial

  • Análise profunda com IA da OpenAI:
    • Avaliação do valor do código e qualidade
    • Comparação com métricas de mercado
    • Estimativa de valor de mercado do projeto
    • Recomendações estratégicas (curto, médio e longo prazo)
    • Indicadores chave (ROI, Time to Market, Risco Técnico)
    • Oportunidades de monetização, expansão e otimização
  • Disponível via:
    • Interface TUI (aba "🤖 Insights IA")
    • Linha de comando (--ai-insights flag)
    • Uso programático (módulo ai_insights.py)

📚 Ver documentação completa de Insights IA →

Análise COCOMO II (main.py)

  • Análise recursiva de diretórios e subdiretórios
  • Exclusão automática de arquivos gerados por frameworks
  • Exclusão de pastas de bibliotecas (.venv, node_modules, vendor)
  • Suporte a múltiplas linguagens de programação
  • Cálculo de métricas COCOMO II:
    • Complexidade do código
    • Tempo para recriar a codebase
    • Quantidade de desenvolvedores necessários
    • Equipe para manutenção
    • Equipe para expansão
    • Produtividade (LOC/pessoa-mês)
    • Estimativa de custo em BRL
  • Saída formatada e elegante com Rich

Análise de Segurança (Semgrep)

  • Análise Automática:

    • Detecção de vulnerabilidades conhecidas
    • Análise de código-fonte estático
    • Regras automáticas baseadas na linguagem
    • Suporte para múltiplas linguagens
  • Métricas de Segurança:

    • Total de descobertas por severidade
    • Problemas de segurança vs best practices
    • Arquivos mais vulneráveis
    • Tempo de scan
    • Score de segurança (0-100)
  • Recomendações:

    • Priorização de correções
    • Best practices de segurança
    • Integração CI/CD sugerida

Análise Integrada Git (git_analyzer.py)

  • Métricas Git:

    • Total de commits e autores
    • Inserções e deleções
    • Commits por dia/mês
    • Ranking de contribuidores
  • Indicadores de Commits:

    • Linhas por commit
    • Commits necessários para recriar codebase
    • Percentual médio de mudança por commit
    • Eficiência de commit (código útil vs retrabalho)
  • Análise de Velocidade:

    • Velocidade real vs estimada COCOMO
    • Razão de velocidade (real/estimado)
    • Score de produtividade dos desenvolvedores (0-100)
  • Insights Automáticos:

    • Avaliação de velocidade da equipe
    • Análise de eficiência de commits
    • Recomendações de tamanho de commits
    • Avaliação geral de produtividade
  • Exportação:

    • Exportar resultados em JSON

Metodologia COCOMO II

O script utiliza a metodologia COCOMO II para estimar:

Níveis de Complexidade

  • Orgânico (Baixa): Projetos até 50 KLOC
  • Semi-Destacado (Média): Projetos entre 50-300 KLOC
  • Embarcado (Alta): Projetos acima de 300 KLOC

Fórmulas Utilizadas

  • Esforço: E = a × (KLOC)^b pessoa-meses
  • Tempo: T = c × (E)^d meses
  • Pessoas: P = E / T

Instalação

# Clone o repositório
git clone <repository-url>
cd analiser-cocomo2

# Instale as dependências usando uv
uv sync

# Ou usando pip
pip install -e .

Uso

Interface TUI Interativa (Recomendado)

Método 1: Script auxiliar

./run_tui.sh

Método 2: Execução direta

uv run python tui_analyzer.py
# ou
source .venv/bin/activate && python tui_analyzer.py

Fluxo de uso:

  1. Digite os caminhos dos projetos (um por vez)
  2. Pressione Enter sem digitar nada para finalizar a lista de projetos
  3. Configure o salário mensal (em R$)
  4. Escolha o tipo de análise (COCOMO II ou Integrado)
  5. Decida se deseja exportar relatórios JSON
  6. A análise será executada para todos os projetos
  7. Relatórios individuais serão gerados em ./reports/ com formato: relatorio_{projeto}_{data}_{hora}.json

Veja o guia completo: TUI_GUIDE.md

Análise COCOMO II Básica (Linha de Comando)

Análise do diretório atual

uv run python main.py

Análise de um diretório específico

uv run python main.py /caminho/para/projeto

Análise com Insights de IA (NOVO!)

# Configure primeiro sua chave da OpenAI
export OPENAI_API_KEY="sk-proj-..."

# Execute com insights de IA
uv run python main.py --ai-insights

# Ou para um projeto específico
uv run python main.py /caminho/para/projeto --ai-insights

📚 Ver guia completo de Insights IA →

Análise Integrada Git + COCOMO II (Linha de Comando)

Análise completa do diretório atual (com segurança)

uv run python git_analyzer.py

Análise de um repositório específico

uv run python git_analyzer.py /caminho/para/repositorio

Análise com exportação JSON (inclui dados de segurança)

uv run python git_analyzer.py . --export resultados.json

Gerar relatório PDF com análise de segurança

# Primeiro, gere o JSON
uv run python git_analyzer.py . --export relatorio.json

# Depois, gere o PDF (inclui seção de segurança automaticamente)
uv run python generate_pdf_report.py relatorio.json relatorio.pdf

Ajuda e opções

uv run python git_analyzer.py --help

Exemplos de Saída

Análise COCOMO II (main.py)

O script gera relatórios com:

  1. Métricas de Código

    • Total de arquivos
    • Total de linhas
    • Linhas de código
    • Linhas de comentários
    • Linhas em branco
  2. Distribuição por Linguagem

    • Quantidade de linhas por linguagem
    • Porcentagem de cada linguagem
  3. Resultados COCOMO II

    • Nível de complexidade
    • Esforço total (pessoa-mês)
    • Tempo de desenvolvimento
    • Pessoas necessárias
    • Equipe de manutenção
    • Equipe de expansão
    • Produtividade
  4. Estimativa de Custo

    • Custo total estimado em BRL
    • Baseado em R$15.000/pessoa-mês
  5. Insights e Recomendações

    • Análise automática dos resultados
    • Sugestões baseadas nas métricas

Análise Integrada Git (git_analyzer.py)

O script gera relatórios expandidos com:

  1. Resumo COCOMO II

    • KLOC, complexidade, esforço, tempo, custo
  2. Métricas do Repositório Git

    • Total de commits, autores
    • Idade do repositório
    • Commits por dia
    • Inserções e deleções totais
    • Médias por commit
  3. Top Contribuidores

    • Ranking dos 10 principais autores
    • Número de commits e porcentagem
  4. Análise de Segurança (Semgrep)

    • Score de segurança (0-100)
    • Total de descobertas por severidade
    • Problemas críticos e de alta prioridade
    • Top 5 arquivos mais vulneráveis
    • Distribuição por categoria
    • Tempo de scan e arquivos analisados
  5. Indicadores Integrados

    • Linhas por commit
    • Commits necessários para recriar
    • Commits por mês
    • Velocidade real vs estimada
    • Razão de velocidade
    • Eficiência de commit
    • % média de mudança por commit
  6. Score de Produtividade

    • Pontuação de 0-100
    • Baseado em velocidade, eficiência e complexidade
  7. Insights Personalizados

    • Avaliação de velocidade
    • Análise de eficiência
    • Recomendações de tamanho de commits
    • Frequência de commits
    • Avaliação geral

Indicadores Calculados

Linhas por Commit

Total de linhas de código dividido pelo número de commits.

Interpretação:

  • < 100 linhas: Commits pequenos e incrementais (ideal)
  • 100-500 linhas: Commits de tamanho moderado
  • 500 linhas: Commits grandes (considere dividir)

Commits Necessários para Recriar

Estimativa de quantos commits seriam necessários para recriar a codebase.

Percentual Médio de Mudança por Commit

Porcentagem média do código que é modificada em cada commit.

Interpretação:

  • < 1%: Mudanças incrementais pequenas (ótimo)
  • 1-5%: Mudanças moderadas (bom)
  • 5%: Mudanças grandes (avaliar necessidade)

Eficiência de Commit

Relação entre código útil e churn (retrabalho).

Cálculo: (Linhas atuais / Total de mudanças) × 100

Interpretação:

  • 50%: Alta eficiência, baixo retrabalho

  • 30-50%: Eficiência moderada
  • < 30%: Baixa eficiência, muito retrabalho

Razão de Velocidade

Velocidade real dividida pela velocidade estimada pelo COCOMO II.

Interpretação:

  • 1.2: Equipe muito produtiva

  • 0.8-1.2: Velocidade dentro do esperado
  • < 0.8: Velocidade abaixo do esperado

Score de Produtividade

Pontuação composta de 0-100 baseada em:

  • Velocidade de desenvolvimento (até 25 pontos)
  • Eficiência de commits (até 15 pontos)
  • Complexidade do projeto (até 10 pontos)
  • Base de 50 pontos

Interpretação:

  • 75-100: Excelente produtividade
  • 50-74: Boa produtividade
  • < 50: Oportunidade de melhoria

Linguagens Suportadas

  • Python
  • JavaScript/TypeScript
  • Java
  • C/C++/C#
  • Go
  • Rust
  • PHP
  • Ruby
  • Swift
  • Kotlin
  • Scala
  • R
  • Shell
  • SQL
  • HTML/CSS
  • Vue
  • Dart

Diretórios e Arquivos Excluídos

O analisador exclui automaticamente:

Diretórios

  • node_modules
  • .venv, venv, env
  • vendor
  • pycache
  • .git, .svn, .hg
  • dist, build, target, out
  • .idea, .vscode, .vs
  • bin, obj
  • .gradle, .next
  • coverage, .nyc_output
  • .pytest_cache, .mypy_cache
  • .tox, .eggs

Arquivos

  • Arquivos compilados (.pyc, .class, .jar, .o)
  • Arquivos minificados (.min.js, .min.css)
  • Arquivos de lock (package-lock.json, yarn.lock, etc.)
  • Bibliotecas compiladas (.so, .dll, .dylib)

Exportação JSON

O script git_analyzer.py pode exportar resultados em JSON com a flag --export:

uv run python git_analyzer.py . --export resultados.json

Estrutura do JSON:

{
  "cocomo": {
    "kloc": 0.74,
    "effort_person_months": 1.75,
    "time_months": 3.09,
    "people_required": 0.57,
    "cost_estimate_brl": 26204.70,
    "complexity_level": "Baixa"
  },
  "git": {
    "total_commits": 100,
    "total_authors": 5,
    "authors_commits": {...},
    "total_insertions": 10000,
    "total_deletions": 2000,
    ...
  },
  "integrated": {
    "lines_per_commit": 100.0,
    "commits_needed_to_rebuild": 74,
    "velocity_ratio": 1.2,
    "commit_efficiency": 61.1,
    "change_percentage_per_commit": 1.5,
    "developer_productivity_score": 84.2
  },
  "security": {
    "total_findings": 15,
    "critical_findings": 2,
    "high_findings": 5,
    "medium_findings": 6,
    "low_findings": 2,
    "security_issues": 7,
    "best_practice_issues": 8,
    "files_scanned": 125,
    "scan_duration_seconds": 45.3,
    "findings": [...]
  },
  "generated_at": "2025-10-13T18:19:23.117434"
}

Dependências

  • Python >= 3.13
  • rich >= 13.7.0
  • pathspec >= 0.12.1
  • inquirer >= 3.1.3 (para interface TUI)
  • textual >= 0.47.0 (para interface TUI avançada)
  • reportlab >= 4.0.0 (para geração de PDF)
  • matplotlib >= 3.8.0 (para gráficos)
  • openai >= 1.0.0 (para insights com IA - opcional)
  • semgrep >= 1.86.0 (para análise de segurança)

Casos de Uso

1. Estimativa de Projeto

Use o main.py para estimar custo, tempo e recursos necessários para um projeto novo ou existente.

2. Acompanhamento de Progresso

Use o git_analyzer.py regularmente para:

  • Monitorar velocidade da equipe
  • Avaliar eficiência de commits
  • Identificar gargalos de produtividade

3. Code Review

Use os indicadores para:

  • Identificar commits muito grandes
  • Avaliar qualidade do código (eficiência)
  • Comparar produtividade entre sprints

4. Planejamento de Sprint

Use as métricas para:

  • Estimar capacidade da equipe
  • Prever tempo de entrega
  • Alocar recursos adequadamente

5. Relatórios para Stakeholders

Exporte os resultados em JSON para:

  • Criar dashboards personalizados
  • Integrar com ferramentas de BI
  • Gerar relatórios periódicos

6. 🔒 Análise de Segurança (NOVO!)

Use a análise de segurança para:

  • Identificar vulnerabilidades antes da produção
  • Avaliar o score de segurança do projeto
  • Priorizar correções por severidade
  • Identificar arquivos mais críticos
  • Integrar análise de segurança no CI/CD
  • Gerar relatórios de segurança para compliance

7. 🤖 Análise Estratégica com IA

Use os insights de IA para:

  • Avaliar o valor de mercado do projeto
  • Obter recomendações estratégicas personalizadas
  • Identificar oportunidades de monetização e expansão
  • Comparar com benchmarks da indústria
  • Avaliar riscos técnicos e ROI

📚 Ver guia completo de Insights IA →

Limitações

  • A análise Git requer que o diretório seja um repositório Git válido
  • Estimativas COCOMO II são baseadas em modelos estatísticos e podem variar
  • Detecção de comentários é simplificada e pode não capturar todos os casos
  • Valores de salário são médias e podem variar por região e senioridade

Contribuindo

Contribuições são bem-vindas! Sinta-se à vontade para:

  1. Fazer fork do projeto
  2. Criar uma branch para sua feature
  3. Commit suas mudanças
  4. Push para a branch
  5. Abrir um Pull Request

Licença

MIT License

Autor

Desenvolvido para análise de projetos de software usando metodologia COCOMO II integrada com análise de commits Git.

Referências

About

Analisador de codigo utilizando cocomo 2, cruzando informações de commits e insights de IA

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •