executioninfo
从 cvdata
对象检索执行覆盖率信息
语法
说明
从 covInfo
= executioninfo(cvdo
,modelObject
)cvdata
对象 cvdo
返回由 modelObject
指定的模型组件的执行覆盖率结果。如果 cvdo
包含代码覆盖率数据,则 executioninfo
返回语句覆盖率、函数覆盖率和函数调用覆盖率度量的总和。
返回仿真模式 covInfo
= executioninfo(cvdo
,modelObject
,simMode
)simMode
的执行覆盖率结果。
返回 covInfo
= executioninfo(cvdo
,modelObject
,ignoreDescendants
)modelObject
的执行覆盖率结果(无论是否包含其后代),具体取决于 ignoreDescendants
的值。
[
返回与 covInfo
,description
] = executioninfo(cvdo
,modelObject
)modelObject
相关的每个执行点的描述结构体数组。如果 cvdo
包含代码覆盖率度量语句覆盖率、函数覆盖率或函数调用覆盖率的覆盖率数据,则 description
包含每个相关度量的结构体数组。
示例
检索模块的执行覆盖率结果
此示例显示如何从 cvdata
对象中提取模块的执行覆盖率结果。
加载 slvnvdemo_cv_small_controller
模型。
modelName = "slvnvdemo_cv_small_controller";
load_system(modelName)
使用 Simulink.SimulationInput
对象配置模型的覆盖率设置。
simIn = Simulink.SimulationInput(modelName); simIn = setModelParameter(simIn,"CovEnable","on"); simIn = setModelParameter(simIn,"CovMetricStructuralLevel",... "BlockExecution"); simIn = setModelParameter(simIn,"CovSaveSingleToWorkspaceVar","on"); simIn = setModelParameter(simIn,"CovSaveName","covData");
通过将 simIn
作为输入传递给 sim
来仿真模型。
simOut = sim(simIn); covData = simOut.covData;
使用 get_param
检索 Saturation 模块的句柄。
blockHandle = get_param(modelName+"/Saturation","Handle");
使用 executioninfo
提取执行覆盖率信息。
executionCov = executioninfo(covData,blockHandle)
executionCov = 1 1
计算满足的执行结果的百分比。
percentCoverage = 100*executionCov(1) / executionCov(2)
percentCoverage = 100
检索语句和函数覆盖率
此示例展示如何提取在软件在环(SIL) 模式下仿真的模型的语句、函数和函数调用覆盖率。
加载模型。
modelName = "SILTopModel";
load_system(modelName);
使用 Simulink.SimulationInput
对象配置模型的覆盖率设置。
simIn = Simulink.SimulationInput(modelName); simIn = setModelParameter(simIn,"CovEnable","on"); simIn = setModelParameter(simIn,"CovMetricStructuralLevel","MCDC"); simIn = setModelParameter(simIn,"CovSaveSingleToWorkspaceVar","on"); simIn = setModelParameter(simIn,"CovSaveName","covData"); simIn = setModelParameter(simIn,"SimulationMode","software-in-the-loop (sil)");
通过将 simIn
作为输入传递给 sim
来仿真模型。
simOut = sim(simIn); covDataSIL = simOut.covData;
### Starting build procedure for: SILTopModel ### Successful completion of build procedure for: SILTopModel Build Summary Top model targets built: Model Action Rebuild Reason ============================================================================================= SILTopModel Code generated and compiled. Code generation information file does not exist. 1 of 1 models built (0 models already up to date) Build duration: 0h 0m 29.744s ### Preparing to start SIL simulation ... Building with 'gcc'. MEX completed successfully. ### Updating code generation report with SIL files ... ### Starting SIL simulation for component: SILTopModel ### Application stopped ### Stopping SIL simulation for component: SILTopModel ### Completed code coverage analysis
将 covDataSIL
和文件名 SILTopModel.c
作为输入传递给 executioninfo
。
[covMetricsSIL,covMetricsSILdesc] = executioninfo(covDataSIL,"SILTopModel.c")
covMetricsSIL = 21 24 covMetricsSILdesc = struct with fields: isFiltered: 0 justifiedCoverage: 0 isJustified: 0 filterRationale: '' function: [1x6 struct] functionCall: [1x4 struct] executableStatement: [1x18 struct] decision: [1x24 struct]
当您在 SIL 模式下分析模型的覆盖率时,executioninfo
会返回以下代码覆盖率度量的数据:
语句覆盖率
函数覆盖率
函数调用覆盖率
covMetricsSIL
,第一个输出参量,包含两个值:满足的代码覆盖率目标总数和代码覆盖率目标总数。通过除法来确定满足的语句、函数和函数调用覆盖率的百分比。
percentCodeCov = 100 * covMetricsSIL(1) / covMetricsSIL(2)
percentCodeCov = 87.5000
要检索有关各个度量的详细信息,请使用第二个输出参量 covMetricsSILdesc
。分析的代码缺少三个语句的覆盖率。要确定哪些语句缺少覆盖率,您可以搜索语句覆盖率描述对象中哪些字段的执行计数为零。
execCounts = [covMetricsSILdesc.executableStatement.executionCount]; missingCovIdxs = execCounts == 0; missingCov = covMetricsSILdesc.executableStatement(missingCovIdxs);
missingCov
数组包含结构体数组中三个缺失语句目标的位置。查看第一个缺失语句的结构体。
disp(missingCov(1))
isFiltered: 0 justifiedCoverage: 0 isJustified: 0 filterRationale: '' text: 'Statement executed' executionCount: 0 fileName: 'SILTopModel.c' functionName: 'CounterTypeB' sourceLocation: [1x1 struct] kind: 'if' modelElements: {1x2 cell}
您可以看到它是一个 if 语句,位于函数 counterTypeB
中,而该函数位于文件 SILTopModel.c
中。查看其 sourceLocation
字段,查看代表缺失语句目标的确切行号。
disp(missingCov(1).sourceLocation)
startLine: 110 startCol: 5 endLine: 112 endCol: 5
在 SILTopModel.c
中,第 114 行到第 116 行缺少语句覆盖率。
输入参数
cvdo
— 覆盖率数据
cvdata
对象
覆盖率数据,指定为 cvdata
对象。
数据类型: cvdata
modelObject
— 模型对象
character array
| string array
| Simulink® handle
| Stateflow® ID
| cell array
模型对象,指定为字符数组、字符串数组、Simulink 句柄、Stateflow ID 或元胞数组。
要指定模型对象(例如模块或 Stateflow 图),请使用以下格式之一:
对象设定 | 描述 |
---|---|
| 模型或模块的完整路径 |
| 模型或模块 |
| Simulink API 对象的句柄 |
| Stateflow ID |
| 来自单独实例化的 Stateflow 图的 Stateflow API 对象的句柄 |
| 包含 Stateflow 图或原子子图的路径以及该图或子图中包含的对象的 ID 的元胞数组 |
| 包含 Stateflow 图或子图的路径以及该图或子图中包含的 Stateflow 对象 API 句柄的元胞数组 |
| 带有 Stateflow 图或原子子图句柄的元胞数组以及该图或子图中包含的对象的 ID |
要指定 S-Function 模块或其内容,请使用以下格式之一:
对象设定 | 描述 |
---|---|
| 包含 S-Function 模块路径和源文件名称的元胞数组 |
| 具有 S-Function 模块句柄和源文件名称的元胞数组 |
| 包含 S-Function 模块的路径、源文件的名称和函数名称的元胞数组 |
| 带有 S-Function 模块句柄、源文件的名称和函数名称的元胞数组 |
要指定代码覆盖率结果,例如在软件在环(SIL) 或处理器在环(PIL) 分析期间收集的覆盖率数据,请使用以下格式之一:
对象设定 | 描述 |
---|---|
| 包含源文件名称和函数名称的元胞数组 |
| 具有模型名称或模型句柄和源文件名称的元胞数组 |
| 具有模型名称或模型句柄、源文件的名称和函数名称的元胞数组 |
数据类型: char
| string
| cell
| Stateflow.State
| Stateflow.Transition
simMode
— 仿真模式
character array
| string array
覆盖率分析期间的仿真模式,指定为以下选项之一:
对象设定 | 描述 |
---|---|
| 普通仿真模式下的模型。 |
| 软件在环 (SIL) 或处理器在环 (PIL) 仿真模式下的模型。 |
| SIL 或 PIL 仿真模式下的模型参考。 |
| 在 SIL 或 PIL 仿真模式下的模型引用,代码接口设置为顶层模型。 |
数据类型: char
| string
ignoreDescendants
— 是否忽略覆盖率结果中的后代
false
或 0
(默认) | true
或 1
是否忽略覆盖率结果中的后代,指定为数字或逻辑 1 (true)
或 0 (false)
,其中:
0 (false)
包括后代对象的覆盖率结果。1 (true)
忽略后代对象的覆盖率结果。
数据类型: single
| double
| logical
输出参量
covInfo
— 覆盖率信息
标量
覆盖率信息,如果 cvdo
包含执行覆盖率数据,则返回为 [covered_outcomes,total_outcomes]
形式的双元素标量数组,如果不包含,则返回为空数组。数组中的元素为:
covered_outcomes | object 满足的执行结果数 |
total_outcomes | object 的执行结果数量 |
数据类型: double
description
— 执行覆盖率说明
结构体
执行覆盖率描述,以包含以下字段的结构体返回:
isFiltered
— 模块排除标志
0
| 1
模块排除标志,如果模块被排除则返回为 1
,如果没有被排除则返回为 0
。
数据类型: double
filterRationale
— 模块覆盖率过滤器原理
character array
模块覆盖率过滤器原理,以字符数组形式返回。
数据类型: char
justifiedCoverage
— 已申述覆盖率目标结果的数量
scalar
已申述覆盖率目标结果的数量,以双精度标量形式返回。
数据类型: double
isJustified
— 模块申述标志
0
| 1
模块申述标志,如果模块对齐则返回 1
,否则返回 0
。
数据类型: double
decision
— 个人决策信息
structure array
单个决策的信息,以包含以下字段的结构体数组返回:
text
— 模块执行文本
'Block executed'
模块执行文本,以字符数组 'Block executed'
形式返回。即使该模块的执行覆盖率为 0%,text
字段也不会改变。
数据类型: char
executionCount
— 模型对象执行的时间步数
双精度标量
模型对象执行的时间步数,以双精度标量形式返回。
数据类型: double
数据类型: struct
function
— 函数覆盖率信息
structure array
函数覆盖率信息,以 Nf 结构体数组形式返回,其中 Nf 是分析的函数数量。当 cvdo
包含函数覆盖率度量的代码覆盖率数据时,会出现 function
。每个结构体包含以下字段:
isFiltered
— 函数排除标志
0
| 1
函数排除标志,如果函数被排除则返回 1
,如果没有被排除则返回 0
。
数据类型: double
justifiedCoverage
— 已申述覆盖率结果的数量
scalar
已申述覆盖率结果的数量,以双精度标量形式返回。
数据类型: double
isJustified
— 函数申述标志
0
| 1
函数申述标志,如果函数调整成功则返回 1
,否则返回 0
。
数据类型: double
filterRationale
— 函数覆盖率过滤器的基本原理
[]
(默认) | character array
函数覆盖率过滤器原理,以字符数组形式返回。如果函数未被过滤或者未设置过滤原理,filterRationale
将返回一个空数组。
数据类型: char
text
— 函数覆盖率文本
'Function entry'
函数覆盖率文本,以 'Function entry'
形式返回。
数据类型: char
executionCount
— 函数执行次数
integer
函数的执行计数,以 64 位整数返回。
数据类型: int64
fileName
— 包含函数的文件的名称
character array
包含该函数的文件的名称,以字符数组形式返回。
数据类型: char
functionName
— 分析函数的名称
character array
所分析函数的名称,以字符数组形式返回。
数据类型: char
sourceLocation
— 分析函数在源代码中的位置
structure array
所分析函数在源代码中的位置,以包含以下字段的结构体数组形式返回:
字段名称 | 描述 | 数据类型 |
---|---|---|
| 函数开始的源代码行 |
|
| 源代码中函数开始的列 |
|
| 函数结束的源代码行 |
|
| 函数结束的源代码列 |
|
数据类型: struct
modelElements
— 对应函数的模型元素
character array
与函数对应的模型元素,以字符数组形式返回。当您在 SIL 或 PIL 模式下分析模型时,会出现 modelElements
字段。
数据类型: char
数据类型: struct
functionCall
— 函数调用覆盖率信息
structure array
函数调用覆盖率信息,以 Nc 结构体数组形式返回,其中 Nc 是分析的函数调用数。当 cvdo
包含函数调用覆盖率度量的代码覆盖率数据时,会出现 functionCall
。每个结构体包含以下字段:
isFiltered
— 函数调用排除标志
0
| 1
函数调用排除标志,如果函数调用被排除则返回 1
,否则返回 0
。
数据类型: double
justifiedCoverage
— 已申述覆盖率结果的数量
scalar
已申述覆盖率结果的数量,以双精度标量形式返回。
数据类型: double
isJustified
— 函数调用结果申述标志
0
| 1
函数调用结果申述标志,如果函数调用结果已申述则返回 1
,否则返回 0
。
数据类型: double
filterRationale
— 函数调用覆盖率过滤器原理
[]
(默认) | character array
函数调用覆盖率过滤器原理,以字符数组形式返回。如果函数调用未被过滤或者未设置过滤原理,filterRationale
将返回一个空数组。
数据类型: char
text
— 函数调用覆盖率文本
'Function called'
函数调用覆盖率文本,以 'Function called'
形式返回。
数据类型: char
executionCount
— 函数调用执行次数
integer
函数调用的执行计数,以 64 位整数返回。
数据类型: int64
fileName
— 包含函数调用的文件名
character array
包含函数调用的文件的名称,以字符数组形式返回。
数据类型: char
functionName
— 所分析函数调用的名称
character array
所分析的函数调用的名称,以字符数组形式返回。
数据类型: char
sourceLocation
— 源代码中分析的函数调用的位置
structure array
源代码中分析的函数调用的位置,以包含以下字段的结构体数组返回:
字段名称 | 描述 | 数据类型 |
---|---|---|
| 函数调用开始的源代码行 |
|
| 源代码中函数调用开始的列 |
|
| 函数调用结束的源代码行 |
|
| 函数调用结束的源代码列 |
|
数据类型: struct
expression
— 函数调用表达式
character array
函数调用表达式,以字符数组形式返回。
数据类型: char
modelElements
— 函数调用对应的模型元素
character array
与函数调用相对应的模型元素,以字符数组的形式返回。当您在 SIL 或 PIL 模式下分析模型时,会出现 modelElements
字段。
数据类型: char
数据类型: struct
executableStatement
— 语句覆盖率信息
structure array
语句覆盖率信息,以 Ns 结构体数组形式返回,其中 Ns 是可执行语句的数量。当 cvdo
包含语句覆盖率度量的代码覆盖率数据时,会出现 executableStatement
。每个结构体数组包含以下字段:
isFiltered
— 语句排除标志
0
| 1
语句排除标志,如果语句被排除则返回 1
,如果没有排除则返回 0
。
数据类型: double
justifiedCoverage
— 已申述语句结果的数量
scalar
已申述语句结果的数量,返回一个双精度标量。
数据类型: double
isJustified
— 语句结果申述标志
0
| 1
语句结果申述标志,如果语句结果调整后则返回 1
,否则返回 0
。
数据类型: double
filterRationale
— 语句覆盖率过滤器原理
character array
语句覆盖率过滤器原理,以字符数组形式返回。如果语句未经过滤或者未设置过滤原理,filterRationale
将返回一个空数组。
数据类型: char
text
— 语句覆盖率文本
'Statement executed'
语句覆盖率文本,以 'Statement executed'
形式返回。
数据类型: char
executionCount
— 语句执行次数
scalar
语句执行计数,以 64 位整数返回。
数据类型: int64
fileName
— 包含语句的文件的名称
character array
包含语句的文件的名称,以字符数组形式返回。
数据类型: char
functionName
— 包含语句的函数名称
character array
包含语句的函数名称,以字符数组形式返回。
数据类型: char
sourceLocation
— 源代码中分析的语句的位置
structure array
源代码中分析的语句的位置,以包含以下字段的结构体数组形式返回:
字段名称 | 描述 | 数据类型 |
---|---|---|
| 语句开始的源代码行 |
|
| 源代码中语句开始的列 |
|
| 语句结束的源代码行 |
|
| 源代码中语句结束的列 |
|
数据类型: struct
kind
— 分析的语句的类型
character array
分析的语句的类型,以字符数组形式返回。
示例: 'stmt'
, 'if'
数据类型: char
modelElements
— 对应于语句的模型元素
character array
与语句相对应的模型元素,以字符数组的形式返回。当您在 SIL 或 PIL 模式下分析模型时,会出现 modelElements
字段。
数据类型: char
数据类型: struct
备选方法
使用覆盖率设置来收集并显示执行覆盖率结果:
打开模型。
在模型编辑器的建模选项卡中,选择模型设置。
在配置参数对话框的覆盖率窗格中,选择启用覆盖率分析。
在覆盖率度量下,将结构覆盖率等级设置为模块执行。
点击确定关闭配置参数对话框并保存更改。
通过点击运行按钮来仿真模型并查看结果。
版本历史记录
在 R2006b 中推出
MATLAB 命令
您点击的链接对应于以下 MATLAB 命令:
请在 MATLAB 命令行窗口中直接输入以执行命令。Web 浏览器不支持 MATLAB 命令。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)