Laporan kompleks bersarang jika pernyataan dalam kode GO, dengan menghitung kompleksitasnya berdasarkan aturan yang ditentukan oleh Buku Putih Kompleksitas Kognitif oleh G. Ann Campbell.
Ini membantu Anda menemukan jika pernyataan yang membuat kode Anda sulit dibaca, dan mengklarifikasi bagian mana yang menjadi refactor.
go get github.com/nakabonne/nestif/cmd/nestif
nestif sudah terintegrasi dengan Golangci-Lint. Silakan merujuk pada instruksi di sana dan mengaktifkannya.
nestif ... Operator Glob didukung, dan di atas setara dengan:
nestif ./...Satu atau lebih file dan direktori dapat ditentukan dalam satu perintah:
nestif dir/foo.go dir2 dir3/...Paket dapat ditentukan juga:
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
Katakanlah Anda menulis:
package main
func _ () {
if foo {
if bar {
}
}
if baz == "baz" {
if qux {
if quux {
}
}
}
}Dan berikan untuk 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) Perhatikan bahwa hasilnya diurutkan dalam urutan kompleksitas yang menurun. Selain itu, ini hanya menunjukkan 10 pernyataan IF paling kompleks paling kompleks secara default, dan Anda dapat menentukan berapa banyak yang ditampilkan dengan bendera -top .
Ini menghitung kompleksitas pernyataan IF sesuai dengan aturan bersarang kompleksitas kognitif. Karena semakin dekat kode Anda, semakin sulit untuk beralasan, itu menilai kenaikan bersarang untuk itu:
if condition1 {
if condition2 { // +1
if condition3 { // +2
if condition4 { // +3
}
}
}
} else else if meningkatkan kompleksitas oleh satu di mana pun mereka berada karena biaya mental telah dibayarkan saat membaca IF:
if condition1 {
if condition2 { // +1
if condition3 { // +2
} else if condition4 { // +1
} else { // +1
if condition5 { // +3
}
}
}
}Silakan lihat kompleksitas kognitif: cara baru untuk mengukur kertas putih pemahaman oleh G. Ann Campbell untuk lebih detail tentang kompleksitas kognitif.