Расчет метрик технического долга¶
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.