Analizador de Complejidad de Codigo

Analiza complejidad ciclomatica, cognitiva, anidamiento y duplicacion

Evalua calidad de codigo en JavaScript, TypeScript, Python, Java y Go.

Resultados de ejemplo

2 Ejemplos

Analizar una funcion JavaScript con muchas ramas

Mide complejidad ciclomatica y cognitiva en una funcion de precios anidada con umbrales estrictos.

{
  "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 }

Detectar logica duplicada de normalizacion en Python

Encuentra funciones repetidas tipo helper y confirma ventanas duplicadas entre bloques similares.

{
  "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 }

Datos clave

Categoría
Desarrollo y Web
Tipos de entrada
textarea, select, number
Tipo de salida
json
Cobertura de muestras
4
API disponible
Yes

Resumen

Herramienta online para evaluar métricas de calidad en código fuente. Analiza complejidad ciclomática, complejidad cognitiva, niveles de anidamiento y fragmentos duplicados en JavaScript, TypeScript, Python, Java y Go, generando un informe JSON detallado con puntos críticos y estadísticas por función.

Cuándo usarlo

  • Antes de solicitar revisión de código para identificar funciones candidatas a refactorización.
  • Al heredar proyectos legacy que requieren evaluación rápida de hotspots y deuda técnica.
  • Durante la definición de estándares de equipo para establecer umbrales máximos de complejidad.

Cómo funciona

  • Pega el código fuente en el área de texto; el sistema detecta automáticamente el lenguaje o puedes seleccionarlo manualmente entre JavaScript, TypeScript, Python, Java y Go.
  • Ajusta los umbrales opcionales para funciones largas, anidamiento profundo y ventanas de duplicación según tus estándares de calidad.
  • El analizador escanea cada función calculando métricas de complejidad ciclomática y cognitiva, además de buscar patrones de código repetido.
  • Recibes un objeto JSON con resumen global y lista detallada de funciones, incluyendo flags de anidamiento profundo y clusters de duplicados detectados.

Casos de uso

Auditoría de calidad previa a despliegues en producción para prevenir bugs en funciones excesivamente complejas.
Refactorización guiada por métricas: identificar duplicados candidatos a extracción de métodos helpers o utilidades compartidas.
Onboarding de nuevos desarrolladores al documentar automáticamente las áreas más críticas y complejas del codebase existente.

Ejemplos

1. Revisión de lógica de precios compleja en JavaScript

Desarrollador frontend
Contexto
Preparando un merge request con nueva funcionalidad de descuentos dinámicos que incluye múltiples condicionales anidados.
Problema
Necesita verificar si la función de cálculo viola políticas de complejidad máxima antes de la revisión por pares.
Cómo usarlo
Pega la función en 'Código fuente', selecciona JavaScript manualmente y establece 'Umbral de anidamiento' en 2 niveles para detectar anidamiento profundo.
Configuración de ejemplo
{"language": "javascript", "nestingThreshold": 2, "longFunctionThreshold": 8}
Resultado
El informe JSON detecta anidamiento profundo (deepNesting: true) y complejidad ciclomática de 5, alertando sobre la necesidad de simplificar condicionales antes del merge.

2. Eliminación de helpers duplicados en Python

Ingeniero de backend
Contexto
Manteniendo scripts de ETL con múltiples funciones de normalización de datos que fueron creadas mediante copy-paste.
Problema
Detectar funciones casi idénticas (normalize_user vs normalize_admin) que deberían unificarse para reducir deuda técnica.
Cómo usarlo
Inserta ambas funciones en el campo de código, selecciona Python y reduce 'Ventana de duplicación' a 3 líneas para capturar bloques repetidos pequeños.
Configuración de ejemplo
{"language": "python", "duplicateWindow": 3}
Resultado
El JSON identifica 1 cluster de duplicados entre líneas 1-6, permitiendo al equipo consolidar la lógica en una única función utilitaria y eliminar código redundante.

3. Control de longitud en handlers de Go

Arquitecto de software
Contexto
Auditando handlers HTTP en un microservicio gateway que han crecido descontroladamente durante iteraciones rápidas.
Problema
Identificar handlers que exceden 50 líneas para dividirlos en middlewares especializados y mejorar la testabilidad.
Cómo usarlo
Pega el código del handler, selecciona Go y configura 'Umbral de función larga' en 50 líneas para flaggear funciones excesivamente extensas.
Configuración de ejemplo
{"language": "go", "longFunctionThreshold": 50}
Resultado
El resumen JSON lista las funciones que superan el umbral con sus métricas exactas de complejidad, facilitando la planificación priorizada de la refactorización.

Probar con muestras

development

Hubs relacionados

Preguntas frecuentes

¿Qué lenguajes de programación soporta el analizador?

JavaScript, TypeScript, Python, Java y Go. Puedes usar detección automática o especificar el lenguaje manualmente en el selector.

¿Qué diferencia hay entre complejidad ciclomática y cognitiva?

La complejidad ciclomática mide los caminos de ejecución independientes (ramas if, switch, loops). La complejidad cognitiva evalúa la dificultad de lectura según niveles de anidamiento y estructuras lógicas anidadas.

¿Para qué sirve el parámetro 'Ventana de duplicación'?

Define el número mínimo de líneas consecutivas idénticas que deben coincidir para reportar un bloque como código duplicado, permitiendo ajustar la sensibilidad del detector.

¿El análisis modifica mi código fuente original?

No, es una herramienta de solo lectura que genera un informe JSON con métricas y estadísticas sin alterar el código ingresado.

¿Qué significa 'deepNesting' en el resultado JSON?

Indica que la función excede el umbral configurado de niveles de anidamiento (por defecto 4), señalando código difícil de mantener y probar.

Documentación de la API

Punto final de la solicitud

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

Parámetros de la solicitud

Nombre del parámetro Tipo Requerido Descripción
sourceCode textarea -
language select No -
longFunctionThreshold number No -
nestingThreshold number No -
duplicateWindow number No -

Formato de respuesta

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

Documentación de MCP

Agregue este herramienta a su configuración de servidor MCP:

{
  "mcpServers": {
    "elysiatools-code-complexity-analyzer": {
      "name": "code-complexity-analyzer",
      "description": "Analiza complejidad ciclomatica, cognitiva, anidamiento y duplicacion",
      "baseUrl": "https://elysiatools.com/mcp/sse?toolId=code-complexity-analyzer",
      "command": "",
      "args": [],
      "env": {},
      "isActive": true,
      "type": "sse"
    }
  }
}

Puede encadenar múltiples herramientas, por ejemplo: `https://elysiatools.com/mcp/sse?toolId=png-to-webp,jpg-to-webp,gif-to-webp`, máximo 20 herramientas.

Si encuentra algún problema, por favor, póngase en contacto con nosotros en [email protected]