写在前面
??由于OO课程博客作业的需要分析代码的复杂度并绘制UML图,但是课件上推荐的分析工具(http://metrics.sourceforge.net )经过自己几个小时的折腾还是没有安装成功,于是我最终决定转移阵地,也就是使用IDEA的相关插件。
IDEA安装
??这个就不再多说了,具体方法自行百度,但是要注意,下面提到的插件需要IDEA Ultimate版本,社区版不支持自动绘制UML图。
插件1:UML Support
??UML Support是IDEA Ultimate版本中自带的插件,Community版本不支持。我目前使用的IDEA 2018.1中已经默认开启,可以通过File->Settings->Plugins在其中的搜索框中搜索这个插件。可以右键项目中的包在右键菜单中选择Diagrams->Show Diagrams,就可以得到插件自动绘制的UML图,但是此时的UML还很简陋,可以通过上面的几个按钮来选择每个类显示的内容,以及各个类之间的关系以及展示时的层次结构,具体的使用方法还是大家自行探索吧。
插件2:MetricsReloaded
??MetricsReloaded是用来分析代码复杂度的插件。由于国内众所周知的原因以及最近校园网抽筋,无法直接从IDEA的File->Settings->Plugins中自动下载安装,需要从官网上下载到本地后手动安装(https://plugins.jetbrains.com/plugin/93-metricsreloaded )如果仍然无法访问,请自备梯子或者使用手机开热点下载。
??下载到本地后在File->Settings->Plugins中页面下部找到Install plugin from disk然后找到下载的压缩包选中安装即可。重启IDEA后就能够使用了。
??安装成功后,可以在Help->Find Action(或直接使用快捷键Ctrl+Shift+A)在搜索框中输入Calculate Metrics,根据自己的需要选择分析范围,并在Metrics profile一栏选择Complexity metrics后点击OK即可。
??在分析结果中可以看到ev, iv, v这几栏,分别代指基本复杂度(Essential Complexity (ev(G))、模块设计复杂度(Module Design Complexity (iv(G)))、Cyclomatic Complexity (v(G))圈复杂度。
??ev(G)基本复杂度是用来衡量程序非结构化程度的,非结构成分降低了程序的质量,增加了代码的维护难度,使程序难于理解。因此,基本复杂度高意味着非结构化程度高,难以模块化和维护。实际上,消除了一个错误有时会引起其他的错误。
??Iv(G)模块设计复杂度是用来衡量模块判定结构,即模块和其他模块的调用关系。软件模块设计复杂度高意味模块耦合度高,这将导致模块难于隔离、维护和复用。模块设计复杂度是从模块流程图中移去那些不包含调用子模块的判定和循环结构后得出的圈复杂度,因此模块设计复杂度不能大于圈复杂度,通常是远小于圈复杂度。
??v(G)是用来衡量一个模块判定结构的复杂程度,数量上表现为独立路径的条数,即合理的预防错误所需测试的最少路径条数,圈复杂度大说明程序代码可能质量低且难于测试和维护,经验表明,程序的可能错误和高的圈复杂度有着很大关系。
总结
??以上就是本次OO博客作业需要用到的IDEA插件。使用合适的工具可以成倍的提升工作效率,在此强烈推荐IDEA以及JetBrains全家桶,其高度集成的特点以及强大的功能可以为我们节省不少的时间。这也是我第一次写博客,也算是写OO第一次博客作业前的练手,如有不足,请多包涵。
原文地址:https://www.cnblogs.com/panxuchen/p/8689287.html