Расчет метрик технического долга¶
CodeScoring.TQI отслеживает несколько метрик технического долга. Основные из них – цикломатическая сложность, встречаемость дубликатов, темп изменений.
Расчет цикломатической сложности¶
Цикломатическая сложность – это показатель, который отражает количество независимых путей в коде. Чем выше это значение, тем сложнее поддерживать и тестировать код.
Расчет ведется по формуле:
Где:
- M – цикломатическая сложность;
- E – количество рёбер (переходов между операторами);
- N – количество узлов (операторов, условий);
- P – количество компонент связности (обычно 1).
Пример:
Цикломатическая сложность:
- N = 3 (вход,
if-else,print). - E = 3 (вход ->
if-else,if-else->print,print-> выход). - P = 1 (функция).
Таким образом цикломатическая сложность составляет M = E - N + 2P = 3 - 3 + 2 = 2
Уровни сложности:
- Низкая: < 10 (простой код, легко читаемый и поддерживаемый);
- Средняя: 10–20 (умеренно сложный код, требует внимания при изменениях);
- Высокая: > 20 (сложный код, возможны проблемы с тестированием и поддержкой).
Расчет процента внутрипроектных дубликатов¶
Этот показатель отражает, какая часть кода проекта является дублируемой. Он рассчитывается по следующей формуле:
Чем выше этот процент, тем больше кода можно оптимизировать с помощью рефакторинга.
Расчет встречаемости дубликатов¶
Этот показатель оценивает масштаб распространения дублированного кода по проекту.
Категории:
- Низкий уровень – если дублируемых строк меньше 50;
- Средний уровень – если дублируемых строк от 50 до 300;
- Высокий уровень – если дублируемых строк больше 300.
Графики влияния изменений¶
Оценить влияние изменений на проект можно по следующим параметрам на общем графике:
- Темп;
- Скорость;
- Плотность.

Размер элемента на графике позволяет оценить его влияние на выборку. Расчет выполняется за период. Минимальный период - неделя.
Размеры элементов в выборке нормированы. Нормирование выборки выполняется по формуле:
Где:
- Xmin - минимальное значение в выборке;
- Xmax - максимальное значение в выборке;
- X’ - нормализованное значение.
Расчет темпа изменений¶
Темп изменений показывает объем изменения кода относительно общего объема строк кода. Высокий темп изменения кода указывает на частые изменения требований или нестабильный ритм работы команды разработки.
Расчет ведется по формуле:
Где:
- R – темп изменений;
- L – количество внесенных (добавленных, удаленных, модифицированных) строк кода, за расчетный период;
- T – общее количество строк кода в репозитории проекта на начало расчетного периода.
Расчет скорости изменений¶
Скорость изменений показывает объем изменений в коде относительно количества коммитов. При высоких значениях возрастает нагрузка при проведении код-ревью, тестирования и сопровождения.
Расчет ведется по формуле:
Где:
- V – плотность изменений;
- L – количество внесенных (добавленных, удаленных, модифицированных) строк кода, за расчетный период;
- C – количество коммитов.
Расчет плотности изменений¶
Плотность изменений показывает какой объем изменений в коде был произведен относительно количества измененных файлов. Большое значение плотности свидетельствует об модификации большого количества модулей. Повышается нагрузка про проведении код-ревью, тестирования и сопровождения.
Расчет ведется по формуле:
Где:
- D – плотность изменений;
- L – количество внесенных (добавленных, удаленных, модифицированных) строк кода, за расчетный период;
- F – количество измененных файлов.