Main Content

圈复杂度度量

度量 ID

度量 IDmathworks.metrics.CyclomaticComplexity

描述

度量类型:架构

模型顾问检查 IDmathworks.metricchecks.CyclomaticComplexity

使用此度量可计算模型的圈复杂度。圈复杂度是模型结构复杂度的度量。由于此分析未考虑的代码特征(例如合并逻辑和错误检查),因此生成代码的复杂度度量可能与模型的复杂度度量不同。为计算对象(例如模块、图或状态)的圈复杂度,Simulink® Check™ 使用以下公式:

c=1N(on1)

N 是对象表示的决策点数,on 是第 n 个决策点的结果数。该计算将向量化运算或 Multiport switch 模块视为单个决策点。该工具将模型、原子子系统和 Stateflow® 图的复杂度数加 1。

结果会提供以下各项的局部和聚合圈复杂度:

  • 模型

  • 子系统

  • MATLAB® 函数

局部复杂度是对象在其层次结构级别上的圈复杂度。聚合圈复杂度是对象及其后代的圈复杂度

此度量适用于 Simulink Check。要收集此度量的数据,请将 getMetrics 与度量标识符 mathworks.metrics.CyclomaticComplexity 结合使用。

slmetric.metric.AggregationMode 属性设置为 Sum

计算详细信息

度量会:

  • 无法对库模型运行。

  • 分析封装子系统中的内容。

  • 不分析非活动变体。

  • 如果指定,则分析库链接模块或引用模型的内容。

  • 不在加速模式下分析引用模型。

收集

要使用模型顾问收集此度量的数据,请在按任务 > 模型度量 > 复杂度度量中运行圈复杂度度量检查。模型顾问检查会显示根模型以及系统中 Simulink 和 Stateflow 对象的局部圈复杂度。该检查不分析引用模型,也不返回聚合结果。

结果

对于此度量,slmetric.metric.Result 的实例提供以下结果:

  • Value:局部圈复杂度。

  • AggregatedValue:聚合圈复杂度。

  • Measures:不适用。

有关复杂度的详细信息,请参阅:

另请参阅

相关主题