Code review без ревьювера: 8 инструментов, которые помогут улучшить код
Code review — штука важная, но времзатратная. Рассказываем об инструментах, которые сами проанализируют код и укажут в нём слабые места.
18К открытий19К показов
Автор перевода Мария Багулина
Все любят конструктивные code review. Они помогают улучшить качество кода, что в конечном счёте повышает надёжность продукта. Но многим не нравится, что процесс code review часто затягивается и pull request’ы принимаются крайне медленно.
Мы уже писали о том, как эффективно проводить code review, но не всегда достаточно одних знаний — важно, чтобы у вас были правильные инструменты. В этой статье расскажем о нескольких хороших продуктах для code review, рассмотрим плюсы и минусы каждого из них.
Эти инструменты будут полезны не только тем, кто проводит code review, но и разработчикам, которые хотят улучшить свой код и найти в нём слабые места или возможные проблемы. Многие из продуктов доступны в GitHub Marketplace и бесплатны для opensource и частных проектов.
AccessLint
Насколько хорошая доступность у вашего программного обеспечения?
Скорее всего, вы не знаете ответ. Хотя стандарты веб-доступности хорошо документированы, они редко являются частью code review.
Исправить это призван AccessLint, который автоматически запускает серию тестов и комментирует ваш pull request, предлагая решить проблемы с доступностью (если они есть). Сюда также входят проверки доступности для людей с временными недугами (например сломанной рукой) или незначительными заболеваниями.
Если вы ещё не задумывались о доступности вашего продукта, то самое время начать. Во многих странах это является юридическим требованием. В США подают иски против веб-сайтов, которые не соответствуют рекомендациям ADA (Americans with Disabilities Act). В Великобритании доступность веб-ресурсов защищается Законом о равенстве (Equalities Act).
А теперь к преимуществам и недостаткам AccessLint.
Плюсы
- мгновенная проверка WCAG 2.0 для общих проблем доступности;
- можно добавить через GitHub Marketplace.
Минусы
- охватывает только основные проблемы доступности;
- ограниченная поддержка типов файлов (Haml, HTML, ERB/Rails).
Стоимость
- бесплатно для проектов с открытым исходным кодом;
- бесплатно для образовательных учреждений;
- 49 $ в месяц для неограниченного числа открытых и приватных репозиториев.
Imgbot
Когда вы сосредоточены на написании кода в установленный срок, легко забыть об оптимизации изображений.
Иллюстрации меньшего размера (имеется в виду размер файла, а не самой картинки) будут быстрее загружаться и повысят коэффициент конверсии. Поэтому очень важно не упускать это из виду.
Imgbot — простой и эффективный инструмент, который позволяет без потерь сжимать все изображения в ваших репозиториях.
Плюсы
- автоматически оптимизирует изображения без потерь, но при необходимости можно установить более агрессивное сжатие;
- после настройки не требует никаких действий — просто принимайте входящие pull request’ы.
Минусы
- высокая стоимость для небольших команд;
Стоимость
- бесплатно для проектов с открытым исходным кодом;
- 10 $ в месяц для персональных приватных проектов;
- 30 $ в месяц для коммерческих проектов.
LGTM
LGTM — платформа для анализа кода, которая фокусируется на поиске критических уязвимостей и предотвращении проблем.
LGTM проводит более чем 1600 тестов, и, находя проблему, автоматически помечает её в pull request.
LGTM очень хорошо справляется со своей работой благодаря исследованиям команды в области безопасности, которая на текущий момент нашла более ста CVE (Common Vulnerabilities and Exposures) в таких больших проектах, как UBoot, Apache Struts, ядро Linux, Memcached, VLC и Apple XNU.
Среди анализируемых проблем — внедрение регулярных выражений, XSS-уязвимости и низкое качество кода, приводящее к снижению безопасности.
Плюсы:
- широкая поддержка языков программирования, включая Си, C++, Java, JavaScript и Python;
- высокий уровень обнаружения уязвимостей и проблем с кодом.
Минусы:
- нет поддержи Go (для него можно использовать DeepSource, о котором написано ниже).
DeepSource
DeepSource используется такими компаниями, как NASA, Uber и Slack. Он автоматически обнаруживает уязвимости и проблемы с документированием кода.
Примеры анализируемых проблем:
- используемый модуль не согласуется с требованиями к ПО;
- в репозиторий закоммичена конфиденциальная информация.
DeepSource автоматически добавляет аннотации и комментарии к pull request’ам, облегчая обнаружение проблем и гарантируя безопасность конфиденциальных данных. Это ускоряет процесс code review и обеспечивает более высокое качество проекта.
Плюсы
- даёт мгновенную обратную связь в дружественной форме;
- простой в использовании веб-интерфейс.
Минусы
- только для Python и Go.
Стоимость
- бесплатно для проектов с открытым исходным кодом;
- от 12 $ в месяц для приватных репозиториев.
Codelingo
После того, как вы установили стандарты качества кода, необходимо убедиться, что они выполняются. Большинство команд используют для этого линтер, но есть и другой вариант.
Codelingo позволяет устанавливать и проверять стандарты качества программно в файле codelingo.yaml.
Основное преимущество Codelingo перед стандартными инструментами в том, что вы можете гибко задавать правила, которые использует именно ваша команда, а не ограничиваться универсальным линтером.
Если в pull request’e не соблюдаются правила, Codelingo автоматически оставляет комментарии и отправляет уведомление.
Плюсы
- можно определять особые стандарты качества кода;
- автоматическое исправление мелких недочётов в коде.
Минусы
- поддерживает только PHP, Python, Go и C#.
Стоимость
- бесплатно для публичных репозиториев;
- 5 $ в месяц на каждого члена организации, включая помощь в написании стандартов.
DeepScan
DeepScan — усовершенствованный инструмент статического анализа, который поддерживает JavaScript, TypeScript, React и Vue.js.
Он автоматически определяет возможные ошибки во время выполнения и потенциальные проблемы с качеством кода. DeepScan также предоставляет полезные показатели производительности участников команды и показывает, насколько точно они следуют стандартам кода. Это помогает менеджерам обеспечивать конструктивную обратную связь.
Система оценивания DeepScan присваивает проектам оценки: «Плохо», «Нормально» или «Хорошо».
Плюсы
- специальные инструменты для проектов на JavaScript, TypeScript, React и Vue.js;
- простая система оценок для обратной связи.
Минусы
- ограничения по языковой и библиотечной поддержке.
Стоимость
- бесплатно для проектов с открытым исходным кодом;
- от 15.96 $ за сотрудника в месяц.
CodeScene
CodeScene — инструмент автоматического анализа кода. Его основное отличие от традиционных методов в том, что CodeScene учитывает историю изменений и оценивает эволюцию всей системы. Это позволяет определять проблемы с качеством кода в зависимости от подхода к его написанию. CodeScene фиксирует, какой программист написал определённый фрагмент кода, что даёт ему возможность оценивать эффективность команды, отслеживать межгрупповые зависимости и находить узкие места в координации.
Плюсы
- оценка эффективности вашей организации согласно закону Конвея;
- обнаружение подсистем с низкой групповой автономией, которые становятся узкими местами в продуктивности;
- измерение технических рисков, если ключевой разработчик покидает проект.
Стоимость
- бесплатный анализ до 5 проектов;
- от 249 $ в месяц за неограниченное число репозиториев.
FeaturePeek
FeaturePeek — инструмент для предварительной сборки и развёртывания ПО.
Один из самых утомительных этапов code review — локальный запуск ветвей ваших коллег для проверки корректной работы их кода.
Правда, этот шаг иногда просто пропускается теми специалистами, которые не разбираются в Git или фронтенд-разработке (например дизайнерами или менеджерами по продукту).
Благодаря автоматическому предварительному развёртыванию каждого pull request’а те, кто выполняет code review, смогут просто нажать на ссылку и посмотреть, как работает код, прежде чем выполнить merge.
FeaturePeek предоставляет инструменты для совместной работы, среди которых комментирование, регистрация новых проблем с помощью шаблонов, запись экрана и многое другое. Эта функциональность входит в стандартную комплектацию FeaturePeek и не требует никаких изменений в стеке фронтенда.
Плюсы
- предварительное развёртывание каждого pull request’а;
- удобный виджет для отзывов в каждом превью;
- независимый PaaS, работает со статическим и докеризированным фронтендом.
Стоимость
- бесплатно для проектов с открытым исходным кодом;
- 19 $ за человека в месяц для приватных репозиториев (16 $ в месяц за пользователя на годовом тарифе).
А какими инструментами для code review пользуетесь вы? Пишите в комментариях.
18К открытий19К показов