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


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

Вопрос. Индекс удобства обслуживания был сброшен, чтобы лежать в диапазоне от 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 Зеленый Хорошая поддерживаемость кода