go fix Modernizers & go vet Analyzers
go vet detecta código suspeito que o compilador aceita, e go fix aplica reescritas automáticas - incluindo modernizadores do Go 1.26 que atualizam padrões legados para os idiomas atuais.
Busque em todas as páginas da documentação
go vet detecta código suspeito que o compilador aceita, e go fix aplica reescritas automáticas - incluindo modernizadores do Go 1.26 que atualizam padrões legados para os idiomas atuais.
A análise estática em Go começa na stdlib: go vet distribui analisadores para erros comuns como verbos Printf mal formatados e código inalcançável.
go fix executa fixers registrados com a mesma estrutura de análise, reescrevendo fontes no local quando seguro.
O Go 1.26 expande go fix com modernizadores para padrões como captura de variável de loop antiga e APIs depreciadas.
As equipes adicionam golangci-lint e staticcheck por cima para regras mais amplas, mas vet/fix permanecem a linha de base de configuração zero que todo módulo pode executar.
Cartão de receita de referência rápida - pronto para copiar e colar.
# Executa os analisadores vet padrão em todos os pacotes
go vet ./...
# Visualiza reescritas de modernizadores sem escrever arquivos
go fix -diff ./...
# Aplica modernizadores e revisa em git diff
go fix ./...
# Executa um analisador específico (exemplo: printf)
go vet -printf=false -assign ./...Quando usar isso:
go vet ./... em CI em cada PR junto com os testes.go fix -diff após atualizar o Go para ver sugestões de modernizadores antes de aplicá-las.golang.org/x/tools/go/analysis para regras específicas da organização.// antes do modernizador: captura de variável de loop em closure (risco estilo pré-1.22)
package worker
func Jobs() []func() int {
ids := []int{1, 2, 3}
var fns []func() int
for _, id := range ids {
fns = append(fns, func() int { return id })
}
return fns
}go vet ./...
go fix -diff ./...
go fix ./...
go test ./...// após o modernizador go fix (ilustrativo - a reescrita exata depende da versão do analisador)
package worker
func Jobs() []func() int {
ids := []int{1, 2, 3}
var fns []func() int
for _, id := range ids {
id := id // o modernizador pode inserir uma cópia de sombra onde ainda for necessário
fns = append(fns, func() int { return id })
}
return fns
}O que isso demonstra:
go vet sinaliza construções que compilam, mas se comportam de forma estranha.go fix -diff mostra patches antes de você commitá-los.go/packages, fazem a verificação de tipos e, em seguida, executam passes de análise registrados via analysis.Analyzer.go vet relata diagnósticos para stderr e sai com um código diferente de zero quando existem problemas.go fix executa analisadores que implementam SuggestedFix e escreve arquivos de origem atualizados.go test.| Tema do analisador | Problema de exemplo |
|---|---|
printf | Verbo incorreto para o tipo do argumento |
assign | Autoatribuição ou atribuição inútil |
unreachable | Código após return/panic |
structtag | Tags de struct JSON ou DB mal formatadas |
errorsas | Alvo de errors.As não é ponteiro para tipo de erro |
loopclosure | Variável de loop capturada por goroutine ou defer |
go fix (não um binário separado).git diff - os fixers assumem casos comuns, não todos os invariantes de domínio.# Instala analisadores estendidos (staticcheck) para execuções locais
go install honnef.co/go/tools/cmd/staticcheck@latest
staticcheck ./...
# golangci-lint agrega vet, staticcheck, gosec e mais
golangci-lint run ./...go fix sem testes - modernizadores podem alterar semânticas em casos extremos. Correção: go test ./... completo e benchmarks direcionados após cada passagem de correção.go vet em si.analysistest.vendor/ e diretórios gerados; corrija entradas ou templates em vez disso.| Alternativa | Use Quando | Não Use Quando |
|---|---|---|
staticcheck | Verificações mais profundas de bugs e desempenho | Você só precisa da linha de base da stdlib |
golangci-lint | Uma configuração para dezenas de linters | Repositórios minúsculos onde go vet é suficiente |
Modernizadores go fix | Atualizações em massa após o salto de versão do Go | Código legado escrito manualmente com invariantes sutis |
| Inspeções IDE (gopls) | Feedback imediato ao digitar | CI ainda precisa de portões de linha de comando |
go vet distribui um pequeno conjunto de stdlib focado em bugs definitivos.
staticcheck adiciona centenas de verificações mantidas pela comunidade Go.
Os fixers podem formatar regiões alteradas.
Execute gofmt ou goimports em toda a árvore se o estilo divergir.
Sim.
Use golang.org/x/tools/go/analysis e registre-o com um driver ou multichecker personalizado.
Linters habilitam regras mais rigorosas ou adicionais.
Trate golangci-lint como um superconjunto, não um substituto para testes.
Analisadores go fix empacotados com versões mais recentes do Go que reescrevem padrões desatualizados para os idiomas atuais.
Eles se expandem com o tempo; leia as notas de lançamento ao atualizar.
Geralmente não - CI deve ser somente leitura.
Execute o fix localmente ou em um bot PR dedicado, depois comite os resultados.
Refatore, se possível.
Para exceções, use comentários //nolint apenas com política de equipe e um motivo rastreado.
Não para seu módulo se as dependências estiverem em cache.
Analisadores apenas verificam tipos de fontes locais e de módulos.
Sim.
Ele carrega arquivos _test.go da mesma forma que go test.
gopls executa muitos analisadores no editor para diagnósticos.
go vet e linters de CI mantêm portões consistentes em toda a equipe.
go vetVersões da Stack: Esta página foi escrita para Go 1.26.x (padrão GC Green Tea, modernizadores go fix - verifique o patch na compilação), chi (última versão - verifique na compilação), gin (última versão - verifique na compilação), echo (última versão - verifique na compilação), google.golang.org/grpc (última versão - verifique na compilação), sigs.k8s.io/controller-runtime (última versão - verifique na compilação), kubebuilder (última versão - verifique na compilação), tinygo (última versão - verifique os alvos de placa na compilação), wazero (última versão - verifique na compilação) e golangci-lint (última versão - verifique o conjunto de linters na compilação).
Revisado por Chris St. John·Última atualização: 19 de jul. de 2026