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

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

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.

Расчет темпа изменений

Темп изменений показывает объем изменения кода относительно общего объема строк кода. Высокий темп изменения кода может указывать на нестабильность и/или частые изменения требований.

Значение темпа изменений нормировано и измеряется в %. Расчет выполняется за период. Минимальный период - неделя.

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

R = 100 * L / T

Где:

  • R – темп изменений;
  • L – количество внесенных (добавленных, удаленных, модифицированных) строк кода, за расчетный период;
  • T – общее количество строк кода в репозитории проекта на начало расчетного периода.