主要内容

本页采用了机器翻译。点击此处可查看英文原文。

Stateflow 设计圈复杂度

自 R2022b 起

度量 ID

slcomp.SFCyclomaticComplexity

描述

设计圈复杂度是指通过一个设计可能存在的执行路径的数量。一般来说,设计中的路径越多,设计就越复杂。当设计的圈复杂度较低时,设计通常更容易阅读、维护和测试。设计圈复杂度计算为决策路径数加一。该度量加 1 是为了考虑默认路径所代表的执行路径。设计圈复杂度包含了默认路径,因为该度量识别了执行路径中的每个可能结果,包括默认结果。

使用 Stateflow® 设计圈复杂度度量来确定设计中 Stateflow 组件的设计圈复杂度。

支持的工件

您可以针对Units组件收集此度量。要控制仪表板将哪些对象分类为单元或组件,请参阅将模型按层级结构分类为组件或单元

计算详细信息

度量:

  • 计算通过单元或组件的基于 Stateflow 的执行路径的总数。执行路径总数计算为 Stateflow 个决策数、Stateflow 决策计数 个决策数加上 1(默认路径)。默认路径每个单元或组件只计算一次。

    要查看与不同 Stateflow 组件相关的 Stateflow 决策的数量,请参阅 Stateflow 组件的决策计数

  • 支持 MATLAB® 动作语言和 C 动作语言。

收集

要收集此度量的数据,请将 getMetrics 与度量标识符 slcomp.SFCyclomaticComplexity 结合使用。

metric_engine = metric.Engine;
execute(metric_engine,"slcomp.SFCyclomaticComplexity");
results = getMetrics(metric_engine,"slcomp.SFCyclomaticComplexity")

结果

对于此度量,metric.Result 的实例返回 Value 作为单元或组件的 Stateflow 设计圈复杂度。

示例

假设您有一个单元,其中只包含来自 Stateflow 库的 Truth Table 模块。默认情况下,Truth Table 模块包含一个条件表,其中包含两行条件和三列决策,以及一个动作表,其中包含两个操作。

要查看与不同 Stateflow 组件相关的 Stateflow 决策的数量,请参阅 Stateflow 组件的决策计数

对于 Truth Table 模块,图形决策的数量计算为条件(行)的数量乘以条件表中的决策(列)的数量。在这个示例中,图形决策的数量等于 2 乘以 3。

对于 Truth Table 模块,代码决策的数量计算为动作表中的决策数量。在这个示例中,动作表的代码中没有做出任何决定。

Stateflow 设计的圈复杂度等于图形 Stateflow 决策的数量加上 Stateflow 组件中的代码决策的数量,再加上 1(对于默认路径)。在这种情况下,Stateflow 设计的圈复杂度计算为 6 + 0 + 1,等于 7。

另请参阅

对象

函数

主题