Calculadora del Índice de Mantenibilidad (Halstead, Complejidad Ciclomática, Líneas de Código)
El índice de mantenibilidad de una función, clase o archivo a partir de su volumen de Halstead, complejidad ciclomática y líneas de código, en la escala original y en la escala 0–100 de Visual Studio.
Resultados
La línea discontinua marca el valor que ha escrito.
Qué hace esta herramienta
El índice de mantenibilidad es un único número construido con tres mediciones: MI = 171 − 5,2 ln(V) − 0,23 G − 16,2 ln(LOC), procedente del trabajo de Oman y Hagemeister en los años 90. Los logaritmos hacen que duplicar las líneas de código cueste unos 11 puntos, mientras que cada camino de decisión adicional cuesta poco. Visual Studio lo reescala a 0–100, con mínimo en cero, y muestra verde desde 20, amarillo desde 10 y rojo por debajo de 10. Es una guía aproximada, útil para detectar los peores casos de una base de código, y nada dice sobre si el código es correcto o está bien diseñado.
Fórmula
MI = 171 − 5,2 ln V − 0,23 G − 16,2 ln LOC · índice de Visual Studio = máx(0, MI × 100 ÷ 171) (V = volumen de Halstead, G = complejidad ciclomática)
Variables
| Símbolo | Significado | Unidad |
|---|---|---|
v | Volumen de Halstead del código | — |
cx | Complejidad ciclomática | — |
loc | Líneas de código | — |
MI | Índice de mantenibilidad (escala original) | — |
VS | Índice de mantenibilidad (0–100, como en Visual Studio) | — |
RT | Clasificación (bandas de Visual Studio) | — |
Ejemplo resuelto
- Volumen de Halstead del código1500
- Complejidad ciclomática12
- Líneas de código120
- Índice de mantenibilidad (escala original)52,7
- Índice de mantenibilidad (0–100, como en Visual Studio)31
- Clasificación (bandas de Visual Studio)Buena mantenibilidad (20–100)
Limitaciones
- El resultado es una estimación basada solo en los valores introducidos. Las situaciones reales suelen incluir factores que esta calculadora desconoce.
- Los valores por defecto son referencias típicas, no mediciones de su situación. Sustitúyalos por sus propios datos siempre que los tenga.