Как стать автором
Обновить
2338.75
МТС
Про жизнь и развитие в IT

На заметку разработчикам: 5 сервисов для проверки качества кода

Время на прочтение5 мин
Количество просмотров11K

Всем привет! Это Леша Жиряков, техлид 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 не предоставляет локальной версии, а это может быть проблемой для проектов с повышенными требованиями к безопасности.

На сегодня все. Если у вас есть свои любимые инструменты для проверки качества кода, пишите в комментариях!

Теги:
Хабы:
Всего голосов 19: ↑17 и ↓2+23
Комментарии12

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

Обходим подводные камни работы с UDA в коде на Lua для ScyllaDB: дружим Java-драйвер и пустые значения

Уровень сложностиСредний
Время на прочтение5 мин
Количество просмотров371
Всего голосов 5: ↑5 и ↓0+10
Комментарии0

Пайплайн распознавания номеров транспортных средств: как это устроено

Время на прочтение7 мин
Количество просмотров2.2K
Всего голосов 23: ↑22 и ↓1+25
Комментарии1

Интеграция виджета обратного звонка МТС Exolve в документацию на MkDocs

Время на прочтение8 мин
Количество просмотров404
Всего голосов 5: ↑5 и ↓0+7
Комментарии0

Путь видео в онлайн-кинотеатрах от «стекла до стекла». Middleware — ядро, подписки, сервисы, витрина

Уровень сложностиПростой
Время на прочтение7 мин
Количество просмотров736
Всего голосов 4: ↑3 и ↓1+4
Комментарии0

Приручая хаос: как структурировать процессы в эксплуатационных командах. Кейс МТС

Время на прочтение6 мин
Количество просмотров694
Всего голосов 3: ↑3 и ↓0+4
Комментарии0

Информация

Сайт
www.mts.ru
Дата регистрации
Дата основания
Численность
свыше 10 000 человек
Местоположение
Россия