Boas Práticas de Linting e Qualidade de Código
Equilibrando rigor, velocidade e adoção incremental.
Busque em todas as páginas da documentação
Equilibrando rigor, velocidade e adoção incremental.
Estas regras destilam a seção de linting-quality: automatize as verificações tediosas, aumente o rigor dos linters com a base de código e mantenha a CI como autoridade.
make check em CONTRIBUTING e verifique os status de CI obrigatóriosmake fmt para correções com um comando.go vet ./... em todo PR. Vet visa bugs prováveis que o compilador perde.go test ./... verde. A qualidade inclui comportamento; lint não pode substituir testes.go.mod. Desvios na toolchain causam builds falsos verdes ou falsos vermelhos.make check.go test -race para serviços com concorrência. Falhas de race bloqueiam a mesclagem, não e-mails noturnos../... após alterações de módulo. Triagem de CVEs alcançáveis com PRs de upgrade, não ignorando silenciosamente.go mod tidy não produz diferenças. Mantém go.sum honesto na revisão.*.pb.go gerados e mocks de linters de estilo. Ainda compile e teste o código gerado.-local e versões de ferramenta com a CI. Elimina o atrito "passa localmente, falha no pipeline".make lint e make test-race. Um vocabulário para humanos e agentes.--no-verify a emergências com acompanhamento. Documente no acordo da equipe.//nolint com ID de ticket e escopo restrito. Nunca desabilite linters em pacotes sem proprietários de forma genérica.make fmt e siga em frente.//nolint para baixo a cada trimestre.gofmt, go vet e go test ./... em CI.
Adicione golangci-lint e race quando a equipe tiver mais do que um punhado de pacotes.
Comece com govet, errcheck, gosimple, ineffassign, unused, staticcheck.
Adicione revive e gosec após a linha de base de ruído ser zero.
OSS pode permanecer em format + vet + test para reduzir o atrito do contribuinte.
Execute govulncheck e race na CI do mantenedor antes das tags.
Particione por módulo em matriz, cache de módulos, use --new-from-rev em PRs.
Mantenha a varredura completa do repositório noturna.
Quando staticcheck não consegue expressar regras de API estáveis da organização.
Mantenha analisadores customizados como código de produção.
Escopo do lint para pacotes que compilam para cada destino.
Documente as tags de build excluídas em .golangci.yml.
Execute go fix em branches de upgrade; comite separadamente do trabalho de feature.
Vet pode falhar até que os modernizadores sejam aplicados.
Hotfixes ainda precisam de testes e vet.
Documente a revisão acelerada, não pule race/vuln em caminhos de produção.
Versões de Stack: Esta página foi escrita para Go 1.26.x (padrão Green Tea GC, modernizadores go fix - verifique o patch na build), chi (latest - verifique na build), gin (latest - verifique na build), echo (latest - verifique na build), google.golang.org/grpc (latest - verifique na build), sigs.k8s.io/controller-runtime (latest - verifique na build), kubebuilder (latest - verifique na build), tinygo (latest - verifique os alvos de placa na build), wazero (latest - verifique na build) e golangci-lint (latest - verifique o conjunto de linters na build).
Revisado por Chris St. John·Última atualização: 18 de jul. de 2026