Плагин Sonar Gerrit не сообщает о результатах
Мы используем конвейер и после успешного завершения сборки выполняем следующее:
bat "mvn sonar:sonar -B -s ${buildSettings} -Dsonar.analysis.mode=preview -Dsonar.skipDesign=true -Dsonar.report.export.path=sonar-report.json"
sonarToGerrit(severity: 'Major', postScore: true, category: 'Code-Review', newIssuesOnly: true, issuesScore: '0', noIssuesScore: '0', changedLinesOnly: true)
Приведенный ниже журнал сборки показывает, что он обнаружил большое количество проблем, но все же необходимо прокомментировать 0.
Другие посты предполагают, что он не может найти отчет, но я не верю, что это так, поскольку он обнаружил ряд проблем. Любой совет по конфигурации трубопровода будет высоко ценится.
Мы используем плагин Sonar Gerrit версии 2.2.1, Gerrit Trigger 2.27.3 и версию Jenkins Enterprise 2.60.3.1.
2 ответа
Наиболее распространенный случай, касающийся вашего вопроса, связан с тем, что SonarQube проверяет весь проект, независимо от количества изменений, которые были сделаны в конкретном изменении. При создании нового отчета он сравнивает результат с результатом, который сохраняется в его базе данных (с ранее найденными проблемами, которые были обнаружены в режиме, отличном от предварительного просмотра). Таким образом, сонар помечает как новые все проблемы, о которых он не знал раньше (и если вы вообще не сохраняете эту информацию в SonarQube - все проблемы будут помечены как новые). Но плагин sonar-gerrit может публиковать сообщения только в тех файлах, на которые повлияло изменение, которое он проверяет. Таким образом, даже если вы установите "false" в настройках "newIssuesOnly" и "changeLinesOnly", все проблемы в файлах, не затронутые изменением, будут игнорироваться.
Вкратце, убедитесь, что проблемы, отмеченные как "isNew" = "true" в вашем отчете гидролокатора, действительно были изменены (для changeLinesOnly = true) или расположены в измененных файлах (для changeLinesOnly = false) в коммите, который вы пытаетесь проверить.
Другая возможная причина - настройки конфигурации проекта. Если ваши файлы являются частью подмодуля, вам необходимо включить имя подмодуля в набор базовых каталогов проекта. Или вы можете попробовать использовать функцию "разрешить автоматическое совпадение". Функция пытается автоматически сопоставить модули SonarQube с именами Gerrit (доступно с версии 2.1).
Не связанные с вашим вопросом советы относительно кода вашего конвейера:
На данный момент распознавание настроек серьезности (и других значений перечисления) чувствительно к регистру. Фактически, плагин игнорирует вашу настройку "Major", поскольку он не может ее распознать, и заменяет ее значением по умолчанию "INFO".
Другое дело, я не понимаю, почему вы устанавливаете для "postScore" значение "true", когда вы устанавливаете значения "Score" = 0 и"noIssuesScore"=0. Вы можете просто установить postScore=false и пропустить эти настройки вместе с "категорией" для простоты.
Также, если вы используете версию плагина выше 2.0, учтите, что API немного изменился и теперь использует следующую структуру:
sonarToGerrit (
reviewConfig: [
issueFilterConfig: [
severity: 'MAJOR',
newIssuesOnly: false,
changedLinesOnly: false
],
noIssuesTitleTemplate: 'Your text here',
someIssuesTitleTemplate: 'Your text here',
issueCommentTemplate: 'Your text here'
]
)
Хотя ваш код также должен работать (плагин поддерживает предыдущие версии), есть большая вероятность, что может быть ошибка.
Я также сталкиваюсь с той же проблемой с плагином Sonar-Gerrit jenkins. Скачал его с сайта плагинов Jenkins. Используя плагин Sonar-Gerrit 2.2.1, и анализировал сонарное сканирование на рабочем месте jenkins.
Для примера изменили только один файл и указали путь к этому файлу в базовом каталоге проекта, а также провели анализ сонара в режиме проблем.
Проблемы не загружаются в Gerrit с журналами
Отчет загружен и содержит 759 вопросов. Комментарии, которые необходимо прокомментировать: 0 Вопросы, связанные с подсчетом баллов: 0 Отзыв отправлен