Berichte komplex, wenn Aussagen im Go -Code, durch Berechnung seiner Komplexität auf der Grundlage der Regeln, die durch das weiße Papier der kognitiven Komplexität von G. Ann Campbell definiert sind, berechnet werden.
Es hilft Ihnen, zu finden, ob Aussagen, die Ihren Code zu lesen haben, schwierig machen, und verdeutlicht, welche Teile zu Refactor sind.
go get github.com/nakabonne/nestif/cmd/nestif
nestif ist bereits in Golangci-Lint integriert. Bitte beachten Sie die Anweisungen dort und aktivieren Sie sie.
nestif Der ... GLOB -Operator wird unterstützt, und das obige ist ein Äquivalent von::
nestif ./...Ein oder mehrere Dateien und Verzeichnisse können in einem einzigen Befehl angegeben werden:
nestif dir/foo.go dir2 dir3/...Pakete können ebenfalls angegeben werden:
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
Nehmen wir an, Sie schreiben:
package main
func _ () {
if foo {
if bar {
}
}
if baz == "baz" {
if qux {
if quux {
}
}
}
}Und gib es 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) Beachten Sie, dass die Ergebnisse in absteigender Reihenfolge der Komplexität sortiert sind. Darüber hinaus werden nur die Top -10 -Angaben standardmäßig angezeigt, und Sie können angeben, wie viele Sie mit -top -Flaggen angezeigt werden sollen.
Es berechnet die Komplexität von IF -Aussagen gemäß den Nistregeln der kognitiven Komplexität. Da der intensivere Kodex umso schwieriger sein kann, um zu verhindern, dass ein Verschachtelungsinkrement dafür beurteilt wird:
if condition1 {
if condition2 { // +1
if condition3 { // +2
if condition4 { // +3
}
}
}
} else und else if die Komplexität um einen um eins erhöht wird, wo immer sie sind, weil die mentalen Kosten bereits beim Lesen des IF bezahlt wurden:
if condition1 {
if condition2 { // +1
if condition3 { // +2
} else if condition4 { // +1
} else { // +1
if condition5 { // +3
}
}
}
}Weitere Informationen zur kognitiven Komplexität finden Sie in der kognitiven Komplexität: Eine neue Methode zur Messung des Whitepapiers für Verständlichkeit von G. Ann Campbell.