Travis CI, CircleCI, Codecov, SonarQube, CodeSee, GitHub Actions и другие

Как инженеры-программисты, мы любим автоматизировать. Тем не менее, проверка кода часто является довольно ручным процессом, который занимает большую часть нашего времени. Как мы можем улучшить это? Существует множество советов и приемов для эффективной проверки кода, поэтому мы не будем их здесь рассматривать. Вместо этого давайте сосредоточимся на тех частях проверки кода, которые мы можем автоматизировать.

В этой статье мы рассмотрим пять инструментов и интеграций, которые могут значительно улучшить ваш опыт проверки кода в GitHub.

Трэвис CI или CircleCI

Во-первых, давайте поговорим о непрерывной интеграции (CI). Настройка CI для ваших репозиториев — это первый шаг в автоматизации процесса проверки кода. Имея конвейер CI, вы можете запускать все, что захотите! По крайней мере, ваш конвейер CI должен включать задания для форматирования, линтинга и модульных тестов. Вы также можете рассмотреть возможность создания дополнительных заданий для создания артефактов, развертывания приложений для проверки или выполнения сквозных тестов.

Непрерывная интеграция помогает поддерживать ветку master в хорошем состоянии. Это также ускоряет процесс проверки кода, обрабатывая все утомительные вещи, в которых компьютеры хороши, а люди — нет. Больше никаких споров о стилях кода или лучших практиках во время проверки кода! Имея конвейер непрерывной интеграции, вы можете запускать автоматические проверки для каждого нового запроса на вытягивание, который вы создаете.

Travis CI и CircleCI — отличные варианты для непрерывной интеграции. Оба позволяют настраивать конвейер CI с помощью файлов YAML, что позволяет писать инфраструктуру в виде кода. В файле YAML вы можете указать, например, какой образ Docker использовать, какую версию Node запускать и какие шаги установки и сборки выполнять.

Лучше всего то, что Travis CI и CircleCI можно использовать бесплатно для проектов с открытым исходным кодом.

Шутка и Кодеков

Далее давайте посмотрим на тестовое покрытие. Модульные тесты важны. Они помогают предотвратить регрессию, служат живой документацией для вашей кодовой базы и позволяют уверенно вносить изменения.

Тесты легко реализовать в конвейере CI. Если какие-либо тесты не пройдены, тестовое задание завершается с ошибкой, и запрос на вытягивание блокируется от слияния до тех пор, пока тесты не будут исправлены.

Важно не только, чтобы ваши тесты проходили успешно, но и чтобы покрытие кода было высоким. Прохождение тестов, которые охватывают только 20% кодовой базы, не гарантирует, что остальные 80% кодовой базы находятся в хорошем состоянии после внесения любых изменений. Большее покрытие кода означает меньше мест, где можно спрятать ошибки.

Тестовые фреймворки, такие как Jest, позволяют собирать результаты покрытия кода и применять определенные пороговые значения покрытия кода. Если вы хотите сделать эти отчеты о покрытии еще на один шаг вперед, вы можете добавить такой инструмент, как Codecov, в свой конвейер CI.

Codecov берет данные Jest и превращает их в отчеты, которые вы можете просматривать в своих запросах на включение. Codecov может дать вам представление о том, как каждый запрос на вытягивание влияет на общее покрытие, если было увеличение или уменьшение покрытия, и какие файлы были затронуты. Codecov легко интегрируется в любой инструмент CI, который вы можете использовать, будь то Travis CI, CircleCI, GitHub Actions, GitLab CI, Jenkins или что-то еще.

И CodeCov можно использовать бесплатно для проектов с открытым исходным кодом.

SonarQube и SonarCloud

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

Инструмент статического анализа, такой как SonarQube, может предоставить дополнительную информацию в дополнение к тому, что может найти обычный линтер. SonarQube может помочь определить запахи кода, сложность кода, дублирование кода и проблемы безопасности.

SonarQube можно запускать как самоуправляемый сервис или запускать его в облаке как SonarCloud. Вы также можете интегрировать SonarQube в конвейер CI, чтобы он публиковал комментарии к вашим запросам на вытягивание.

Sonar предлагает решения как для корпоративных компаний, так и для проектов с открытым исходным кодом. Как и другие инструменты, которые мы обсуждали, SonarQube и SonarCloud можно использовать бесплатно для проектов с открытым исходным кодом.

CodeSee обзор карт

В-четвертых, давайте рассмотрим способы визуализации нашей кодовой базы и изменений, которые мы вносим в наши запросы на вытягивание. Было бы неплохо знать, как каждый измененный метод или файл влияет на остальную функциональность приложения?

CodeSee Review Maps поможет вам визуализировать, какие файлы были изменены и как эти изменения влияют на вышестоящие и нижестоящие зависимости. Интегрируя ваш репозиторий GitHub, CodeSee может автоматически публиковать комментарий и диаграмму к каждому запросу на вытягивание.

CodeSee упрощает просмотр измененных файлов в логическом порядке, а не просто в алфавитном порядке. Он даже позволяет вам — как автору кода — создавать интерактивные туры по вашему коду, чтобы знакомить рецензентов с вашими изменениями.

И, как вы уже догадались, карты CodeSee Review Maps можно использовать бесплатно для проектов с открытым исходным кодом.

Действия на GitHub

В-пятых, это была бы неправильная статья об автоматизации частей проверки кода в GitHub, если бы мы не упомянули GitHub Actions.

GitHub Actions позволяет вам создать любой рабочий процесс, который вы только можете себе представить. Эти рабочие процессы можно запускать как задания или проверки в GitHub, поэтому они работают аналогично другим инструментам CI, таким как Travis CI или CircleCI.

GitHub Actions Marketplace отлично подходит для поиска действий с открытым исходным кодом для использования в вашем проекте. Вы можете фильтровать результаты по категориям, таким как качество кода, проверка кода или непрерывная интеграция.

Просто в качестве тизера, некоторые интересные действия в этих категориях, которые привлекли мое внимание, были действия semantic-pull-request и automatic-rebase.

Действие semantic-pull-request гарантирует, что ваш PR-заголовок соответствует «стандартной спецификации коммитов, что невероятно полезно, если вы сжимаете и объединяете свои пулл-реквесты, а затем полагаетесь на эти сообщения фиксации для дальнейшей автоматизации во время процесса выпуска.

Действие автоматического перебазирования позволяет вам перебазировать ваши коммиты, просто комментируя /rebase в вашем запросе на включение. Перебазировать стало проще!

С GitHub Actions мы можем автоматизировать все! И — предупреждение о спойлере — GitHub Actions можно использовать бесплатно для общедоступных репозиториев.

Заключение: 5 инструментов для улучшения код-ревью в GitHub

Напомним, вот пять инструментов для улучшения вашего опыта проверки кода в GitHub:

  1. Travis CI или CircleCI (для непрерывной интеграции)
  2. Jest и Codecov (для покрытия кода)
  3. SonarQube и SonarCloud (для проблем с кодом и безопасности)
  4. Карты обзора CodeSee (для диаграмм кода)
  5. Действия GitHub (для всего остального)

Спасибо за чтение и удачного кодирования!