Main Content

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

complexityinfo

cvdata 对象中检索圈复杂度覆盖率信息

    说明

    complexity = complexityinfo(cvdo,modelObject)cvdata 对象 cvdo 返回模型组件 modelObject 的复杂度覆盖率结果。

    complexity = complexityinfo(cvdo,modelObject,simMode)cvdata 对象 cvdo 返回针对仿真模式 simMode 的模型组件 modelObject 的复杂性覆盖率结果。

    示例

    全部折叠

    此示例显示如何检索 slvnvdemo_cv_small_controller 模型的增益子系统的圈复杂度信息。

    加载 slvnvdemo_cv_small_controller 模型。

    modelName = 'slvnvdemo_cv_small_controller';
    load_system(modelName);
    

    创建测试规范对象并启用决策、条件和 MCDC 覆盖率。然后,使用 cvsim 仿真模型。

    testObj = cvtest(modelName);
    testObj.settings.decision = 1;
    testObj.settings.condition = 1;
    testObj.settings.mcdc = 1;
    covData = cvsim(testObj);
    

    检索增益子系统的圈复杂度信息。

    gainPath = [modelName,'/Gain'];
    gainComplexity = complexityinfo(covData,gainPath)
    
    gainComplexity =
    
         1     0
    
    

    Gain 子系统本身并不记录圈复杂度,但子系统的内容记录了。从结果中可以看出这一点,因为总复杂度为 1,其中包括子系统及其所有后代。相比之下,局部复杂度为 0,表明复杂性的一个点来自其中一个后代,在本例中是 Switch 模块。

    switchPath = [modelName,'/Gain/Switch'];
    switchComplexity = complexityinfo(covData,switchPath)
    
    switchComplexity =
    
         1     1
    
    

    输入参数

    全部折叠

    覆盖率数据,指定为 cvdata 对象。

    数据类型: cvdata

    模型对象,指定为字符数组、字符串数组、Simulink 句柄、Stateflow ID 或元胞数组。

    要指定模型对象(例如模块或 Stateflow 图),请使用以下格式之一:

    对象设定描述

    BlockPath

    模型或模块的完整路径

    BlockHandle

    模型或模块

    slObj

    Simulink API 对象的句柄

    sfID

    Stateflow ID

    sfObj

    来自单独实例化的 Stateflow 图的 Stateflow API 对象的句柄

    {BlockPath, sfID}

    包含 Stateflow 图或原子子图的路径以及该图或子图中包含的对象的 ID 的元胞数组

    {BlockPath, sfObj}

    包含 Stateflow 图或子图的路径以及该图或子图中包含的 Stateflow 对象 API 句柄的元胞数组

    {BlockHandle, sfID}

    带有 Stateflow 图或原子子图句柄的元胞数组以及该图或子图中包含的对象的 ID

    要指定 S-Function 模块或其内容,请使用以下格式之一:

    对象设定描述

    {BlockPath, fName}

    包含 S-Function 模块路径和源文件名称的元胞数组

    {BlockHandle, fName}

    具有 S-Function 模块句柄和源文件名称的元胞数组

    {BlockPath, fName, funName}

    包含 S-Function 模块的路径、源文件的名称和函数名称的元胞数组

    {BlockHandle, fName, funName}

    带有 S-Function 模块句柄、源文件的名称和函数名称的元胞数组

    要指定代码覆盖率结果,例如在软件在环(SIL) 或处理器在环(PIL) 分析期间收集的覆盖率数据,请使用以下格式之一:

    对象设定描述

    {fileName, funName}

    包含源文件名称和函数名称的元胞数组

    {Model, fileName}

    具有模型名称或模型句柄和源文件名称的元胞数组

    {Model, fileName, funName}

    具有模型名称或模型句柄、源文件的名称和函数名称的元胞数组

    数据类型: char | string | cell | Stateflow.State | Stateflow.Transition

    覆盖率分析期间的仿真模式,指定为以下选项之一:

    对象设定描述

    "Normal"

    普通仿真模式下的模型。

    "SIL" or "PIL"

    软件在环 (SIL) 或处理器在环 (PIL) 仿真模式下的模型。

    "ModelRefSIL" or "ModelRefPIL"

    SIL 或 PIL 仿真模式下的模型参考。

    "ModelRefTopSIL" or "ModelRefTopPIL"

    在 SIL 或 PIL 仿真模式下的模型引用,代码接口设置为顶层模型。

    数据类型: char | string

    输出参量

    全部折叠

    循环复杂度,如果 cvdo 包含圈复杂度覆盖率结果,则返回为 [total_complexity,local_complexity] 形式的双元素数组,如果不包含,则返回空数组。

    total_complexitymodelObject 及其后代(如果有)的循环复杂度覆盖率
    local_complexitymodelObject 的循环复杂度覆盖率

    如果 modelObject 具有可变大小的信号,则 complexity 也包含可变复杂度。

    数据类型: double

    备选方法

    使用覆盖率设置来收集并显示覆盖率报告中的圈复杂度覆盖率结果:

    1. 打开模型。

    2. 在 Simulink 编辑器中,选择建模选项卡上的模型设置

    3. 在配置参数对话框的覆盖率窗格中,选择启用覆盖率分析

    4. 覆盖率度量下,选择 MCDC 作为结构覆盖率级别。

    5. 点击确定关闭配置参数对话框并保存更改。

    6. 仿真模型。

    7. 在停靠的覆盖率详细信息窗格中,覆盖率报告显示模型以及每个模型对象的圈复杂度。

    版本历史记录

    在 R2011a 中推出