Сонар дифференциальные оповещения
У меня есть качественный профиль в 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.