主要内容

圈复杂度度量

度量 ID

度量 IDmathworks.metrics.CyclomaticComplexity

描述

注意

此度量将在以后的版本中删除。请改用模型维护仪表板中的设计圈复杂度度量:

有关详细信息,请参阅Migrating from Metrics Dashboard to Model Maintainability Dashboard

度量类型:架构

模型顾问检查 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:不适用。

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

另请参阅

主题