翻译自:

http://blogs.msdn.com/fxcop/archive/2007/11/20/maintainability-index-range-and-meaning.aspx

 

可维护性指数最开始的计算方法是这样的(来源于卡耐基梅隆大学 的研究成果,但是考虑到计算不包含注释,所以修改了霍尔斯特德量 的计算方法):

可维护性指数= 171 - 5.2 * ln(霍尔斯特德量 ) - 0.23 * (圈复杂度) - 16.2 * ln(代码行数)

这样算出来的数值可能是171到负无穷大。当可维护性指数趋向于0时,代码已经难以维护,所以0和负无穷大之间没有太多区别。

为了让这个度量指标看起来更清晰,我们取所有的负数为0,指数范围为0到100,将计算公式改造为:

可维护性指数= MAX(0,(171 - 5.2 * ln(霍尔斯特德量 ) - 0.23 * (圈复杂度) - 16.2 * ln(代码行数))*100 / 171)

在调整公式的基础上,考虑划分不同的阈值:

  • 0-9 = Red
  • 10-19 = Yellow
  • 20-100 = Green