Перейти к содержанию

Расчет метрик технического долга

CodeScoring TQI отслеживает несколько метрик технического долга. Основные из них – цикломатическая сложность и встречаемость дубликатов.

Расчет цикломатической сложности

Цикломатическая сложность – это показатель, который отражает количество независимых путей в коде. Чем выше это значение, тем сложнее поддерживать и тестировать код.

Расчет ведется по формуле:

M = E - N + 2P

Где:
- M – цикломатическая сложность; - E – количество рёбер (переходов между операторами); - N – количество узлов (операторов, условий); - P – количество компонент связности (обычно 1).

Пример:

def is_even(x):
    print("Even" if x % 2 == 0 else "Odd")

Цикломатическая сложность:
- 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 (сложный код, возможны проблемы с тестированием и поддержкой).

Расчет процента внутрипроектных дубликатов

Этот показатель отражает, какая часть кода проекта является дублируемой. Он рассчитывается по следующей формуле:

Процент дубликатов = (количество дублируемых строк кода / общее количество строк кода) * 100%

Чем выше этот процент, тем больше кода можно оптимизировать с помощью рефакторинга.

Расчет встречаемости дубликатов

Этот показатель оценивает масштаб распространения дублированного кода по проекту.

Категории:

  • Низкий уровень – если дублируемых строк меньше 50;
  • Средний уровень – если дублируемых строк от 50 до 300;
  • Высокий уровень – если дублируемых строк больше 300.