• Understand简明参考


          Understand全称为Scientific Toolworks Understand,,是一款源代码阅读分析软件,使用它可以大大提高代码阅读效率。此软件亦有架构分析,代码评审与度量,生成软件质量统计与报表等功能。

          官方网站:https://www.scitools.com/features/metrics.php

          一.安装

          傻瓜式安装,安装过程中使用算号器生成可用序列号填入其中即可。

          二.功能概述

          (一).代码度量,统计各个方面的指标以确定代码健壮性与重用性,测重代码健康。

          (二).代码分析,使用代码规范检查代码,测重代码风格与规范。

          (三).代码编辑,包括编辑器,代码大纲,代码属性,代码比较,代码搜索

          (四).依赖关系,分析代码各模块之间的依赖关系

          (五).支持多种语方,如C,C++,C#,JAVA等

          (六).报表输出

          (七).统计报告

          更详细的说明可参看:

          代码阅读分析工具Understand 2.0试用

          三.Understand代码度量与Visual Studio代码度量

          代码度量是一组软件度量值,使开发人员可以更好地了解他们正在开发的代码。利用代码度量,开发人员可以了解哪些类型和/或方法应该返工或进行更彻底的测试。开发团队可以识别潜在的风险、了解项目的当前状态,并跟踪软件开发的进度。

          Visual Studio 2008及其以后的Perfessional及其以上的版本提供了代码度量功能。

          VS提供了代码度量最核心的四个指标:Cyclomatic Complexity(圈复杂度),Depth of Inheritance(继承深度),Class Coupling(类耦合度),Lines of Code(代码行数);另外还有一个综合这四个指标得出的一个评估值:Maintainability Index(可维护性指数)。

          Understand代码度量则提供了更加详细的分析指标与报告。

          如无特殊需求,Visual Studio自带的代码度量即可满足日常使用。

          四.重要的度量参数简介

          可维护性指数:计算一个介于 0 和 100 之间的指数值,表示维护代码的相对容易度。值越大表示可维护性越好。该计算基于 Halstead Volume、圈复杂度和代码的行数。按颜色标记的等级可用于迅速发现代码中的故障点。绿色等级介于 20 和 100 之间,表示代码的可维护性良好。黄色等级介于 10 和 19 之间,表示代码的可维护性中等。红色等级是介于 0 和 9 之间的等级,表示可维护性低。

          圈复杂度:衡量代码在结构上的复杂程度。它通过计算程序流中的不同代码路径的数目(例如 if 块、switch case 以及 do、while、foreach 和 for 循环),然后在总数中加 1 来创建。具有复杂控制流的程序需要更多单元测试才能实现良好的代码覆盖率,并且不容易维护。如果数值在1到4之间,说明代码简明,风险低;如果在5到10,说明代码稳定,结构化良好,风险低;11到20,说明代码有点复杂,风险中等;21到50,说明代码非常复杂,风险高;大于50,说明代码已失控,风险极高。一个正面典型的程序模块的圈复杂度为10,20以内的圈复杂度都是可以接受的。

          可以参考以下两篇文章

          浅谈软件度量

          Project Metrics in Project Analyzer的Complexity metrics章节

          继承深度:指明扩展到类层次结构根的类定义的数目。层次结构越深,则越难了解特定方法和字段是在何处定义或/和重新定义的。在类级别,该数目是通过计算继承树中从 0 开始的类型之上的类型数目(不包括接口)来创建的。在命名空间和项目级别,该计算包括命名空间或项目内所有类型的最高继承深度计算。好的继承层次应在3以内,最好不要超过5层。

          类耦合:通过参数、局部变量、返回类型、方法调用、泛型或模板实例化、基类、接口实现、在外部类型上定义的字段以及属性修饰来衡量与唯一类的耦合程度。该计算不包 括基元类型和内置类型,例如 int32、字符串和对象。良好的软件设计要求类型和方法应具有较高的内聚力和较低的耦合。耦合较高表示设计难以重用和维护,这是因为它与其他类型之间存 在许多依存关系。目前还未查到权威文档对此值取值范围的说明,现行目标是尽可能的少。跟据经验,推荐为20以内。

          代码的行数:指明代码中的大概行数。该计数基于 IL 代码,因此并不是源代码文件中的确切行数。该计算不包括空白、注释、括号以及成员、类型和命名空间的声明。计数过高可能表示某个类型或方法正在尝试执行过多的工作,应予以拆分。还可能表示该类型或方法难以维护。目前无推荐值。

          五.Understand代码度量参数

          官方文档

    Type

    Name

    Description

    中文说明

    Count

    AltAvgLineBlank

    Average number of blank lines for all nested functions or methods, including inactive regions.

    Count

    AltAvgLineCode

    Average number of lines containing source code for all nested functions or methods, including inactive regions.

    Count

    AltAvgLineComment

    Average number of lines containing comment for all nested functions or methods, including inactive regions.

    Count

    AltCountLineBlank

    Number of blank lines, including inactive regions.

    Count

    AltCountLineCode

    Number of lines containing source code, including inactive regions.

    Count

    AltCountLineComment

    Number of lines containing comment, including inactive regions.

    Complex

    AvgCyclomatic

    Average cyclomatic complexity for all nested functions or methods.

    平均圈复杂度(标准计算方式)

    Complex

    AvgCyclomaticModified

    Average modified cyclomatic complexity for all nested functions or methods.

    平均圈复杂度(第二种计算方式)

    Complex

    AvgCyclomaticStrict

    Average strict cyclomatic complexity for all nested functions or methods.

    平均圈复杂度(第三种计算方式)

    Complex

    AvgEssential

    Average Essential complexity for all nested functions or methods.

    平均基本复杂度(标准计算方式)

    Complex

    AvgEssentialStrictModified

    Average strict modified essential complexity for all nested functions or methods.

    Count

    AvgLine

    Average number of lines for all nested functions or methods.

    平均行数

    Count

    AvgLineBlank

    Average number of blank for all nested functions or methods.

    平均空白行数

    Count

    AvgLineCode

    Average number of lines containing source code for all nested functions or methods.

    平均包含代码的行数

    Count

    AvgLineComment

    Average number of lines containing comment for all nested functions or methods.

    平均包含注释的行数

    Object Oriented

    CountClassBase

    Number of immediate base classes.

    直接基类数,可能的话包括Object类

    Object Oriented

    CountClassCoupled

    Number of other classes coupled to.

    对像耦合度,包括.net框架对象

    Object Oriented

    CountClassDerived

    Number of immediate subclasses.

    直接子类数

    Object Oriented

    CountDeclClass

    Number of classes.

    类的个数

    Object Oriented

    CountDeclClassMethod

    Number of class methods.

    静态方法个数,包括静态构造方法

    Object Oriented

    CountDeclClassVariable

    Number of class variables.

    静态字段个数

    Count

    CountDeclFile

    Number of files.

    文件的个数

    Count/ Object Oriented

    CountDeclFunction

    Number of functions.

    函数的个数,不包括接口方法,包括属性方法,构造函数和一般方法

    Object Oriented

    CountDeclInstanceMethod

    Number of instance methods.

    实例方法个数

    Object Oriented

    CountDeclInstanceVariable

    Number of instance variables.

    实例字段个数

    Object Oriented

    CountDeclInstanceVariablePrivate

    Number of private instance variables.

    Object Oriented

    CountDeclInstanceVariableProtected

    Number of protected instance variables.

    Object Oriented

    CountDeclInstanceVariablePublic

    Number of public instance variables.

    Object Oriented

    CountDeclMethod

    Number of local methods.

    本类方法个数

    Object Oriented

    CountDeclMethodAll

    Number of methods, including inherited ones.

    本类与继承的方法个数

    Object Oriented

    CountDeclMethodConst

    Number of local const methods.

    Object Oriented

    CountDeclMethodDefault

    Number of local default methods.

    Count/ Object Oriented

    CountDeclMethodFriend

    Number of local friend methods.

    Object Oriented

    CountDeclMethodPrivate

    Number of local private methods.

    本类私有方法个数

    Object Oriented

    CountDeclMethodProtected

    Number of local protected methods.

    本类保护方法个数

    Object Oriented

    CountDeclMethodPublic

    Number of local public methods.

    本类公共方法个数

    Object Oriented

    CountDeclMethodStrictPrivate

    Number of local strict private methods.

    Object Oriented

    CountDeclMethodStrictPublished

    Number of local strict published methods.

    Object Oriented

    CountDeclModule

    Number of modules.

    Object Oriented

    CountDeclProgUnit

    Number of non-nested modules, block data units, and subprograms.

    Object Oriented

    CountDeclSubprogram

    Number of subprograms.

    Count

    CountInput

    Number of calling subprograms plus global variables read.

    被调用的次数。被同一方法多次调用只算一次,被字段调用则不计入此数。

    Count

    CountLine

    Number of all lines.

    代码行数

    Count

    CountLineBlank

    Number of blank lines.

    代码空白行数

    Count

    CountLineBlank_Html

    Number of blank html lines.

    Count

    CountLineBlank_Javascript

    Number of blank javascript lines.

    Count

    CountLineBlank_Php

    Number of blank php lines.

    Count

    CountLineCode

    Number of lines containing source code.

    包含代码的行数

    Count

    CountLineCodeDecl

    Number of lines containing declarative source code.

    声名类代码行数,方法声名行也记入此数

    Count

    CountLineCodeExe

    Number of lines containing executable source code.

    纯执行类代码行数

    Count

    CountLineCode_Javascript

    Number of javascript lines containing source code.

    Count

    CountLineCode_Php

    Number of php lines containing source code.

    Count

    CountLineComment

    Number of lines containing comment.

    注释类代码行数

    Count

    CountLineComment_Html

    Number of html lines containing comment.

    Count

    CountLineComment_Javascript

    Number of javascript lines containing comment.

    Count

    CountLineComment_Php

    Number of php lines containing comment.

    Count

    CountLineInactive

    Number of inactive lines.

    Count

    CountLinePreprocessor

    Number of preprocessor lines.

    Count

    CountLine_Html

    Number of all html lines.

    Count

    CountLine_Javascript

    Number of all javascript lines.

    Count

    CountLine_Php

    Number of all php lines.

    Object Oriented

    CountOutput

    Number of called subprograms plus global variables set.

    调用其它方法的次数,多次调用同一方法只算一次调用。Return语句算一次调用。

    Object Oriented

    CountPackageCoupled

    Number of other packages coupled to.

    Complex

    CountPath

    Number of possible paths, not counting abnormal exits or gotos.

    可以执行的代码路径,与圈复杂度相关

    Count

    CountSemicolon

    Number of semicolons.

    分号的数量

    Count

    CountStmt

    Number of statements.

    语句的数量,即使把多句话写在一行内,仍然算多次

    Count

    CountStmtDecl

    Number of declarative statements.

    定义类语句的数量,包话方法声名行

    Count

    CountStmtDecl_Javascript

    Number of javascript declarative statements.

    Count

    CountStmtDecl_Php

    Number of php declarative statements.

    Count

    CountStmtEmpty

    Number of empty statements.

    Count

    CountStmtExe

    Number of executable statements.

    执行类语句的数量

    Count

    CountStmtExe_Javascript

    Number of javascript executable statements.

    Count

    CountStmtExe_Php

    Number of php executable statements.

    Complex

    Cyclomatic

    Cyclomatic complexity.

    圈复杂度(标准计算方式)

    Complex

    CyclomaticModified

    Modified cyclomatic complexity.

    圈复杂度(第二种计算方式)

    Complex

    CyclomaticStrict

    Strict cyclomatic complexity.

    圈复杂度(第三种计算方式)

    Complex

    Essential

    Essential complexity.

    基本复杂度(标准计算方式)

    Complex

    EssentialStrictModified

    Strict Modified Essential complexity.

    Complex

    Knots

    Measure of overlapping jumps.

    Complex

    MaxCyclomatic

    Maximum cyclomatic complexity of all nested functions or methods.

    最大圈复杂度(标准计算方式)

    Complex

    MaxCyclomaticModified

    Maximum modified cyclomatic complexity of nested functions or methods.

    最大圈复杂度(第二种计算方式)

    Complex

    MaxCyclomaticStrict

    Maximum strict cyclomatic complexity of nested functions or methods.

    最大圈复杂度(第三种计算方式)

    Complex

    MaxEssential

    Maximum essential complexity of all nested functions or methods.

    Complex

    MaxEssentialKnots

    Maximum Knots after structured programming constructs have been removed.

    Complex

    MaxEssentialStrictModified

    Maximum strict modified essential complexity of all nested functions or methods.

    Complex/ Object Oriented

    MaxInheritanceTree

    Maximum depth of class in inheritance tree.

    本类继承层次

    Complex

    MaxNesting

    Maximum nesting level of control constructs.

    最大嵌套层次,与圈复杂度相关

    Complex

    MinEssentialKnots

    Minimum Knots after structured programming constructs have been removed.

    Object Oriented

    PercentLackOfCohesion

    100% minus the average cohesion for package entities.

    方法内聚缺乏度百分比。其要求类中每一个方法都要使用类中的全部字段。如果使用了3.5以上的自动属性,其自动生成的匿名字段将不会被任何一个方法使用,会导致此度量值不会为最优的结果:0

    Complex/ Count

    RatioCommentToCode

    Ratio of comment lines to code lines.

    代码注释率

    Complex

    SumCyclomatic

    Sum of cyclomatic complexity of all nested functions or methods.

    圈复杂度之和(标准计算方式)

    Complex

    SumCyclomaticModified

    Sum of modified cyclomatic complexity of all nested functions or methods.

    圈复杂度之和(第二种计算方式)

    Complex

    SumCyclomaticStrict

    Sum of strict cyclomatic complexity of all nested functions or methods.

    圈复杂度之和(第三种计算方式)

    Complex

    SumEssential

    Sum of essential complexity of all nested functions or methods.

    基本复杂度之和(标准计算方式)

    Complex

    SumEssentialStrictModified

    Sum of strict modified essential complexity of all nested functions or methods.

  • 相关阅读:
    Python-类和实例
    Python之操作文件和目录
    Python之split()函数
    Python之切片操作
    PyCharm导入selenium的webdirver模块出错
    Python编写“去除字符串中所有空格”
    Python编写“求一元二次方程的解”
    android开发学习 ------- 【转】Genymotion 小白安装
    android开发学习 ------- git
    android开发学习 ------- MongoDB数据库简单理解
  • 原文地址:https://www.cnblogs.com/ljzforever/p/3097392.html
Copyright © 2020-2023  润新知