zoukankan      html  css  js  c++  java
  • Java代码度量分析工具:Designite简介

    前言

    在Java面向对象课程的学习过程中,我们需要使用度量工具来分析自己程序的代码结构。此类的度量工具有许多,或以插件形式存在于各个IDE中,或以.jar包的形式供用户使用。在这里,笔者向大家简单的介绍一款免费的代码度量分析工具:Designite,对官网上的部分内容进行汉化搬运,并对一些度量条目做出解释。

    一、Designite的下载与运行

    Designite是一款程序设计的质量评估工具。这款工具可以用于分析C#和Java的代码,并且识别其中存在的质量问题。Designite会检测程序的架构(architecture),设计(design)和代码异味(code smell)并且给出详细的度量分析(metrics analysis)。

    Designite官网:http://www.designite-tools.com/

    Designite for Java:http://www.designite-tools.com/DesigniteJava/

    进入官网,下载会得到一个jar包,默认名为DesigniteJava.jar。将其放在方便使用的位置,打开命令行窗口,输入以下代码即可运行:

    java -jar DesigniteJava.jar -i <源文件路径> -o <分析数据输出路径>
    

    输出之后,会得到以下五个文件。

    designCodeSmells和implementationCodeSmells中存储着在设计和执行阶段检测到的代码异味(code smell)。这标志着你的程序中存在一些设计上的不规范,如过多幻数(Magic Number),模块之间的循环依赖(Cyclic Dependent)等。

    methodMetrics和typeMetrics中存储着类和方法的一些度量指标(metrics),这些度量指标有助于我们分析程序的整体结构,并且找出问题所在。

    二、度量指标介绍

    以下内容翻译自官网,简单加上了一些个人理解。

    • **LOC **(Lines Of Code – at method and class granularity)

      代码行数,可以看到你的方法和类写了多少行。

    • CC (Cyclomatic Complexity – Method)

      圈复杂度,用于衡量一个模块判定结构的复杂程度,圈复杂度越大说明程序代码质量低,且难以测试和维护。

    • PC (Parameter Count – Method)

      方法中传入的参数个数。

    • NOF (Number of Fields – Class)

      类的字段个数。

    • NOPF (Number of Public Fields – Class)

      类的公共(public)型字段个数。

    • **NOM **(Number of Methods – Class)

      类的方法个数。

    • NOPM (Number of Public Methods – Class)

      类的(public)型方法个数。

    • WMC (Weighted Methods per Class – Class)

      类的加权方法个数。具体加权算法怎么算,笔者不太清楚。

    • **NC **(Number of Children – Class)

      类的子类个数。

    • **DIT **(Depth of Inheritance Tree – Class)

      类所在的继承树深度。

    • **LCOM **(Lack of Cohesion in Methods – Class)

      方法的内聚缺乏度。值越大,说明类内聚合度越小。

    • FANIN (Fan-in – Class)

      类的扇入。扇入表示调用该模块的上级模块的个数,扇入越大,表示该模块的复用性好。

    • **FANOUT **(Fan-out – Class)

      类的扇出。扇出表示该模块直接调用的下级模块的个数,扇出过大表明模块复杂度高,但扇出过小也不好。

      设计要求一般是高内聚低耦合,即LCOM值要小,FANIN值要大,FANOUT值要合理。

  • 相关阅读:
    宝宝咳嗽
    如何查看 oracle 官方文档
    00 序 建立环境
    09 变量重游
    【TYVJ】1359
    【COGS】147. [USACO Jan08] 架设电话线(二分+spfa)
    【wikioi】1904 最小路径覆盖问题(最大流+坑人的题+最小路径覆盖)
    【wikioi】1034 家园(最大流+特殊的技巧)
    【BZOJ】1040: [ZJOI2008]骑士(环套树dp)
    【POJ】2234 Matches Game(博弈论)
  • 原文地址:https://www.cnblogs.com/sharinka0715/p/10588616.html
Copyright © 2011-2022 走看看