Перейти к основному содержимому

Линтеры

Линтеры — статические анализаторы исходного кода, предназначенные для выявления стилистических нарушений, потенциальных ошибок, несоответствий принятым соглашениям и уязвимостей на ранних этапах разработки. В отличие от компиляторов, линтеры не требуют запуска программы и могут интегрироваться в редакторы кода, системы контроля версий и CI/CD-конвейеры.

Ниже приведён перечень линтеров по языкам и технологиям с кратким описанием и способами установки.


1. Универсальные / мультиязычные линтеры

ИнструментОписаниеУстановка / Ссылка
SonarLintАнализ кода в IDE с поддержкой 30+ языковhttps://www.sonarsource.com/products/sonarlint/
SemgrepПоиск паттернов кода по правилам (YAML), поддержка 20+ языковpip install semgrep или brew install semgrep
CodeQLСемантический анализ кода (GitHub Advanced Security)https://codeql.github.com; CLI: codeql через GitHub CLI
MegaLinterАгрегатор множества линтеров с поддержкой CIhttps://megalinter.io; npm install -g mega-linter-runner
Super-LinterGitHub Action для запуска десятков линтеровhttps://github.com/github/super-linter

2. JavaScript / TypeScript

ИнструментОписаниеУстановка
ESLintСтандарт де-факто для JS/TS, поддержка плагинов и кастомных правилnpm install eslint --save-dev
TSLintУстаревший линтер для TypeScript (заменён ESLint + @typescript-eslint)Не рекомендуется к новому использованию
JSHintБолее простой и строгий, чем ESLintnpm install jshint --save-dev
StandardJSПресет ESLint без конфигурацииnpm install standard --save-dev
PrettierФорматтер, часто используется в связке с ESLintnpm install prettier --save-dev

3. Python

ИнструментОписаниеУстановка
PylintПолнофункциональный линтер с проверкой стиля, ошибок и архитектурыpip install pylint
Flake8Комбинация PyFlakes, pycodestyle и mccabepip install flake8
RuffВысокопроизводительная альтернатива Flake8, isort и pyupgradepip install ruff
BlackФорматтер (не линтер в строгом смысле, но часто используется в CI)pip install black
mypyСтатическая проверка типовpip install mypy
BanditПоиск уязвимостей безопасностиpip install bandit

4. Java

ИнструментОписаниеУстановка / Ссылка
CheckstyleПроверка стиля и соглашений оформления кодаMaven/Gradle плагин; https://checkstyle.org
PMDАнализ кода на наличие ошибок, дублирования, плохих практикhttps://pmd.github.io; Maven/Gradle
SpotBugsПродолжение FindBugs — поиск багов и уязвимостейhttps://spotbugs.github.io; Maven/Gradle
ErrorProneИнструмент от Google для перехвата ошибок на этапе компиляцииhttps://errorprone.info; интеграция через javac

5. C#

ИнструментОписаниеУстановка / Ссылка
Roslyn AnalyzersВстроенные и кастомные анализаторы на основе RoslynВключены в .NET SDK; можно расширять через NuGet
StyleCopПроверка стиля кода по правилам MicrosoftNuGet: dotnet add package StyleCop.Analyzers
SonarAnalyzer.CSharpАнализатор от SonarSourceNuGet: dotnet add package SonarAnalyzer.CSharp
EditorConfig + IDEСтандарт .editorconfig поддерживается Visual Studio и RiderСоздание файла .editorconfig в корне проекта

6. C / C++

ИнструментОписаниеУстановка
Clang-TidyСтатический анализ и рефакторинг кодаВходит в LLVM; apt install clang-tidy
CppcheckЛёгкий статический анализаторapt install cppcheck или https://cppcheck.sourceforge.io
PC-lint / PC-lint PlusКоммерческий линтер от Gimpel Softwarehttps://www.pclintplus.com
OCLintАнализатор для Objective-C, C, C++http://oclint.org (разработка приостановлена)

7. Go

ИнструментОписаниеУстановка
golintОфициальный линтер (устарел)Не рекомендуется
staticcheckСовременный и мощный статический анализаторgo install honnef.co/go/tools/cmd/staticcheck@latest
golangci-lintМета-линтер: объединяет 50+ анализаторовgo install github.com/golangci/golangci-lint/cmd/golangci-lint@latest
reviveБыстрая и настраиваемая замена golintgo install github.com/mgechev/revive@latest

8. Ruby

ИнструментОписаниеУстановка
RuboCopСтандартный линтер и форматтерgem install rubocop
reekПоиск «запахов» кода (code smells)gem install reek
brakemanАнализ безопасности Rails-приложенийgem install brakeman

9. PHP

ИнструментОписаниеУстановка
PHP_CodeSnifferПроверка стиля кода (PSR и др.)composer require --dev squizlabs/php_codesniffer
PHPStanСтатический анализ без запуска кодаcomposer require --dev phpstan/phpstan
PsalmАльтернатива PHPStan с поддержкой типовcomposer require --dev vimeo/psalm
PHPMDАнализ «запахов» кодаcomposer require --dev phpmd/phpmd

10. Shell / Bash

ИнструментОписаниеУстановка
ShellCheckЛинтер для shell-скриптовapt install shellcheck или brew install shellcheck
shfmtФорматтер (часто используется вместе)go install mvdan.cc/sh/v3/cmd/shfmt@latest

11. SQL

ИнструментОписаниеУстановка / Ссылка
sqlfluffЛинтер и форматтер SQL с поддержкой диалектовpip install sqlfluff
pgFormatterФорматтер для PostgreSQLhttps://github.com/darold/pgFormatter
SQLCheckВыявление антипаттернов в SQLpip install sqlcheck

12. Конфигурационные и разметочные форматы

Формат / ЯзыкЛинтерУстановка
YAMLyamllintpip install yamllint
JSONjsonlintnpm install -g jsonlint
TOMLtaplocargo install taplo-cli
Dockerfilehadolintdocker run --rm -i hadolint/hadolint < Dockerfile или brew install hadolint
Markdownmarkdownlint-clinpm install -g markdownlint-cli
HTMLhtmlhintnpm install -g htmlhint
CSS / SCSSstylelintnpm install stylelint --save-dev

13. Интеграция в редакторы и CI

  • Visual Studio Code: расширения ESLint, Pylint, RuboCop и др.
  • Vim / Neovim: через ALE, coc.nvim или null-ls.
  • Pre-commit: https://pre-commit.com — запуск линтеров перед коммитом.
  • GitHub Actions: шаблоны типа super-linter, reviewdog, или вызов напрямую (npm run lint, ruff check . и т.п.).

Все перечисленные инструменты являются свободно доступными, большинство — с открытым исходным кодом. При выборе линтера рекомендуется:

  • учитывать поддерживаемый язык и его версию,
  • обеспечивать согласованность правил в команде через конфигурационные файлы (.eslintrc, pyproject.toml, .rubocop.yml и др.),
  • интегрировать проверки на ранних этапах разработки (IDE → pre-commit → CI).