Prácticas recomendadas de linting y calidad de código
Equilibrio entre rigurosidad, velocidad y adopción incremental.
Busca en todas las páginas de la documentación
Equilibrio entre rigurosidad, velocidad y adopción incremental.
Estas reglas destilan la sección de linting-quality: automatizar las comprobaciones aburridas, aumentar la rigurosidad del linter con la base de código y mantener la CI como autoridad.
make check en CONTRIBUTING y comprobaciones de estado de CI requeridasmake fmt para correcciones con un solo comando.go vet ./... en cada PR. Vet apunta a errores probables que el compilador omite.go test ./... en verde. La calidad incluye el comportamiento; el lint no puede reemplazar las pruebas.go.mod. La deriva de la cadena de herramientas causa compilaciones falsamente verdes o falsamente rojas.make check.go test -race para servicios con concurrencia. Los fallos de carrera bloquean la fusión, no los correos electrónicos nocturnos../... después de cambios en módulos. Clasificar las CVE alcanzables con PR de actualización, no ignorarlas silenciosamente.go mod tidy no produce ninguna diferencia. Mantiene go.sum honesto en la revisión.*.pb.go generados y mocks de los linters de estilo. Compilar y probar el código generado de todos modos.-local de los hooks y las versiones de las herramientas con la CI. Elimina la fricción de "pasa localmente, falla en el pipeline".make lint y make test-race. Un vocabulario para humanos y agentes.--no-verify a emergencias con seguimiento. Documentar en el acuerdo del equipo.//nolint con ID de ticket y alcance estrecho. Nunca deshabilitar linters en paquetes sin propietarios de forma generalizada.make fmt y seguir adelante.//nolint cada trimestre.gofmt, go vet y go test ./... en CI.
Añadir golangci-lint y race cuando el equipo tenga más que un puñado de paquetes.
Comenzar con govet, errcheck, gosimple, ineffassign, unused, staticcheck.
Añadir revive y gosec después de que la línea base de ruido sea cero.
OSS puede permanecer en formato + vet + test para reducir la fricción del contribuyente.
Ejecutar govulncheck y race en la CI del mantenedor antes de las etiquetas.
Dividir por módulo en la matriz, almacenar en caché los módulos, usar --new-from-rev en los PR.
Mantener el escaneo completo del repositorio nocturno.
Cuando staticcheck no puede expresar las reglas estables de la API de la organización.
Mantener analizadores personalizados como código de producción.
Limitar el lint a los paquetes que compilan para cada destino.
Documentar las etiquetas de compilación excluidas en .golangci.yml.
Ejecutar go fix en las ramas de actualización; confirmar por separado del trabajo de características.
Vet puede fallar hasta que se apliquen los modernizadores.
Los hotfixes todavía necesitan pruebas y vet.
Documentar la revisión acelerada, no omitir race/vuln en las rutas de producción.
Versiones de pila: Esta página se escribió para Go 1.26.x (predeterminado de Green Tea GC, modernizadores de go fix - verificar parche en la compilación), chi (última - verificar en la compilación), gin (última - verificar en la compilación), echo (última - verificar en la compilación), google.golang.org/grpc (última - verificar en la compilación), sigs.k8s.io/controller-runtime (última - verificar en la compilación), kubebuilder (última - verificar en la compilación), tinygo (última - verificar objetivos de placa en la compilación), wazero (última - verificar en la compilación) y golangci-lint (última - verificar conjunto de linters en la compilación).
Revisado por Chris St. John·Última actualización: 18 jul 2026