Ответ
В экосистеме Go существует несколько популярных инструментов для статического анализа и линтинга кода:
-
golangci-lint— самый популярный агрегатор линтеров. Запускает множество анализаторов параллельно, что делает проверку очень быстрой. Конфигурируется через файл.golangci.yml.golangci-lint run -
staticcheck— мощный и рекомендуемый статический анализатор. Обнаруживает ошибки, неиспользуемый код, упрощения и проблемы с производительностью. Часто включается вgolangci-lint. -
govet— встроенный в Go инструмент (go vet). Проверяет код на наличие "подозрительных" конструкций: неправильное использованиеprintf-подобных функций, некорректные теги структур и другие распространённые ошибки.go vet ./... -
errcheck— специализированный линтер, который проверяет, что возвращаемые ошибки явно обрабатываются (не игнорируются). -
revive— быстрая и гибкая альтернатива устаревшемуgolint. Позволяет настраивать правила стиля кода. -
ineffassign— обнаруживает неэффективные присваивания, когда значение переменной присваивается, но никогда не используется после этого.
На практике для проекта я обычно настраиваю golangci-lint с набором нужных анализаторов (включая staticcheck, govet, errcheck) и интегрирую его в CI/CD пайплайн для автоматической проверки каждого коммита и пул-реквеста.