Relatórios complexos aninhados IF declarações no código GO, calculando suas complexidades com base nas regras definidas pelo Livro Branco da Complexidade Cognitiva por G. Ann Campbell.
Ajuda você a descobrir se as instruções que dificultam o código e esclarecem quais partes refatorarem.
go get github.com/nakabonne/nestif/cmd/nestif
nestif já está integrado ao Golangci-Lint. Consulte as instruções lá e habilite.
nestif O operador ... Glob é suportado e o acima é um equivalente a:
nestif ./...Um ou mais arquivos e diretórios podem ser especificados em um único comando:
nestif dir/foo.go dir2 dir3/...Os pacotes também podem ser especificados:
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 você escreve:
package main
func _ () {
if foo {
if bar {
}
}
if baz == "baz" {
if qux {
if quux {
}
}
}
}E dê 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) Observe que os resultados são classificados em ordem descendente de complexidade. Além disso, ele mostra apenas as 10 principais instruções mais complexas por padrão e você pode especificar quantos mostram com -top sinalizador.
Ele calcula as complexidades das declarações de IF de acordo com as regras de nidificação da complexidade cognitiva. Como o seu código mais aninhado é mais profundamente, mais difícil pode ser o raciocínio, ele avalia um incremento de nidificação para ele:
if condition1 {
if condition2 { // +1
if condition3 { // +2
if condition4 { // +3
}
}
}
} else , else if aumenta a complexidade por um onde quer que estejam porque o custo mental já foi pago ao ler o IF:
if condition1 {
if condition2 { // +1
if condition3 { // +2
} else if condition4 { // +1
} else { // +1
if condition5 { // +3
}
}
}
}Consulte a complexidade cognitiva: uma nova maneira de medir o Livro Branco da Compreensão de G. Ann Campbell para obter mais detalhes sobre a complexidade cognitiva.