Informa complejos declaraciones de IF en código GO, calculando sus complejidades basadas en las reglas definidas por el documento blanco de la complejidad cognitiva por G. Ann Campbell.
Le ayuda a encontrar si las declaraciones que hacen que su código sea difícil de leer y aclara qué partes refactorizar.
go get github.com/nakabonne/nestif/cmd/nestif
nestif ya está integrado con Golangci-Lint. Consulte las instrucciones allí y habilite.
nestif El ... operador del globo es compatible, y lo anterior es un equivalente de:
nestif ./...Se pueden especificar uno o más archivos y directorios en un solo comando:
nestif dir/foo.go dir2 dir3/...Los paquetes también se pueden especificar:
nestif github.com/foo/bar example.com/bar/baz usage: nestif [<flag> ...] <Go files or directories or packages> ...
-e, --exclude-dirs strings regexps of directories to be excluded for checking; comma-separated list
--json emit json format
--min int minimum complexity to show (default 1)
--top int show only the top N most complex if statements (default 10)
-v, --verbose verbose output
Digamos que escribes:
package main
func _ () {
if foo {
if bar {
}
}
if baz == "baz" {
if qux {
if quux {
}
}
}
}Y dárselo a Nestif:
$ nestif foo.go
foo.go:9:2: `if baz == "baz"` is nested (complexity: 3)
foo.go:4:2: `if foo` is nested (complexity: 1) Tenga en cuenta que los resultados se clasifican en orden descendente de complejidad. Además, muestra solo las 10 declaraciones IF más complejas de forma predeterminada, y puede especificar cuántos mostrar con el indicador -top .
Calcula las complejidades de las declaraciones IF de acuerdo con las reglas de anidación de la complejidad cognitiva. Dado que cuanto más profundamente anide su código, más difícil puede ser para razonar, evalúa un incremento de anidación para ello:
if condition1 {
if condition2 { // +1
if condition3 { // +2
if condition4 { // +3
}
}
}
} else y else if aumente la complejidad por uno donde sea que estén porque el costo mental ya se ha pagado al leer el IF:
if condition1 {
if condition2 { // +1
if condition3 { // +2
} else if condition4 { // +1
} else { // +1
if condition5 { // +3
}
}
}
}Consulte la complejidad cognitiva: una nueva forma de medir la comprensión del papel blanco de G. Ann Campbell para obtener más detalles sobre la complejidad cognitiva.