O Identypo é uma ferramenta de análise estática para encontrar erros de digitação em identificadores (funções, chamadas de função, variáveis, constantes, declarações de tipo, pacotes, etiquetas), incluindo funções baseadas em camelos, variáveis etc. Ele é construído no topo do pacote Misspell do Client9.
go get -u github.com/alexkohler/identypo/cmd/identypo
misspell opera em texto e comentários brutos. identypo opera em identificadores AST (isto é, nomes de variáveis, nomes de funções etc.). Além disso, identypo divide cada identificador baseado em camelos, se necessário (MyIdentifierName se transforma em 'meu nome de identificador') antes de analisar se está ou não escrito corretamente. Sob o capô, identypo está usando o mecanismo de verificação ortográfico do Misspell para determinar se uma determinada palavra está escrita corretamente.
Semelhante a outras ferramentas de análise estática GO (como Golint, Go Vet), o Identypo pode ser invocado com um ou mais nomes de arquivos, diretórios ou pacotes nomeados por seu caminho de importação. O Identypo também suporta o ... curinga. Por padrão, ele procurará erros de digitação em todos os identificadores (funções, chamadas de função, variáveis, constantes, declarações de tipo, pacotes, etiquetas).
identypo [flags] files/directories/packages
-i="nto,creater" ). Este é um repasse direto para o pacote Misspell.Nota: Por padrão, o Identypo verificará os erros de digitação em todos os identificadores (funções, chamadas de função, variáveis, constantes, declarações de tipo, pacotes, etiquetas). Nesse caso, nenhum sinalizador precisa especificado. Devido à falta de frequência, atualmente não há sinalizadores para encontrar apenas declarações de tipo, pacotes ou etiquetas.
Alguns exemplos da Biblioteca Padrão Go (utilizando a bandeira -i para suprimir alguns não -ISSes):
$ 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
}Alguns exemplos selecionados de 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 ,
}Abra um problema e/ou um PR para quaisquer recursos/bugs.
Se você gostou do Identypo, dê uma olhada nas minhas outras ferramentas estáticas de Anaylsis!