Сонар дифференциальные оповещения

У меня есть качественный профиль в Sonar, который будет предупреждать, если число нарушений увеличивается с момента предыдущего анализа, например, "Оповещать, если критические проблемы с момента предыдущего анализа больше 0".

Проблема в том, что когда вы запускаете последующую сборку без каких-либо изменений кода (или, возможно, безобидного изменения кода), предупреждение сбрасывается.

Есть ли способ заставить Sonar сравнить свои результаты с последним анализом, который не содержал никаких предупреждений?

РЕДАКТИРОВАТЬ: Я должен дать понять, что опция "разница с предыдущей версией" не будет работать для нашей установки, так как мы используем стратегию непрерывной доставки, в которой каждая сборка является потенциальным кандидатом на выпуск с собственной уникальной версией (мы используя отметку даты / времени в качестве версии).

РЕДАКТИРОВАТЬ #2: Я также попытался установить значение sonar.timemachine.period4 для жестко закодированной версии, с которой я хочу сравнить; однако это значение недоступно при настройке оповещений и, безусловно, игнорируется при реальном анализе.

2 ответа

Решение

После поиска источника Сонара мы с коллегой нашли обходное решение.

Настройте свой профиль качества, используя сравнение с "предыдущей версией", где бы вы ни захотели сравнить с последней хорошей сборкой.

Для каждой сборки:

  • Запросите последний тег VCS с версией сборки и назначьте его переменной с именем ${LAST_GOOD_BUILD} или аналогичной для остальной части процесса сборки.
  • Запустите сонар с -Dsonar.timemachine.period3=${LAST_GOOD_BUILD} (также убедитесь, что плагин BuildBreaker активен)
  • Если вы не получаете оповещений, следующий шаг сборки должен записать вашу новую версию в тег VCS;

Это работает, потому что sonar.timemachine.period3 является тем же параметром, что и "предыдущая версия" в вашем профиле качества, но теперь вы заменяете его жестко определенной версией по вашему выбору. Каждый раз, когда вы строите, вы помечаете только те сборки, которые проходят проверку качества, а когда вы запускаете Sonar, вы сравниваете только эти хорошие версии.

Довольно ужасно, но это заставляет наш сборочный конвейер работать снова и снова. Если что-то неясно по поводу вышесказанного, пожалуйста, дайте мне знать, и я обновлю это "решение".

ПРЕДОСТЕРЕЖЕНИЯ: Ваша нумерация версий не может быть целыми числами - Сонар будет интерпретировать это как количество дней между вашим текущим анализом и тем, с которым вы хотите сравнить! Кроме того, он не может быть в формате, который может быть перепутан с yyyy-MM-DD (например, 1000-01-01), так как если это также происходит для разрешения реальной даты, то вы непреднамеренно указываете начало диапазона дат. Я еще не видел, чтобы кто-то указывал номера версий таким образом, но вы никогда не знаете.

Нет, но вы можете настроить SonarQube так, чтобы ваши дифференциальные представления основывались на предыдущей версии или дате. См. http://docs.codehaus.org/display/SONAR/Differential+Views.

Другие вопросы по тегам