2016-09-16 3 views
0

Конфигурирование настраиваемого Quality Gate, по умолчанию SonarQube Way был взят в качестве исходной ссылки и далее скорректирован и настроен (добавлен дополнительный контроль). Наш текущее качество ворот выглядит следующим образом (старая версия против текущей версии):Техническое управление долгом SonarQube с помощью Quality Gate

Blocker issues:    error threshold at 0 
Complexity/class:   error threshold at 12 
Complexity/file:   error threshold at 12 
Complexity/function   error threshold at 2 
Coverage     error threshold at 100 >> changed to 65 
Critical issues    error threshold at 0 
Duplicated lines (%)  error threshold at 5 
Info issues     error threshold at 10 
Major issues    error threshold at 50 
Minor issues    error threshold at 100 
Overall coverage   error threshold at 100 >> changed to 65 
Public documented API (%) error threshold at 50 
Skipped Unit tests   error threshold at 0 
Technical Debts    error threshold at 10d >> change to (?? < 10) 
Unit test errors   error threshold at 0 
Unit test failures   error threshold at 0 

Главного о технической Задолженности дней, которые должны быть насильственными от 10 до чего-то меньшего, учитывая, что другие проверки были ослаблены (сложность и охват). Это действительно разумно: ослабляя некоторые правила, вы должны иметь больше маржи для контролируемой технической задолженности и, следовательно, более короткий порог для количества накопленных дней за неконтролируемый технический долг.

Однако общие качественные ворота должны каким-то образом (математически?) Следовать определенной пропорции.

Вопрос: как рассчитать наиболее подходящий технический порог долга с учетом релаксаций выше?

С old article (2009, следовательно, наиболее вероятно, не применимо больше) следующая формула была вычтена:

TechDebt = (cost_to_fix_one_block * duplicated_blocks) + \ 
    (cost_to fix_one_violation * mandatory_violations) + \ 
    (cost_to_comment_one_API * public_undocumented_api) + \ 
    (cost_to_cover_one_of_complexity * uncovered_complexity_by_tests) + \ 
    (cost_to_split_a_method * function_complexity_distribution) + \ 
    (cost_to_split_a_class * class_complexity_distribution) 

Примечание: \ добавлена ​​для удобства чтения.

Однако имеется слишком много неизвестных переменных для правильного вычисления, но оно не покрывает все элементы верхнего качества (выше, это старая ссылка).

Другие более поздние sources подробно описывают детали, но не как отрегулировать значения пропорциональным образом.

sonar.technicalDebt.developmentCost (Администратор/Конфигурация/Технический долг) имеет значение по умолчанию минут, что означает 1 LOC (стоимость для разработки 1 строки кода) = 30, но до сих пор не уровень детализации переменных выше и не полезен в этом случае.

+6

Ваш вопрос иллюстрирует слишком хорошо нонсенс вычисления технический долг и то, как он абсолютно ничего не помогает в улучшении качества кода. Я настоятельно рекомендую вам эту короткую запись в блоге: https://www.cqse.eu/ru/blog/technical-debt-metaphor/ –

+0

@ NilsGöde Я вижу смысл, с другой стороны, если это хорошо известный инструмент как часть общего профиля, инструмент также должен автоматически настраивать его при изменении некоторых переменных, это важная недостающая функция imho. В противном случае опасность состоит в том, что сообщество может начать игнорировать ее. –

+0

Вы спрашиваете, какой уровень технической задолженности допустим в приложении или как включить этот допустимый уровень (который масштабируется вместе с проектом) в ваши качественные ворота? –

ответ

3

A Quality Gate состоит из множества условий. Ваш список условий намного длиннее, чем тот, который установлен в качестве калибра качества по умолчанию. Большинство условий, которые вы перечисляете, не находятся в калибровочных калибрах по умолчанию. Это выглядит вместо этого, как будто вы отредактировали пороговые значения по умолчанию для ряда правил.

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

Технический порог долга может быть включен в Quality Gate, но по умолчанию это не так. Вместо этого в стандартном QG включен коэффициент технического долга по новому коду. Но понятие «технического долга» имеет отношение к вашему вопросу. Если вы установите жесткий порог технического долга в качественных воротах, небольшие проекты будут легче проходить через QG, чем крупные проекты. Если вы вместо этого используете коэффициент технического долга или коэффициент технического долга по новому коду (рекомендуется), то вы устанавливаете свои ворота качества на коэффициент, основанный на размере базовой базы по сравнению с техническим долгом. Таким образом, каждый проект имеет одинаковые шансы пройти или провалиться.Формула такова:

Восстановление стоимости/(затраты на разработку 1 строку кода * Количество строк кода)

с, по оценкам, стоимость разработки линия 30 мин. Это значение редактируется, КСТАТИ: Администрирование> Технический долг> Разработка стоимость

Ворота качества по умолчанию включает в себя технический коэффициент задолженности на Новый код ошибки порога 5.

+0

Вы правы, только что загрузили новую установку sonarqube 5.3, и действительно, затворы качества по умолчанию обеспечивают лишь несколько пороговых значений (охват нового кода на 80, новые проблемы с блокировщиками на 0, новые критические проблемы на 0, коэффициент технического долга по новому коду в 5). То же самое в sonarqube 5.4, в то время как в 5.5 он слегка изменил метки (новые ошибки/уязвимости вместо Blocker/Critical). –

+0

Я подтверждаю, что мы настроили калибровочные ворота по умолчанию, извините за эту неправильную исходную информацию, я исправлю ее в вопросе (и награду за награду). Следовательно, в целом вы бы посоветовали не использовать проверку технического долга для качественных ворот, поэтому мы обязательно это рассмотрим. Однако, если мы действительно должны были это сделать, что бы вы предложили как способ разумно установить/вычислить его? –

+2

Я бы предпочел сосредоточиться на соотношении. 10 дней технического долга в 100-литровом проекте? Большая проблема. 10-дневный технический долг в проекте на 100 км LoC? Дайте себе похлопывание по спине. –

Смежные вопросы