Calculadora do Índice de Manutenibilidade (Halstead, Complexidade Ciclomática, Linhas de Código)
O índice de manutenibilidade de uma função, classe ou ficheiro a partir do volume de Halstead, da complexidade ciclomática e das linhas de código, na escala original e na escala 0–100 do Visual Studio.
Resultados
A linha tracejada marca o valor que escreveu.
O que faz esta ferramenta
O índice de manutenibilidade é um único número construído a partir de três medições: MI = 171 − 5,2 ln(V) − 0,23 G − 16,2 ln(LOC), vindo do trabalho de Oman e Hagemeister nos anos 90. Os logaritmos fazem com que duplicar as linhas de código custe cerca de 11 pontos, enquanto cada caminho de decisão adicional custa pouco. O Visual Studio reescala-o para 0–100, com mínimo em zero, e mostra verde a partir de 20, amarelo a partir de 10 e vermelho abaixo de 10. É uma orientação aproximada, útil para detetar os piores casos numa base de código, e nada diz sobre se o código está correto ou bem desenhado.
Fórmula
MI = 171 − 5,2 ln V − 0,23 G − 16,2 ln LOC · índice do Visual Studio = máx(0, MI × 100 ÷ 171) (V = volume de Halstead, G = complexidade ciclomática)
Variáveis
| Símbolo | Significado | Unidade |
|---|---|---|
v | Volume de Halstead do código | — |
cx | Complexidade ciclomática | — |
loc | Linhas de código | — |
MI | Índice de manutenibilidade (escala original) | — |
VS | Índice de manutenibilidade (0–100, como no Visual Studio) | — |
RT | Classificação (faixas do Visual Studio) | — |
Exemplo resolvido
- Volume de Halstead do código1500
- Complexidade ciclomática12
- Linhas de código120
- Índice de manutenibilidade (escala original)52,7
- Índice de manutenibilidade (0–100, como no Visual Studio)31
- Classificação (faixas do Visual Studio)Boa manutenibilidade (20–100)
Limitações
- O resultado é uma estimativa baseada apenas nos valores que introduziu. Situações reais incluem muitas vezes fatores que esta calculadora desconhece.
- Os valores por defeito são referências típicas e não medições da sua situação. Substitua-os pelos seus próprios dados sempre que os tiver.