/
Вопросы и ответы
/
Go
/

Golangci-lint: что это и как пользоваться

Golangci-lint: что это и как пользоваться

18 дней назад

Nikolai Gagarinov

Ответы

1

Линтер — это инструмент статического анализа кода. Он проверяет код без запуска, находит потенциальные ошибки, подозрительные конструкции и нарушения стиля. Это снижает количество багов, делает код понятнее и облегчает командную работу.

Что такое golangci-lint

golangci-lint — это быстрый раннер линтеров для Go. Он запускает сразу много линтеров, делает это параллельно, использует кэш, поддерживает конфигурацию в YAML и интегрируется с IDE и CI. Внутри уже есть большой набор линтеров, поэтому отдельно их устанавливать не нужно.

Установка

Актуальный способ — установка готового бинарника. Пример команды из официальной документации:

curl -sSfL https://golangci-lint.run/install.sh | sh -s -- -b $(go env GOPATH)/bin v2.9.0

golangci-lint --version

Другие варианты установки: Homebrew, Chocolatey, Scoop, Docker. В документации отдельно отмечено, что установка через go install не рекомендуется, так как возможны проблемы с версиями и зависимостями.

Базовое использование

Проверка проекта:

golangci-lint run

Автоисправления и форматирование (если правила это позволяют):

golangci-lint run --fix

Только форматирование:

golangci-lint fmt

Конфигурация

Конфиг обычно лежит в корне проекта и называется .golangci.yml. В современном формате нужно явно указать версию:

# .golangci.yml
version: "2"

run:
  timeout: 5m
  tests: true

linters:
  default: standard

Ключ version: "2" обязателен для актуального формата. Все параметры конфигурации соответствуют параметрам CLI.

Как выбирать линтеры

Можно использовать готовые наборы:

  • standard — стандартный набор (по умолчанию)
  • fast — только быстрые линтеры
  • all — включить все линтеры
  • none — отключить все

Также можно явно включать и выключать отдельные линтеры в секциях linters.enable и linters.disable.

Мини-процедура подключения в проект

  1. Установить golangci-lint.
  2. Создать .golangci.yml с version: "2".
  3. Запустить golangci-lint run и исправить замечания.
  4. При необходимости использовать golangci-lint run --fix.

Про CI

В CI важно фиксировать конкретную версию golangci-lint, чтобы обновления не ломали сборку внезапно.

Полезные ссылки

18 дней назад

Nikolai Gagarinov