Stateflow 设计圈复杂度
度量 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。