코드 메트릭 - 유지 관리 인덱스 범위 및 의미
질문: 유지 관리 인덱스가 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 = 녹색