Rapporte complexe des déclarations IF IF dans le code GO, en calculant ses complexités sur la base des règles définies par le livre blanc de complexité cognitive de G. Ann Campbell.
Il vous aide à trouver si les instructions rendent votre code difficile à lire et clarifie les pièces à refactor.
go get github.com/nakabonne/nestif/cmd/nestif
nestif est déjà intégré à Golangci-lint. Veuillez vous référer aux instructions là-bas et l'activer.
nestif L'opérateur ... Glob est pris en charge, et ce qui précède est un équivalent de:
nestif ./...Un ou plusieurs fichiers et répertoires peuvent être spécifiés dans une seule commande:
nestif dir/foo.go dir2 dir3/...Les packages peuvent également être spécifiés:
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
Disons que vous écrivez:
package main
func _ () {
if foo {
if bar {
}
}
if baz == "baz" {
if qux {
if quux {
}
}
}
}Et donnez-le à 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) Notez que les résultats sont triés par ordre décroissant de complexité. De plus, il ne montre que les 10 premiers instructions IF les plus complexes par défaut, et vous pouvez spécifier le nombre à afficher avec un indicateur -top .
Il calcule les complexités des déclarations IF en fonction des règles de nidification de la complexité cognitive. Étant donné que plus votre code est profondément entouré, plus il peut être difficile de raisonner, il évalue une incrément de nidification:
if condition1 {
if condition2 { // +1
if condition3 { // +2
if condition4 { // +3
}
}
}
} else et else if augmenter la complexité de celui-ci où qu'ils se trouvent parce que le coût mental a déjà été payé lors de la lecture du si:
if condition1 {
if condition2 { // +1
if condition3 { // +2
} else if condition4 { // +1
} else { // +1
if condition5 { // +3
}
}
}
}Veuillez consulter la complexité cognitive: une nouvelle façon de mesurer le livre blanc de la compréhension de G. Ann Campbell pour plus de détails sur la complexité cognitive.