Analisador de Complexidade de Codigo

Analisa complexidade ciclomatica, cognitiva, aninhamento e duplicacao

Analise heuristica de qualidade para JavaScript, TypeScript, Python, Java e Go.

Exemplos de resultados

2 Exemplos

Analisar uma funcao JavaScript com muitos ramos

Mede complexidade ciclomatica e cognitiva de uma funcao de precificacao aninhada com limites mais rigidos.

{
  "summary": {
    "language": "javascript",
    "functionCount": 1,
    "averageCyclomaticComplexity": 5,
    "averageCognitiveComplexity": 4,
    "hotspotCount": 0,
    "longFunctionCount": 0,
    "deepNestingCount": 1,
    "duplicateClusters": 0
  },
  "functions": [
    {
      "name": "score",
      "cyclomaticComplexity": 5,
      "deepNesting": true
    }
  ]
}
Ver parâmetros de entrada
{ "sourceCode": "function score(order) {\n if (!order) return 0;\n let total = 0;\n for (const item of order.items) {\n if (item.discount) {\n total += item.price * 0.8;\n } else if (item.vip) {\n total += item.price * 0.9;\n } else {\n total += item.price;\n }\n }\n return total;\n}", "language": "javascript", "longFunctionThreshold": 8, "nestingThreshold": 2, "duplicateWindow": 4 }

Identificar logica duplicada de normalizacao em Python

Detecta funcoes auxiliares repetidas e confirma janelas duplicadas entre blocos parecidos.

{
  "summary": {
    "language": "python",
    "functionCount": 2,
    "duplicateClusters": 1
  },
  "duplicates": [
    {
      "occurrences": 2,
      "lines": [
        1,
        6
      ]
    }
  ]
}
Ver parâmetros de entrada
{ "sourceCode": "def normalize_user(row):\n email = row[\"email\"].strip().lower()\n if not email:\n return None\n return {\"email\": email, \"team\": row.get(\"team\", \"general\")}\n\ndef normalize_admin(row):\n email = row[\"email\"].strip().lower()\n if not email:\n return None\n return {\"email\": email, \"team\": row.get(\"team\", \"general\")}", "language": "python", "longFunctionThreshold": 20, "nestingThreshold": 3, "duplicateWindow": 3 }

Fatos principais

Categoria
Desenvolvimento e Web
Tipos de entrada
textarea, select, number
Tipo de saída
json
Cobertura de amostras
4
API disponível
Yes

Visão geral

O Analisador de Complexidade de Código é uma ferramenta de avaliação heurística projetada para medir a qualidade do seu código-fonte. Com suporte para JavaScript, TypeScript, Python, Java e Go, ele calcula rapidamente a complexidade ciclomática e cognitiva, além de detectar funções excessivamente longas, aninhamentos profundos e blocos de código duplicados. É a solução ideal para identificar gargalos de manutenção e orientar refatorações, ajudando a manter sua base de código limpa, legível e sustentável.

Quando usar

  • Durante revisões de código (code reviews) para garantir que novas implementações não ultrapassem os limites aceitáveis de complexidade e aninhamento.
  • Ao planejar a refatoração de sistemas legados, identificando os pontos críticos (hotspots) que precisam de simplificação urgente.
  • Para auditar a qualidade geral de um projeto, detectando duplicações de lógica e funções muito longas antes de um lançamento importante.

Como funciona

  • Cole o código-fonte no campo principal ou deixe a ferramenta detectar automaticamente a linguagem (JavaScript, TypeScript, Python, Java ou Go).
  • Ajuste os parâmetros de análise, como o limite de linhas para funções longas, a profundidade máxima de aninhamento e a janela de linhas para detecção de duplicações.
  • A ferramenta processa a estrutura sintática do código e calcula métricas avançadas, como a complexidade ciclomática e cognitiva.
  • Analise o relatório JSON gerado para visualizar a contagem de funções, clusters duplicados e sinalizações de problemas estruturais.

Casos de uso

Identificação de 'hotspots' de manutenção e funções problemáticas em grandes bases de código corporativo.
Padronização de métricas de qualidade e limites de complexidade em equipes de desenvolvimento ágil.
Avaliação rápida da qualidade estrutural de bibliotecas de terceiros ou código open-source antes da integração.

Exemplos

1. Analisar uma função JavaScript com muitos ramos

Desenvolvedor Front-end
Contexto
A equipe está lidando com uma função de precificação de carrinho de compras que cresceu organicamente e se tornou difícil de testar devido a múltiplas condições.
Problema
Medir a complexidade atual e identificar se o aninhamento de regras de desconto está muito profundo.
Como usar
Cole a função de precificação no campo de código-fonte, selecione 'JavaScript' e reduza o limite de aninhamento para 2 para uma análise mais rigorosa.
Configuração de exemplo
Linguagem: JavaScript, Limite de função longa: 8, Limite de aninhamento: 2, Janela de duplicação: 4
Resultado
O relatório JSON aponta uma complexidade ciclomática de 5 e sinaliza a função com a flag 'deepNesting: true', confirmando a necessidade de refatoração.

2. Identificar lógica duplicada em scripts Python

Engenheiro de Dados
Contexto
Vários scripts de processamento foram criados por diferentes membros da equipe, resultando em funções de normalização de dados quase idênticas espalhadas pelo projeto.
Problema
Encontrar blocos de código repetidos para consolidá-los em uma única função utilitária.
Como usar
Insira as funções suspeitas de duplicação, defina a linguagem como 'Python' e ajuste a janela de duplicação para 3 linhas.
Configuração de exemplo
Linguagem: Python, Limite de função longa: 20, Limite de aninhamento: 3, Janela de duplicação: 3
Resultado
A ferramenta detecta 1 cluster de duplicação com 2 ocorrências, mostrando exatamente as linhas onde a lógica de normalização se repete, facilitando a extração para uma função comum.

Testar com amostras

development

Hubs relacionados

FAQ

Quais linguagens de programação são suportadas pelo analisador?

A ferramenta suporta análise estática para JavaScript, TypeScript, Python, Java e Go. Você pode selecionar a linguagem manualmente ou usar a detecção automática.

Qual a diferença entre complexidade ciclomática e cognitiva?

A complexidade ciclomática mede o número de caminhos lógicos independentes no código. Já a complexidade cognitiva avalia o quão difícil é para um ser humano ler e entender o fluxo de controle.

O que é o limite de aninhamento (nesting threshold)?

É a profundidade máxima permitida de blocos de código dentro de outros blocos (como um 'if' dentro de um 'for'). O valor padrão é 4, e ultrapassar esse limite geralmente indica que o código está difícil de ler.

Como funciona a detecção de código duplicado?

A ferramenta compara blocos de código com base na 'janela de duplicação' configurada (por exemplo, 5 linhas). Se blocos idênticos ou estruturalmente muito semelhantes forem encontrados, eles são agrupados em clusters no relatório.

O código-fonte que eu insiro é armazenado em algum servidor?

Não. A análise é realizada de forma efêmera e o código inserido não é salvo, armazenado ou compartilhado com terceiros.

Documentação da API

Ponto final da solicitação

POST /pt/api/tools/code-complexity-analyzer

Parâmetros da solicitação

Nome do parâmetro Tipo Requerido Descrição
sourceCode textarea Sim -
language select Não -
longFunctionThreshold number Não -
nestingThreshold number Não -
duplicateWindow number Não -

Formato de resposta

{
  "key": {...},
  "metadata": {
    "key": "value"
  },
  "error": "Error message (optional)",
  "message": "Notification message (optional)"
}
Dados JSON: Dados JSON

Documentação de MCP

Adicione este ferramenta à sua configuração de servidor MCP:

{
  "mcpServers": {
    "elysiatools-code-complexity-analyzer": {
      "name": "code-complexity-analyzer",
      "description": "Analisa complexidade ciclomatica, cognitiva, aninhamento e duplicacao",
      "baseUrl": "https://elysiatools.com/mcp/sse?toolId=code-complexity-analyzer",
      "command": "",
      "args": [],
      "env": {},
      "isActive": true,
      "type": "sse"
    }
  }
}

Você pode encadear várias ferramentas, ex: `https://elysiatools.com/mcp/sse?toolId=png-to-webp,jpg-to-webp,gif-to-webp`, máx 20 ferramentas.

Se você encontrar algum problema, por favor, entre em contato conosco em [email protected]