圈复杂度度量
度量 ID
度量 ID:mathworks.metrics.CyclomaticComplexity
描述
度量类型:架构
模型顾问检查 ID:mathworks.metricchecks.CyclomaticComplexity
使用此度量可计算模型的圈复杂度。圈复杂度是模型结构复杂度的度量。由于此分析未考虑的代码特征(例如合并逻辑和错误检查),因此生成代码的复杂度度量可能与模型的复杂度度量不同。为计算对象(例如模块、图或状态)的圈复杂度,Simulink® Check™ 使用以下公式:
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
:不适用。
有关复杂度的详细信息,请参阅:
Cyclomatic Complexity for Stateflow Charts (Simulink Coverage)
Specify Coverage Options (Simulink Coverage)