主要内容

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

MATLAB 设计圈复杂度

自 R2022b 起

度量 ID

slcomp.MatlabCyclomaticComplexity

描述

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

使用此度量来确定设计中 MATLAB® 代码的设计圈复杂度。

MATLAB 设计圈复杂度是指单元或组件中 MATLAB 代码的执行路径总数。执行路径的数量计算为 MATLAB 个决策、MATLAB 决策计数 个决策,再加上 1 个默认路径。默认路径每个单元或组件只计算一次。

支持的工件

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

计算详细信息

该度量包括与逻辑运算相关的决策,这些决策可能会在代码执行期间被短路。

收集

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

结果

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

示例

假设您有一个单元,其中只包含一个代码如下的 MATLAB Function 代码模块:

function y = fcn(u)
    if u < 0
        % one decision
        y = -1*u;
    else
        % default path
        % zero decisions
        y = u;
    end
end

对于 if-else 语句,决策数为 1,因为 if 语句代表一个决策,而 else 语句代表默认行为。如果没有做出任何决定,则执行路径遵循默认路径。

  • 如果 MATLAB Function 模块的输入小于零,则 MATLAB Function 模块的输出为输入乘以 -1。

  • 否则,默认情况下,MATLAB Function 模块的输出等于 MATLAB Function 模块的输入。

在这个示例中,MATLAB 决策的数量为 1,因此该单元的 MATLAB 设计圈复杂度为 2。默认路径不包含在决策数中,因为没有做出任何决策来达到默认状态,但默认路径包含在设计圈复杂度中。

MATLAB 设计圈复杂度的值代表了单元中两种可能的执行路径,即:

  • u < 0MATLAB Function 模块的输出是输入乘以 -1。

  • u ≥ 0MATLAB Function 模块的输出等于 MATLAB Function 模块的输入。

另请参阅

对象

函数

主题