Конфигурирование настраиваемого 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, но до сих пор не уровень детализации переменных выше и не полезен в этом случае.
Ваш вопрос иллюстрирует слишком хорошо нонсенс вычисления технический долг и то, как он абсолютно ничего не помогает в улучшении качества кода. Я настоятельно рекомендую вам эту короткую запись в блоге: https://www.cqse.eu/ru/blog/technical-debt-metaphor/ –
@ NilsGöde Я вижу смысл, с другой стороны, если это хорошо известный инструмент как часть общего профиля, инструмент также должен автоматически настраивать его при изменении некоторых переменных, это важная недостающая функция imho. В противном случае опасность состоит в том, что сообщество может начать игнорировать ее. –
Вы спрашиваете, какой уровень технической задолженности допустим в приложении или как включить этот допустимый уровень (который масштабируется вместе с проектом) в ваши качественные ворота? –