Обзор кода с SonarQube и Gerrit
Может ли кто-нибудь привести пример конвейера проверки кода, состоящего из интеграции Gerrit и SonarQube.
- Каковы преимущества использования их обоих?
- Как они интегрированы?
- Различия и разные области знаний?
У меня был некоторый опыт работы с SonarQube, но нет опыта работы с Герритом, честно в Интернете я не могу найти так много о различных подходах.
Насколько я могу понять, Gerrit - это общий инструмент, ориентированный на проверку кода: запускайте тесты и проводите статический анализ. Хотя SonarQube больше предназначен для отслеживания метрик кода и может быть использован для публикации дальнейшего анализа на сервере Gerrit, но, честно говоря, я все еще немного сбит с толку, и я все еще вижу, как работа этих двух инструментов сталкивается друг с другом!
Небольшое разрешение было бы здорово.
2 ответа
Геррит это две вещи:
- Веб-платформа для проверки кода
- Сервер репозитория Git
Я успешно использовал его в течение многих лет в среде CI/CD. Вот типичный рабочий процесс:
- Отправить новый патч (changeset) для рецензирования. Рецензирование через веб-интерфейс.
- Пусть ваш инструмент сборки / тестирования (мы используем Buildbot) автоматически проверит этот патч и проголосует за Геррита (+1/-1). Это может быть реализовано с помощью выделенных команд SSH.
- Исправьте и повторно отправьте патч до тех пор, пока он не достигнет одноранговых узлов и сборок / тестов.
- Наконец, отправьте проверенный патч в основной репозиторий.
Таким образом, Gerrit не выполняет ни статического анализа, ни тестирования, но может интегрироваться с другими инструментами. В настоящее время я интегрирую в него SonarQube, чтобы патчи можно было объединять только в случае удовлетворительных результатов статического анализа. Вот путь, по которому я иду:
- Отправить патч на Gerrit
- Buildbot слушает Gerrit через интерфейс SSH и замечает новый патч, для которого он начинает сборку.
- Поскольку мы создаем приложение на C/C++, мы используем оболочку C/C++ для Sonar. Эта оболочка сборки прослушивает всю сборку и генерирует некоторые результаты, которые вы можете увидеть в качестве сырья для анализа Sonar.
- На следующем шаге Buildbot запускает статический анализ кода с помощью sonar-scanner на выходе оболочки сборки (в режиме анализа ветвлений) и передает результаты в экземпляр SonarQube.
- SonarQube получает результаты. Через WebHook он информирует Геррита о состоянии контроля качества анализа отрасли.
Я надеюсь, что этот возможный рабочий процесс прояснит, как эти инструменты могут быть объединены.
Вы можете использовать плагин Gerrit Trigger на Jenkins для выполнения анализа SonarQube для каждого изменения (набора патчей), переданного Gerrit. После этого вы можете использовать плагин Sonar Gerrit для Jenkins, чтобы сообщать о результатах анализа обратно в Gerrit в виде комментариев и голосов, одобряя или отклоняя изменение.
На следующих изображениях видно, что плагин Sonar Gerrit можно настроить несколькими способами в соответствии с вашими предпочтениями.
Таким образом, можно исправить проблемы SonarQube во время процесса обзора на Gerrit (до интеграции с филиалами), избегая увеличения проблем с кодом и необходимости исправления позже (более высокая стоимость и сложная).