Search
Write a publication
Pull to refresh
2399.5
МТС
Про жизнь и развитие в IT

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

Reading time5 min
Views12K

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

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

Tags:
Hubs:
Total votes 19: ↑17 and ↓2+23
Comments12

Useful links

Data Lake 2.0: Iceberg и Parquet в бою за миллисекунды

Level of difficultyMedium
Reading time9 min
Views2.1K
Total votes 12: ↑10 and ↓2+9
Comments2

Добавляем в CRM выбор лучшего времени общения с клиентом

Reading time6 min
Views704
Total votes 2: ↑2 and ↓0+3
Comments1

Information

Website
www.mts.ru
Registered
Founded
Employees
over 10,000 employees
Location
Россия