
Всем привет! Это Леша Жиряков, техлид backend-команды витрины онлайн-кинотеатра KION. В прошлый раз я писал про FastAPI vs Litestar, а сегодня поделюсь инструментами для проверки качества кода. Сами знаете — даже опытный разработчик не застрахован от опечаток и банальной усталости, которая легко может привести к обидным ошибкам. Если уже работали с каким-то из перечисленных инструментов или у вас другие фавориты, делитесь инфой в комментариях.
ESLint

Год запуска: сервис создал Николас Закас (Nicholas C. Zakas) в 2013 году как альтернативу JSHint.
Я бы сказал, что это must-have-инструмент для любого JavaScript- или TypeScript-проекта, он экономит нервы и время. Работает как умный ревизор кода, причем не просто выделяет ошибки, а подсказывает лучшие практики, следит за единообразием стиля и ловит потенциальные баги до их попадания в прод. В отличие от устаревших линтеров вроде JSHint, ESLint очень гибкий. Его можно адаптировать под любую кодовую базу — будь то ванильный JS, TypeScript, React, Vue или даже Node.js.
Важное удобство — функция автоматического исправления кода (eslint --fix), что устраняет рутинную возню с форматированием и мелкими ошибками. В связке с Prettier (об этом сервисе расскажу ниже) он превращается в мощный инструмент, который поддерживает код чистым без участия разработчика. Плюс его легко встраивать в CI/CD, что предотвращает попадание «грязного» кода в репозиторий. Да, местами ESLint может раздражать своей придирчивостью, но это вопрос грамотной настройки — достаточно один раз написать .eslintrc, и жизнь становится проще.
Есть и недостатки:
Ориентирован только на JavaScript и TypeScript, что делает его узкоспециализированным. Для проектов на других языках нужны дополнительные инструменты.
Новичкам может быть сложно разобраться с файлами настройки (.eslintrc, .eslintignore). Нужно понимать, какие правила включать, отключать и как интегрировать сервис с другими инструментами.
Prettier

Год запуска: создан Джеймсом Лонгом в 2017 году.
Prettier автоматически форматирует код, исправляя пробелы, отступы, кавычки, длину строк и другие аспекты оформления. ESLint и Prettier отлично дополняют друг друга. Ведь ESLint отвечает за качество кода (ошибки, лучшие практики), а Prettier — за его форматирование (отступы, пробелы, переносы строк). Так что идеально, если вы используете оба инструмента в связке.
Prettier поддерживает JavaScript, TypeScript, CSS, HTML, JSON, YAML, GraphQL, Markdown и даже некоторые шаблонные языки — так что это универсальный инструмент для работы с фронтендом и бэкендом. Главный плюс Prettier — жесткая консистентность: в отличие от линтеров с гибкими правилами, здесь минимум конфигураций — код приводится к единому стандарту, что исключает субъективность и разночтения. Особенно полезно при работе в команде, так как упрощает код-ревью и делает кодовую базу более читаемой. Prettier легко интегрируется в редакторы (VS Code, WebStorm и другие), CI/CD-пайплайны и может автоматически форматировать код при сохранении файлов или при коммите (pre-commit hook).
Особых недостатков нет, ну или я с ними не сталкивался. Дополняйте в комментариях, если нашли у Prettier проблемы.
CodeClimate

Год запуска: CodeClimate запустила в 2011 году компания CodeClimate, Inc.
Облачный сервис для глубокого анализа качества кода. Вы можете отслеживать поддерживаемость, сложность, дублирование, покрытие тестами и другие важные метрики. Проверяет более 20 языков программирования, включая JavaScript, TypeScript, Python, Ruby, Go, Java и PHP. Хотя для некоторых языков может потребоваться дополнительная настройка. В отличие от обычных линтеров, чекающих стиль и ошибки, CodeClimate фокусируется на архитектурных проблемах и техническом долге, предлагая аналитические отчеты и рекомендации по улучшению кода. И это очень круто для команд.

Одна из ключевых функций — Snapshot Analysis, сравнение версий, очень помогает определять динамику качества кода со временем. CodeClimate интегрируется с GitHub, GitLab и Bitbucket, автоматически анализируя код в процессе CI/CD и блокируя PR с деградацией качества (опционально). Он может измерять цикломатическую сложность, выявлять проблемные участки кода и оценивать покрытие тестами — при наличии отчетов от тестовых фреймворков. Благодаря гибкой настройке правил (в платных версиях) и интеграции с Jira, Slack и другими сервисами CodeClimate помогает командам поддерживать код в хорошем состоянии и не дает копить технический долг.
Недостатки: CodeClimate — платный сервис, у бесплатной версии есть серьезные ограничения. Но тут вам придется решать и выбирать, за что платить, а за что нет.
SonarQube

Год запуска: SonarQube создан компанией SonarSource в далеком 2008 году.
Мощный инструмент для статического анализа кода. Поддерживает больше 30 языков, включая Java, C#, JavaScript/TypeScript, Python, PHP и другие. Правда, это для платной версии. Бесплатная скромнее и поддерживает только Java, JavaScript/TypeScript, C#, Python, PHP, Kotlin, Go. С другой стороны, и это очень неплохо, большинству команд должно хватить.
Сервис помогает находить ошибки, уязвимости — например, SQL-инъекции, XSS, проблемные участки кода, обнаруживает дублирование и определяет избыточную сложность, оценивает покрытие тестами.

SonarQube легко интегрируется с CI/CD-системами (Jenkins, GitLab CI, GitHub Actions), у него есть удобные дашборды для визуализации качества кода. А значит, проще анализировать код, исправлять проблемы и поддерживать высокий уровень качества и безопасности. У сервиса есть плагины, добавляющие новые функции. Например, можно получить поддержку дополнительных языков или интеграцию с новыми инструментами. Так что это гибкий сервис, его можно адаптировать под нужды любого проекта. Очень рекомендую.
Недостатки: настройка и поддержка сервера требуют времени и ресурсов, особенно если вы используете локальную версию. У бесплатной, как и говорилось, есть ограничения по количеству языков и правил анализа. На всякий случай добавил это в недостатки — вдруг вы ждете все и сразу бесплатно.
Codacy

Год запуска: создан в 2014 году компанией Codacy, Inc.
Облачный инструмент для автоматического анализа качества кода. Здорово помогает разработчикам находить ошибки, уязвимости, подозрительные участки и проблемы с производительностью. Поддерживает более 30 языков программирования, включая JavaScript, TypeScript, Python, Java, Ruby, PHP, Go, C# и другие.
Codacy интегрируется с популярными платформами, такими как GitHub, GitLab, Bitbucket и Slack. Так что без проблем можно автоматически анализировать код при каждом пул-реквесте или коммите. А еще у него есть удобные дашборды для визуализации качества кода, включая метрики: покрытие тестами, сложность кода и дублирование. Codacy позволяет настраивать правила анализа под нужды проекта. Это гибкий инструмент для команд любого размера.
Тоже есть платная и бесплатная версия, как и у большинства его «коллег».
Недостатки: настройка правил может быть не такой быстрой, как в локальных инструментах вроде SonarQube. Сам Codacy не предоставляет локальной версии, а это может быть проблемой для проектов с повышенными требованиями к безопасности.
На сегодня все. Если у вас есть свои любимые инструменты для проверки качества кода, пишите в комментариях!