Какие знаешь линтеры в Go

«Какие знаешь линтеры в Go» — вопрос из категории Other, который задают на 24% собеседований AQA / Automation. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В экосистеме Go существует несколько популярных инструментов для статического анализа и линтинга кода:

  1. golangci-lint — самый популярный агрегатор линтеров. Запускает множество анализаторов параллельно, что делает проверку очень быстрой. Конфигурируется через файл .golangci.yml.

    golangci-lint run
  2. staticcheck — мощный и рекомендуемый статический анализатор. Обнаруживает ошибки, неиспользуемый код, упрощения и проблемы с производительностью. Часто включается в golangci-lint.

  3. govet — встроенный в Go инструмент (go vet). Проверяет код на наличие "подозрительных" конструкций: неправильное использование printf-подобных функций, некорректные теги структур и другие распространённые ошибки.

    go vet ./...
  4. errcheck — специализированный линтер, который проверяет, что возвращаемые ошибки явно обрабатываются (не игнорируются).

  5. revive — быстрая и гибкая альтернатива устаревшему golint. Позволяет настраивать правила стиля кода.

  6. ineffassign — обнаруживает неэффективные присваивания, когда значение переменной присваивается, но никогда не используется после этого.

На практике для проекта я обычно настраиваю golangci-lint с набором нужных анализаторов (включая staticcheck, govet, errcheck) и интегрирую его в CI/CD пайплайн для автоматической проверки каждого коммита и пул-реквеста.