主要内容

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

conditioninfo

cvdata 对象中检索条件覆盖率信息

说明

covInfo = conditioninfo(cvdo,modelObject)cvdata 对象 cvdo 返回由 modelObject 指定的模型组件的条件覆盖率结果。

covInfo = conditioninfo(cvdo,modelObject,simMode) 返回来自 cvdata 对象 cvdo 的仿真模式 simMode 的条件覆盖率结果。

covInfo = conditioninfo(cvdo,modelObject,ignoreDescendants) 返回 modelObject 的条件覆盖率结果,根据 ignoreDescendants 的值包括或忽略后代对象。

[covInfo,description] = conditioninfo(cvdo,modelObject) 返回 modelObject 中每个条件的条件覆盖率结果和文本描述。

示例

全部折叠

此示例显示如何查看模型中模块的条件覆盖率。

加载模型。

modelName = 'slvnvdemo_cv_small_controller';
load_system(modelName);

使用 Simulink.SimulationInput 对象配置模型的覆盖率设置。

simIn = Simulink.SimulationInput(modelName);
simIn = simIn.setModelParameter('CovEnable','on');
simIn = simIn.setModelParameter('CovMetricStructuralLevel','MCDC');
simIn = simIn.setModelParameter('CovSaveSingleToWorkspaceVar','on');
simIn = simIn.setModelParameter('CovSaveName','covData');

simIn 作为输入传递给 sim 来对模型进行仿真。

simOut = sim(simIn);
covData = simOut.covData;

通过使用模块路径调用 conditioninfo 来查看增益子系统中逻辑模块的条件覆盖率结果。

condCov = conditioninfo(covData,[modelName,'/Gain/Logic'])
condCov =

     2     4

conditioninfo 返回一个包含两个标量的数组。第一个值是满足的条件结果的数量,第二个值是总条件结果的数量。使用这些来确定逻辑模块的满足条件结果的百分比。

percentCondCov = 100 * condCov(1) / condCov(2)
percentCondCov =

    50

  1. 打开示例并加载模型。

    openExample("slcoverage/RetrieveCodeCoverageResultsExample");
  2. 使用 setupSILCoverage 函数配置模型以进行代码覆盖率分析。输出是一个 Simulink.SimulationInput 对象。

    simIn = setupSILCoverage("slvnvdemo_counter_harness");

  3. 仿真模型。

    simOut = sim(simIn);

  4. 要检索代表特定模块生成代码的覆盖率结果,请使用模块路径。例如,通过传递相对于顶层模型的模块路径,检索名为 upper GE inputRelational Operator 模块的条件覆盖率结果。

    covDataSIL = simOut.covdata;
    condBlockSIL = conditioninfo(covDataSIL,...
                                 "slvnvdemo_counter/upper GE input")
    
        
        condBlockSIL =
        
             2     2
    

  5. 要检索生成代码中某个函数的覆盖率结果,请使用一个包含所生成源文件的文件名和函数名的元胞数组。例如,检索源文件 slvnvdemo_counter.c 中函数 slvnvdemo_counter 的条件覆盖率结果。

    condSILFunction = conditioninfo(covDataSIL,{"slvnvdemo_counter.c",...
                                                "slvnvdemo_counter"})
    
        condSILFunction =
        
             6     6

  1. 打开示例并加载数据到工作区。

    openExample("slcoverage/RetrieveSFunCoverageResultsExample");
    load slcoverage_lct_data.mat
  2. 使用 setupSFcnCoverage 函数配置模型以进行覆盖率分析。输出是一个 Simulink.SimulationInput 对象。

    simIn = setupSFcnCoverage("slcoverage_lct_bus");

  3. 仿真模型。

    simOut = sim(simIn);

  4. 要检索 S-Function 的覆盖率结果,请使用 conditioninfo 函数,并指定一个包含模块句柄或完整路径元胞数组,后跟 S-Function 源文件的文件名。根据选项,您还可以指定该源文件中的特定函数。例如,获取名为 counterbusFcn 的函数在 S-Function 文件 counterbus.c 中的条件覆盖率结果,该函数被 S-Function 模块 slcoverage_sfun_counterbus 调用。S-Function 模块位于模型 slcoverage_lct_bus 中的 TestCounter 子系统内。

    covDataSFcn = simOut.covdata;
    condSFun = conditioninfo(covDataSFcn,...
        {"slcoverage_lct_bus/TestCounter/slcoverage_sfun_counterbus",...
        "counterbus.c","counterbusFcn"})
        
        condSFun =
        
             4     6
    

输入参数

全部折叠

覆盖率数据,指定为 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,fileName}

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

{BlockHandle,fileName}

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

{BlockPath,fileName,functionName}

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

{BlockHandle,fileName,functionName}

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

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

对象设定描述

{fileName,functionName}

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

{Model,fileName}

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

{Model,fileName,functionName}

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

数据类型: 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

是否忽略覆盖率结果中的后代,指定为数字或逻辑 1 (true)0 (false),其中:

  • 0 (false) 包括后代对象的覆盖率结果。

  • 1 (true) 忽略后代对象的覆盖率结果。

数据类型: single | double | logical

输出参量

全部折叠

覆盖率信息,如果 cvdo 包含条件覆盖率数据,则返回为 [covered_outcomes,total_outcomes] 形式的双元素数组,如果不包含,则返回空数组。

covered_outcomesmodelObject 满足的条件结果数
total_outcomesmodelObject 的条件结果总数

数据类型: double

条件覆盖率描述,以具有以下字段的结构体返回:

模块排除标志,如果模块被排除则返回为 1,如果没有被排除则返回为 0

数据类型:

模块覆盖率过滤器原理,以字符数组形式返回。

数据类型: char

已申述覆盖率目标结果的数量,以双精度标量形式返回。

数据类型: double

模块申述标志,如果模块对齐则返回 1,否则返回 0

数据类型: double

个别条件结果的信息,以包含以下字段的结构体返回:

条件排除标志,如果条件被排除则返回 1,如果不被排除则返回 0

数据类型: double

条件申述标志,如果条件证明则返回 1,如果条件不证明则返回 0

数据类型: double

覆盖率过滤器的基本原理,以字符数组形式返回。

数据类型: char

条件描述,以字符数组形式返回。

数据类型: char

条件为 true 的时间步数,以标量形式返回。

数据类型: double

条件为 false 的时间步数,以标量形式返回。

数据类型: double

true 条件结果的覆盖率过滤信息,以具有以下字段的结构体数组形式返回:

isFiltered条件结果的过滤标志,如果结果经过过滤则返回 1,如果未经过过滤则返回 0
isJustified条件结果的申述标志,如果结果已申述则返回 1,如果结果未申述则返回 0
filterRationale过滤器原理,以字符数组形式返回。

数据类型: struct

false 条件结果的覆盖率过滤信息,以具有以下字段的结构体数组形式返回:

isFiltered条件结果的过滤标志,如果结果经过过滤则返回 1,如果未经过过滤则返回 0
isJustified条件结果的申述标志,如果结果已申述则返回 1,如果结果未申述则返回 0
filterRationale过滤器原理,以字符数组形式返回。

数据类型: struct

聚合覆盖率测试用例可追溯性信息,以结构体数组形式返回。如果您的覆盖率数据不包含来自多个仿真的聚合结果,则 trueExecutedIn 是一个空数组。如果您的覆盖率数据包含聚合结果,trueExecutedIn 表示哪些测试运行执行了 true 条件结果,并具有以下字段:

uniqueId执行此条件结果的测试用例创建的 cvdata 对象的唯一标识符,以字符数组的形式返回。
analyzedModel所分析模型的名称,以字符数组形式返回。
description测试用例描述,以字符数组形式返回。
date创建 cvdata 对象的仿真的日期和时间,以字符数组形式返回。
traceLabel测试用例的简称,以字符数组形式返回。
testRunInfo测试详细信息,以结构体数组返回。
testRunInfo.runid生成覆盖率结果的运行的标识符,以双精度标量形式返回。
testRunInfo.runName生成覆盖率结果的测试用例的名称,以字符数组形式返回。
testRunInfo.testId识别生成覆盖率结果的测试用例的数据,以结构体数组的形式返回。
testRunInfo.testId.uuid生成覆盖率结果的测试用例的唯一标识符,以字符数组形式返回。
testRunInfo.testId.contextType

获取覆盖率结果的测试上下文,以下列值之一返回:

'RE' 表示覆盖率结果浏览器

'ST'Simulink Test™ 中的测试管理器

数据类型: struct

聚合覆盖率测试用例可追溯性信息,以结构体数组形式返回。如果您的覆盖率数据不包含来自多个仿真的聚合结果,则 falseExecutedIn 是一个空数组。如果您的覆盖率数据包含聚合结果,falseExecutedIn 表示哪些测试运行执行了 false 条件结果,并具有以下字段:

uniqueId执行此条件结果的测试用例创建的 cvdata 对象的唯一标识符,以字符数组的形式返回。
analyzedModel所分析模型的名称,以字符数组形式返回。
description测试用例描述,以字符数组形式返回。
date创建 cvdata 对象的仿真的日期和时间,以字符数组形式返回。
traceLabel测试用例的简称,以字符数组形式返回。
testRunInfo测试详细信息,以结构体数组返回。
testRunInfo.runid生成覆盖率结果的运行的标识符,以双精度标量形式返回。
testRunInfo.runName生成覆盖率结果的测试用例的名称,以字符数组形式返回。
testRunInfo.testId识别生成覆盖率结果的测试用例的数据,以结构体数组的形式返回。
testRunInfo.testId.uuid生成覆盖率结果的测试用例的唯一标识符,以字符数组形式返回。
testRunInfo.testId.contextType

获取覆盖率结果的测试上下文,以下列值之一返回:

'RE' 表示覆盖率结果浏览器

'ST'Simulink Test 中的测试管理器

数据类型: struct

数据类型: struct

数据类型: struct

备选方法

您还可以在 Simulink 编辑器中收集模型的条件覆盖率。设置模型配置参数并运行模型:

  1. 打开您想要收集条件覆盖率的模型。

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

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

  4. 覆盖率度量下,选择条件决策作为结构覆盖率级别。

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

  6. 通过点击运行来仿真模型。审查结果。

版本历史记录

在 R2006b 中推出