• infusion度量金字塔数据解释


    inFusion能够探测超过20中代码味道和代码缺陷,包括重复代码,破坏封装的类(如数据类或者万能类),高耦合的方法和类,以及一些设计不合理的类继承结构。当我们使用inFusion工具分析代码时,在分析界面左上侧出现一个代码数据度量窗口,下面将对度量金字段数据作详细的解释,从而对代码从整体上有一个宏观的认识,同时也能够预测代码中可能出现的问题,诸如类功能是否单一,成员方法复杂度是否过高,继承深度是否合理等等。

    度量金字数据具体示例如下:

    inFusion1

    鉴于上述图片中数据模糊,手工将上图黑色框中数据列出如下:

                                                    NDD  0.61

                                                    HIT   1.58

                                             20.0 NOP   30

                                     8.81   NOC         600

                             9.22   NOM                 5287   NOM  1.56

                    0.14    LOC                          48791 8298  CALL  0.37

                   CYCLO                                 7007   3076           FOUT

    顶部

    NDD,HIT分别指类的平均继承宽度和平均继承深度

    平均继承宽度:类继承树上,子类占所有类的比例,合理范围0.2~0.6

    平均继承深度:类继承树上,继承的层次,多棵继承树取平均值,合理范围0.1~0.3

    左侧                                         右侧

    CYCLO    圈复杂度                               FOUT   方法扇出次数

    LOC        代码行数                               CALL    方法调用(扇入)次数

    NOM       方法数量                               NOM     方法数量

    NOC        类数量

    NOP        package数量,C/C++中指目录数量

    左边斜坡上

    平均每个包中类个数                   600/30 = 20.0

    平均每个类中方法个数                5287/600 = 8.81

    平均每个方法的代码行数              48791/5287 = 9.22

    平均圈复杂度(CYCLO/LOC)      7007/48791 = 0.14

    右边斜坡上

    平均每个方法call的次数               8298/5287 = 1.56

    扇出扇入比                               3076/8298 = 0.37

    扇入扇出

    软件设计中,扇入和扇出的概念是指应用程序模块之间的层次调用情况。

    按照结构化设计方法,一个应用程序是由多个功能相对独立的模块所组成。

    扇入:是指直接调用该模块的上级模块的个数。扇入大表示模块的复用程度高。

    扇出:是指该模块直接调用的下级模块的个数。扇出大表示模块的复杂度高,需要控制和协调过多的下级模块;但扇出过小(例如总是1)也不好。扇出过大一般是因为缺乏中间层次,应该适当增加中间层次的模块。扇出太小时可以把下级模块进一步分解成若干个子功能模块,或者合并到它的上级模块中去。

    设计良好的软件结构,通常顶层扇出比较大,中间扇出小,底层模块则有大扇入

    参考资料

    六种可定量分析的代码味道

    inFusion官网

     

  • 相关阅读:
    RTX Server license update
    Dell Raid[转载]
    Dell2950 server OS Installation
    Paragon Partition Manager 9.0 Professional管理磁盘分区
    Upgrade Backup Exec License
    C# 3.0将偷懒进行到底
    hibernate学习笔记
    开发c#插件
    Socket简单通讯
    .NET牛人应该知道些什么(转)?
  • 原文地址:https://www.cnblogs.com/zhouLee/p/4736865.html
Copyright © 2020-2023  润新知