IdentyPo - это инструмент Go Static Analysis для поиска опечаток в идентификаторах (функции, вызовы функций, переменных, константы, объявления типа, пакеты, метки), включая функции на вершине, переменные и т. Д.
go get -u github.com/alexkohler/identypo/cmd/identypo
misspell работает на необработанном тексту и комментариях. identypo работает на идентификаторах AST (т.е. имена переменных, имена функций и т. Д.). Более того, identypo расщепляет каждый идентификатор с вершиной, если это необходимо (MyIdentifierName превращается в «имя моего идентификатора») перед анализом, правильно ли он написан. Под капюшоном identypo использует двигатель SpellChing's Spellling, чтобы определить, правильно ли данное слово.
Подобно другими инструментами статического анализа Go (например, Golint, Go Vet), IdentyPo может быть вызван одним или несколькими именами файлов, каталогов или пакетами, названными его путем импорта. IdentyPo также поддерживает ... подстановочный знак. По умолчанию он будет искать опечатки в каждом идентификаторе (функции, вызовы функций, переменные, константы, объявления типа, пакеты, метки).
identypo [flags] files/directories/packages
-i="nto,creater" ). Это прямой передачу пакета Morppell.ПРИМЕЧАНИЕ. По умолчанию IdentyPo будет проверять наличие опечаток в каждом идентификаторе (функции, вызовы функций, переменные, константы, объявления типа, пакеты, метки). В этом случае ни один флаг не требует указанного. Из -за отсутствия частоты в настоящее время нет флагов, чтобы найти только объявления типа, пакеты или этикетки.
Некоторые примеры из стандартной библиотеки GO (используя флаг -i для подавления некоторых невз):
$ identypo -i= " rela,nto,onot,alltime " ./...
cmd/trace/goroutines.go:169 " dividened " should be dividend in dividened
cmd/trace/goroutines.go:173 " dividened " should be dividend in dividened
cmd/trace/goroutines.go:175 " dividened " should be dividend in dividened
cmd/trace/goroutines.go:179 " dividened " should be dividend in dividened
cmd/trace/annotations.go:1162 " dividened " should be dividend in dividened
cmd/trace/annotations.go:1166 " dividened " should be dividend in dividened
cmd/trace/annotations.go:1168 " dividened " should be dividend in dividened
cmd/trace/annotations.go:1172 " dividened " should be dividend in dividened
crypto/x509/verify.go:208 " Comparisions " should be Comparisons in MaxConstraintComparisions
crypto/x509/verify.go:585 " Comparisions " should be Comparisons in MaxConstraintComparisions // cmd/trace/annotations.go:1162 dividened" should be dividend in dividened
"percent" : func ( dividened , divisor int64 ) template. HTML {
// crypto/x509/verify.go:208 "Comparisions" should be Comparisons in MaxConstraintComparisions
type VerifyOptions struct {
...
MaxConstraintComparisions int
}Некоторые избранные примеры из Kubernetes:
$ identypo ./...
cmd/kubeadm/app/util/apiclient/wait.go:51 " inital " should be initial in initalTimeout
pkg/apis/certificates/types.go:125 " Committment " should be Commitment in UsageContentCommittment
test/e2e_node/eviction_test.go:51 " Dissapear " should be Disappear in pressureDissapearTimeout
pkg/scheduler/scheduler_test.go:705 " Satsified " should be Satisfied in FindUnboundSatsified
pkg/kubectl/cmd/scale.go:265 " Psuedo " should be Pseudo in JobPsuedoScaler // cmd/kubeadm/app/util/apiclient/wait.go:51 "inital" should be initial in initalTimeout
WaitForHealthyKubelet ( initalTimeout time . Duration , healthzEndpoint string ) error
// pkg/apis/certificates/types.go:125 "Committment" should be Commitment in UsageContentCommittment
UsageContentCommittment KeyUsage = "content commitment"
// test/e2e_node/eviction_test.go:51 "Dissapear" should be Disappear in pressureDissapearTimeout
const (
...
pressureDissapearTimeout = 1 * time . Minute
...
)
// pkg/scheduler/scheduler_test.go:705 "Satsified" should be Satisfied in FindUnboundSatsified
volumeBinderConfig: & persistentvolume. FakeVolumeBinderConfig {
...
FindUnboundSatsified : true ,
...
}
// pkg/kubectl/cmd/scale.go:265 "Psuedo" should be Pseudo in JobPsuedoScaler
scaler := scalejob. JobPsuedoScaler {
JobsClient : jobsClient ,
}Пожалуйста, откройте проблему и/или PR для любых функций/ошибок.
Если вам понравился IdentyPo, взгляните на мои другие статические инструменты Anaylsis!