ForHosting KIT · Utilidades de desarrollo

Calculadora de complejidad ciclomática

La API de complejidad ciclomática calcula la métrica de McCabe a partir de la estructura de un grafo de flujo de control: usted proporciona el número de aristas, el número de nodos y el número de componentes conexas, y devuelve la complejidad ciclomática M = E − N + 2P, el número mínimo de caminos linealmente independientes a través del código y una cota inferior de los casos de prueba necesarios para una cobertura completa de ramas. Sin código fuente que subir, sin analizador que configurar: solo tres recuentos del grafo que ya tiene y un número determinista como respuesta, calculado igual en su navegador que en nuestro edge.

● BetaGratis · en su navegador
Úselo desde WebAPIEmailTelegramApp pronto

Qué mide la complejidad ciclomática

La complejidad ciclomática, introducida por Thomas McCabe en 1976, cuenta el número de caminos linealmente independientes a través del grafo de flujo de control de un programa. Cada punto de decisión —un if, un bucle while, una rama case, una expresión condicional— añade un camino, de modo que la métrica refleja lo difícil que es probar y razonar sobre un fragmento de código. Un valor de 1 significa código lineal sin ninguna rama. Un valor de 10 es el umbral ampliamente citado a partir del cual un módulo empieza a necesitar dividirse. El número es una propiedad del grafo, no del lenguaje: una vez dibujado el grafo de flujo de control de una función, su complejidad queda fijada, y esta calculadora de complejidad ciclomática la evalúa directamente a partir de los tres recuentos del grafo. Como la entrada son solo aristas, nodos y componentes, funciona para pseudocódigo, diagramas de flujo y grafos exportados de cualquier herramienta de análisis estático, sin necesidad de compartir el propio código fuente.

La fórmula M = E − N + 2P

La métrica se calcula como M = E − N + 2P, donde E es el número de aristas del grafo de flujo de control, N el número de nodos y P el número de componentes conexas. Para un solo programa o función el grafo es una única componente conexa, de modo que P = 1 y la fórmula se reduce a M = E − N + 2. Cuando se analizan varias funciones desconectadas a la vez —por ejemplo, los grafos de llamadas de tres módulos independientes dibujados en un mismo diagrama— P cuenta cada pieza desconectada y el término +2P mantiene el resultado coherente con la suma de las complejidades de las partes. El endpoint también devuelve decision_points, definido como M − 1, que equivale al número de predicados de un programa estructurado cuyo grafo se ha medido. Las tres entradas deben ser enteros positivos; la llamada rechaza fracciones, ceros, recuentos negativos y valores no numéricos, porque tales recuentos no pueden describir un grafo de flujo de control real y aceptarlos en silencio ocultaría un error de medición aguas arriba.

Cómo usar el número en la práctica

La complejidad indica el número mínimo de casos de prueba necesarios para ejercitar cada camino independiente, de modo que los equipos la usan como suelo de cobertura al planificar pruebas: una función con M = 7 no puede probarse por completo con tres pruebas, por ingeniosas que sean. También alimenta la política de revisión de código —muchas organizaciones marcan cualquier función cuya complejidad supere un límite acordado— y el seguimiento de la deuda técnica, donde la suma o el máximo sobre una base de código se vigila versión tras versión. Esta API es el paso aritmético de ese flujo de trabajo: cuente las aristas, los nodos y las componentes desde su analizador o diagrama, envíelos y obtenga el mismo valor siempre, ya que el cálculo es totalmente determinista, sin redondeos ni heurísticas. Se ejecuta en nuestro edge global por $0.002 por solicitud, y el mismo código se ejecuta gratis en su navegador en esta página, de modo que puede verificar una cifra a mano y pagar solo cuando automatice la comprobación en un pipeline.

Fijar un suelo de cobertura de pruebas

Convierta los recuentos del grafo de su analizador estático en el número mínimo de casos de prueba necesarios para cubrir cada camino independiente de una función.

Imponer un presupuesto de complejidad en CI

Haga fallar una compilación cuando la complejidad ciclomática de un módulo supere el umbral acordado por el equipo, calculada a partir de aristas, nodos y componentes.

Comprobar respuestas de tareas y exámenes

Verifique el resultado de un ejercicio de ingeniería de software que pida el número de McCabe a partir de un diagrama de flujo, con la fórmula incluida en la respuesta.

¿Cuánto cuesta?

$0.002 por solicitud. También es gratis ejecutarla en su navegador en esta página: el mismo código calcula ambas cosas.

¿Qué fórmula se utiliza?

La fórmula original de McCabe, M = E − N + 2P, donde E son las aristas, N los nodos y P las componentes conexas. Para un solo programa P = 1, así que queda E − N + 2.

¿Por qué se rechazan mis datos?

Las aristas, los nodos y las componentes deben ser enteros positivos. El cero, los negativos, las fracciones y los valores no numéricos no pueden describir un grafo de flujo de control real y se rechazan como entrada no válida.

¿Qué es el campo decision_points?

Es M − 1: el número de nodos predicado (de decisión) de un programa estructurado cuyo grafo tiene esta complejidad. Es una comodidad para los equipos que cuentan ifs y bucles en lugar de aristas.

¿Necesito enviar código fuente?

No. La entrada son tres recuentos del grafo de flujo de control, de modo que el código propietario nunca sale de su analizador: solo viajan sus totales de aristas, nodos y componentes.

¿El resultado es determinista?

Sí. Es aritmética entera exacta, sin redondeos, aleatoriedad ni llamadas externas: los mismos tres recuentos devuelven siempre la misma complejidad.

Todo lo de esta página está disponible por programación. Esta sección es para equipos que quieren integrarlo en sus sistemas; el resto puede usar la herramienta de arriba sin más.

POSThttps://api.kit.forhosting.com/math/cyclomatic-complexity

¿Prefiere automatizarlo? Un POST autenticado crea la tarea; el resultado llega por webhook o enlace firmado. La misma capacidad también se ejecuta aquí en la web, por email y desde Telegram — y pronto también desde nuestra app.

curl -X POST https://api.kit.forhosting.com/math/cyclomatic-complexity \
  -H "Authorization: Bearer $KIT_KEY" \
  -H "Content-Type: application/json" \
  -d '{"edges":9,"nodes":8,"components":1}'
{
  "edges": 9,
  "nodes": 8,
  "components": 1
}
{
  "task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
  "type": "math.cyclomatic_complexity",
  "status": "queued",
  "_links": {
    "result": "/tasks/tsk_…/result"
  }
}

La API es asíncrona: la llamada devuelve un task_id al instante y el resultado llega por webhook. El polling está limitado a 1 req/s por tarea.

Por solicitud$0.002

Precio publicado — sin tokens ni créditos inventados. Una tarea fallida no se cobra.

HTTPCódigoSignificado
401unauthorizedAPI key ausente o inválida.
402insufficient_balanceEl saldo no cubre el precio de la tarea.
404unknown_typeEl tipo de tarea no existe.
429rate_limitedDemasiadas peticiones. Use el webhook en vez de sondear.

Ver la documentación completa del KIT →