Jean's Blog

一个专注软件测试开发技术的个人博客

0%

MetricsReload插件下载与使用

image-20230130144314301

圈复杂度

圈复杂度(Cyclomatic Complexity)是衡量计算机程序复杂程度的一种措施。它根据程序从开始到结束的线性独立路径的数量计算得来的。

圈复杂度越高,代码就越难,越复杂,就越难以维护,优化

一个方法里,从方法开始,一直走读代码,遇到判定的关键字,或者其他同类的词,复杂度就+1,例如:if、while、repeat、for、and、or……

例如:

1
2
if(obj == null) -- 复杂度为1
if(obj == null || obj1 == null) -- 复杂度为2

IDEA安装插件

image-20230130150108135

IDEA中使用

鼠标右键 —> Analyze —> Calculate Metrics

image-20230130150313418

可以在包、类进行鼠标右键选择,指定分析的文件
image-20230130150546773

分析结果如下

image-20230130150705292

从结果看到,有方法、类、包、模块和项目这几个纬度进行分析

ev(G) 基本复杂度是用来衡量程序非结构化程度的,非结构成分降低了程序的质量,增加了代码的维护难度,使程序难于理解。因此,基本复杂度高意味着非结构化程度高,难以模块化和维护。实际上,消除了一个错误有时会引起其他的错误。

iv(G) 模块设计复杂度是用来衡量模块判定结构,即模块和其他模块的调用关系。软件模块设计复杂度高意味模块耦合度高,这将导致模块难于隔离、维护和复用。模块设计复杂度是从模块流程图中移去那些不包含调用子模块的判定和循环结构后得出的圈复杂度,因此模块设计复杂度不能大于圈复杂度,通常是远小于圈复杂度。

v(G) 是用来衡量一个模块判定结构的复杂程度,数量上表现为独立路径的条数,即合理的预防错误所需测试的最少路径条数,圈复杂度大说明程序代码可能质量低且难于测试和维护,经验表明,程序的可能错误和高的圈复杂度有着很大关系。