本主题说明如何使用 C++test 来计算指标。章节目录:

关于指标

C++test 的指标分析计算各种代码指标,例如代码复杂性、对象之间的耦合度以及内聚力缺乏,帮助您评估代码库并监控更改。具体而言,计算和跟踪指标有助于:

  • 更好地理解代码复杂性以及代码中的更改可能会影响哪些类。这有助于您就如何进行修改、重构和测试做出更明智的决策。
  • 识别代码中设计不良的迹象,了解代码中的潜在弱点。

分析时运行度量指标的内建测试配置,以执行指标分析规则。

查看指标结果

指标分析结果可在 DTP 服务器中获得;有关如何连接 DTP 的信息,请参阅连接 DTP。指标结果不包含在 C++test 生成的本地 HTML 或 XML 报告中。

自定义指标设置

您可以使用 DTP 测试配置界面中的度量指标选项卡配置指标。 

  1. 在 DTP 中,从齿轮图标菜单选择测试配置
  2. 点击测试配置并点击度量指标选项卡,自定义指标和查看指标文档。 

请参阅 DTP 手册了解详细信息。 

设置指标阈值

您可以进行上限和下限设置,以便在计算出的指标超出指定值范围时报告静态分析违规。例如,如果要限制项目中的逻辑行数,可以配置度量指标测试配置,这样,在逻辑行数指标超过限制时将报告违规。 

C++test·中的度量指标测试配置包含默认阈值。有一些规则,如文件数量(METRIC.NOF),无法为其设置阈值。
可以使用以下方法设置指标阈值: 

  • 使用 DTP 中的测试配置界面。
  • 手动编辑测试配置文件:
    1.前往 Parasoft> 测试配置> 内建,右键点击选定的测试配置并选择导出...,将配置另存为 .properties 文件。
    2.在编辑器中打开导出的 .properties 文件,并将 [METRIC.ID].ThresholdEnabled 属性设置为 true。
    3.在 [METRIC.ID].Threshold 属性中按照以下格式配置下限和上限: 

    [METRIC.ID].Threshold=l [下限值] g [上限值]

    4. 保存文件,前往 Parasoft> 测试配置。

    5.右键点击用户自定义文件夹,选择导入...选项,找到修改的测试配置文件并点击打开

内建指标

可使用以下指标:

  • 对象之间的耦合度 [METRIC.CBO]
  • McCabe 圈复杂度 [METRIC.CC]
  • 文件中注释和逻辑行数量的比率 [METRIC.CLLOCRIF]
  • 方法中注释和逻辑行数量的比率 [METRIC.CLLOCRIM]
  • 类型中注释和逻辑行数量的比率 [METRIC.CLLOCRIT]
  • 'if' 语句的嵌套深度 [METRIC.DIF]
  • 基本圈复杂度 [METRIC.ECC]
  • 扇出 [METRIC.FO]
  • Halstead 难度 [METRIC.HDIFM]
  • Halstead 工作量 [METRIC.HEFM]
  • Halstead 智力内容 [METRIC.HICM]
  • Halstead 程序长度 [METRIC.HLENM]
  • Halstead 程序级别 [METRIC.HLEVM]
  • Halstead 缺陷的数量 [METRIC.HNOBM]
  • Halstead 编程时间 [METRIC.HTTPM]
  • Halstead 程序词汇 [METRIC.HVOCM]
  • Halstead 程序体积 [METRIC.HVOLM]
  • 类的继承深度 [METRIC.IDOC]
  • 内聚缺乏度 [METRIC.LCOM]
  • 修改的圈复杂度 [METRIC.MCC]
  • 可维护性指数 [METRIC.MI]
  • 嵌套块深度 [METRIC.NBD]
  • 文件中空白行的数量 [METRIC.NOBLIF]
  • 方法中空白行的数量 [METRIC.NOBLIM]
  • 类型中空白行的数量 [METRIC.NOBLIT]
  • 类的数量 [METRIC.NOC]
  • 文件中注释行的数量 [METRIC.NOCLIF]
  • 方法中注释行的数量 [METRIC.NOCLIM]
  • 类型中注释行的数量 [METRIC.NOCLIT]
  • 文件数量 [METRIC.NOF]
  • 文件中逻辑行的数量 [METRIC.NOLLOCIF]
  • 方法中逻辑行的数量 [METRIC.NOLLOCIM]
  • 类型中逻辑行的数量 [METRIC.NOLLOCIT]
  • 类型中方法的数量 [METRIC.NOMIT]
  • 方法的参数数量 [METRIC.NOPAR]
  • 文件中物理行的数量 [METRIC.NOPLIF]
  • 方法中物理行的数量 [METRIC.NOPLIM]
  • 类型中物理行的数量 [METRIC.NOPLIT]
  • Private 类型成员的数量 [METRIC.NOPRIVMIT]
  • Protected 类型成员的数量 [METRIC.NOPROTMIT]
  • Public 类型成员的数量 [METRIC.NOPUBMIT]
  • 方法中 return 语句的数量 [METRIC.NORET]
  • 文件中源代码行的数量 [METRIC.NOSLIF]
  • 方法中源代码行的数量 [METRIC.NOSLIM]
  • 类型中源代码行的数量 [METRIC.NOSLIT]
  • 类型的数量 [METRIC.NOT]
  • 类响应 [METRIC.RFC]
  • 严格的圈复杂度 [METRIC.SCC]
  • 类的加权方法 [METRIC.WMC]
  • No labels