Documentación · Métricas estáticas

km hal

Métricas de complejidad de Halstead

Calcula las métricas de complejidad de Halstead por archivo, extrayendo operadores y operandos del código fuente.

km hal [path]

Métricas

SímboloMétricaFórmulaDescripción
n1Operadores distintos—Operadores únicos en el código
n2Operandos distintos—Operandos únicos en el código
N1Total de operadores—Apariciones totales de operadores
N2Total de operandos—Apariciones totales de operandos
nVocabularion1 + n2Tamaño del “alfabeto” usado
NLongitudN1 + N2Número total de tokens
VVolumenN * log2(n)Tamaño de la implementación
DDificultad(n1/2) * (N2/n2)Propensión a errores
EEsfuerzoD * VEsfuerzo mental para desarrollarlo
BBugsV / 3000Bugs entregados estimados
TTiempoE / 18 segundosTiempo de desarrollo estimado

Un esfuerzo, un volumen y una cantidad de bugs más altos indican código más complejo y más propenso a errores.

Opciones:

FlagDescripción
--format {table,json,short,terse}Formato de salida (por defecto: table)
--include-testsIncluye los archivos de test en el análisis (excluidos por defecto)
--top NMuestra solo los N primeros archivos (por defecto: 20)
--sort-by METRICOrdena por effort, volume o bugs (por defecto: effort)

Ejemplo de salida:

Halstead Complexity Metrics
──────────────────────────────────────────────────────────────────────────────
 File                      n1   n2    N1    N2    Volume     Effort   Bugs
──────────────────────────────────────────────────────────────────────────────
 src/loc/counter.rs       139  116  3130  1169   34367.7   24070888  11.46
 src/main.rs               37   43   520   185    4457.0     354743   1.49
──────────────────────────────────────────────────────────────────────────────
 Total (2 files)                     3650  1354   38824.7   24425631  12.95

Lenguajes soportados

Rust, Python, JavaScript, TypeScript, Go, C, C++, C#, Java, Objective-C, PHP, Dart, Ruby, Kotlin, Swift, Shell (Bash/Zsh).