Поделиться через


Метрики кода — диапазон индексов удобства поддержки и их значения

Вопрос. Индекс удобства поддержки был сброшен и теперь находится в диапазоне от 0 до 100. Как и почему это было сделано?

Первоначально метрика вычислялась следующим образом: Maintainability Index = 171 - 5.2 * ln(Halstead Volume) - 0.23 * (Cyclomatic Complexity) - 16.2 * ln(Lines of Code)

Использование этой формулы означало, что показатель варьируется от 171 до неограниченного отрицательного числа. Так как код стремился к 0, было явно трудно поддерживать код, и разница между кодом в 0 и некоторыми отрицательными значениями не была полезна. В результате уменьшения полезности отрицательных чисел и желания внедрения максимально ясной метрики мы решили рассматривать все значения в 0 и меньше как индексы со значением 0, а диапазон от 171 и менее преобразовали таким образом, чтобы он стал диапазоном от 0 до 100. По этой причине теперь используется следующая формула:

Maintainability Index = MAX(0,(171 - 5.2 * ln(Halstead Volume) - 0.23 * (Cyclomatic Complexity) - 16.2 * ln(Lines of Code))*100 / 171)

Кроме того, мы решили использовать консервативный подход для пороговых значений. Цель была в том, что если индекс становился красным, то мы бы с высокой степенью уверенности могли бы сказать, что в коде есть проблема. Это дало нам следующие пороговые значения.

Для использования пороговых значений мы решили разбить диапазон 0–100 на 80–20, чтобы обеспечить низкий уровень шума, и помечать только код, который был подозрительным. Мы используем следующие пороговые значения:

  • 0–9 = красный
  • 10–19 = желтый
  • 20–100 = зеленый