Golangci-lint: что это и как пользоваться
18 дней назад
Nikolai Gagarinov
Ответы
Линтер — это инструмент статического анализа кода. Он проверяет код без запуска, находит потенциальные ошибки, подозрительные конструкции и нарушения стиля. Это снижает количество багов, делает код понятнее и облегчает командную работу.
Что такое golangci-lint
golangci-lint — это быстрый раннер линтеров для Go. Он запускает сразу много линтеров, делает это параллельно, использует кэш, поддерживает конфигурацию в YAML и интегрируется с IDE и CI. Внутри уже есть большой набор линтеров, поэтому отдельно их устанавливать не нужно.
Установка
Актуальный способ — установка готового бинарника. Пример команды из официальной документации:
Другие варианты установки: Homebrew, Chocolatey, Scoop, Docker. В документации отдельно отмечено, что установка через go install не рекомендуется, так как возможны проблемы с версиями и зависимостями.
Базовое использование
Проверка проекта:
Автоисправления и форматирование (если правила это позволяют):
Только форматирование:
Конфигурация
Конфиг обычно лежит в корне проекта и называется .golangci.yml. В современном формате нужно явно указать версию:
Ключ version: "2" обязателен для актуального формата. Все параметры конфигурации соответствуют параметрам CLI.
Как выбирать линтеры
Можно использовать готовые наборы:
standard— стандартный набор (по умолчанию)fast— только быстрые линтерыall— включить все линтерыnone— отключить все
Также можно явно включать и выключать отдельные линтеры в секциях linters.enable и linters.disable.
Мини-процедура подключения в проект
- Установить
golangci-lint. - Создать
.golangci.ymlсversion: "2". - Запустить
golangci-lint runи исправить замечания. - При необходимости использовать
golangci-lint run --fix.
Про CI
В CI важно фиксировать конкретную версию golangci-lint, чтобы обновления не ломали сборку внезапно.
Полезные ссылки
- Главная страница и обзор: https://golangci-lint.run/
- Установка (локальная): https://golangci-lint.run/docs/welcome/install/local/
- CLI и команды: https://golangci-lint.run/docs/configuration/cli/
- Файл конфигурации: https://golangci-lint.run/docs/configuration/file/
- Установка в CI: https://golangci-lint.run/docs/welcome/install/ci/
- Changelog: https://golangci-lint.run/docs/product/changelog/
18 дней назад
Nikolai Gagarinov