overflowsaturationinfo
从 cvdata
对象检索整数溢出覆盖率的饱和度
语法
说明
返回 coverage
= overflowsaturationinfo(covdata
,object
,ignoreDescendants
)cvdata
对象 covdata
对 object
指定的模型对象的整数溢出覆盖率结果的饱和度,并且取决于 ignoreDescendants
的值,返回后代对象。
[
返回 coverage
, description
] = overflowsaturationinfo(covdata
, object
)cvdata
对象 covdata
对 object
指定的模型对象的整数溢出覆盖率结果的饱和度,以及每个覆盖率结果的文本描述。
示例
提取整数溢出数据的饱和度
此示例显示如何使用 overflowsaturationinfo
从 cvdata
对象中提取 MinMax
模块的整数溢出饱和数据。
生成覆盖率数据
打开模型并设置覆盖率设置。
load_system('slcoverage_fuelsys');
创建一个 Simulink.SimulationInput
对象来改变配置参数而不修改模型。
covSet = Simulink.SimulationInput('slcoverage_fuelsys');
打开覆盖率分析并配置 Simulink®以将覆盖率数据保存在工作区中单独的 cvdata
对象中。
covSet = covSet.setModelParameter('CovEnable','on'); covSet = covSet.setModelParameter('CovSaveSingleToWorkspaceVar','on'); covSet = covSet.setModelParameter('CovSaveName','covData'); covSet = covSet.setModelParameter('CovScope','EntireSystem');
启用整数溢出饱和度收集覆盖率并通过调用 sim
并以 SimulationInput
对象作为输入来仿真模型。
covSet = covSet.setModelParameter('CovMetricSaturateOnIntegerOverflow','on'); simOut = sim(covSet);
提取整数溢出结果的饱和度
使用 get_param
获取 MinMax 模块的模块句柄,然后获取整数溢出饱和结果。
blockHandle = get_param(['slcoverage_fuelsys/',... 'Engine Gas Dynamics/Mixing & Combustion/MinMax'],'Handle'); saturationResults = overflowsaturationinfo(covData,blockHandle) percentSaturationCoverage = 100 * saturationResults(1)/saturationResults(2)
saturationResults = 1 2 percentSaturationCoverage = 50
对于 Mixing & Combustion
子系统中的 MinMax
模块,两个整数溢出饱和决策结果中的一个得到满足,因此它获得了 50% 的整数溢出饱和覆盖率。
确定单个整数溢出结果
此示例显示如何使用 overflowsaturationinfo
来确定模型中的模块是否发生整数溢出。
生成覆盖率数据
加载 slvnvdemo_saturation_on_overflow_coverage
示例模型。
load_system('slvnvdemo_saturation_on_overflow_coverage');
使用 Simulink.SimulationInput
对象设置覆盖率设置。打开覆盖率并配置 Simulink® 以将 cvdata
对象输出到工作区。
covSet = Simulink.SimulationInput('slvnvdemo_saturation_on_overflow_coverage'); covSet = covSet.setModelParameter('CovEnable','on'); covSet = covSet.setModelParameter('CovSaveSingleToWorkspaceVar','on'); covSet = covSet.setModelParameter('CovSaveName','covData'); covSet = covSet.setModelParameter('CovScope','EntireSystem');
提取整数溢出结果的饱和度
检索 Test Unit
子系统的 Controller
子系统中 Sum
模块的整数溢出覆盖率饱和度结果和描述。
covSet = covSet.setModelParameter('CovMetricSaturateOnIntegerOverflow','on'); simOut = sim(covSet); [covResults, covDesc] = overflowsaturationinfo(covData, ... ['slvnvdemo_saturation_on_overflow_coverage/Test Unit /' ... 'Controller/Sum']) percentSaturation = 100 * covResults(1)/covResults(2)
covResults = 1 2 covDesc = struct with fields: isFiltered: 0 isJustified: 0 justifiedCoverage: 0 filterRationale: '' decision: [1x1 struct] percentSaturation = 50
对于 Sum 模块来说,两个整数溢出饱和决策结果中有一个得到满足,因此它获得了 50% 的整数溢出饱和覆盖率。
检查仿真中 Sum
模块对每个整数溢出饱和结果进行求值的次数。
outcome1 = covDesc.decision.outcome(1) outcome2 = covDesc.decision.outcome(2)
outcome1 = struct with fields: execCount: 3 executionCount: 3 text: 'false' isFiltered: 0 isJustified: 0 filterRationale: '' executedIn: [] outcome2 = struct with fields: execCount: 0 executionCount: 0 text: 'true' isFiltered: 0 isJustified: 0 filterRationale: '' executedIn: []
在仿真中,Sum
模块中没有发生整数溢出,因为 'true'
结果的执行计数为 0
。
如果模型中的某个模块不可能发生整数溢出,请考虑清除整数溢出饱和模块参数,以优化生成的代码的效率。
输入参数
covdata
— 覆盖率结果数据
cvdata
对象
覆盖结果数据,指定为 cvdata
对象。
object
— 模型或模型组件
完整路径 | 句柄
模型或模型组件,指定为完整路径、句柄或路径或句柄的数组。
对象设定 | 描述 |
---|---|
| 模型或模块的完整路径 |
| 模型或模块 |
| Simulink® API 对象的句柄 |
| Stateflow® ID |
| Stateflow API 对象的句柄 |
| 包含 Stateflow 图或原子子图的路径以及该图或子图中包含的对象的 ID 的元胞数组 |
| 包含 Stateflow 图或原子子图的路径以及该图或子图中包含的 Stateflow 对象 API 句柄的元胞数组 |
| 带有 Stateflow 图或原子子图句柄的元胞数组以及该图或子图中包含的对象的 ID |
示例: 'slvnvdemo_saturation_on_overflow_coverage'
示例: get_param('slvnvdemo_cv_small_controller/Saturation', 'Handle')
ignoreDescendants
— 是否忽略覆盖率结果中的后代
false
或 0
(默认) | true
或 1
是否忽略覆盖率结果中的后代,指定为数字或逻辑 1 (true)
或 0 (false)
,其中:
0 (false)
包括后代对象的覆盖率结果。1 (true)
忽略后代对象的覆盖率结果。
数据类型: single
| double
| logical
输出参量
coverage
— object
的溢出覆盖率结果饱和
数值向量
溢出覆盖率饱和结果,存储在 [covered_outcomes total_outcomes]
形式的二元素向量中。这两个要素是:
covered_outcomes | object 满足的整数溢出结果的饱和度数量 |
total_outcomes | object 整数溢出结果的饱和总数 |
数据类型: double
description
— 覆盖率结果的文字描述
结构体数组
object
指定的模型组件的覆盖率结果的文本描述,以结构体数组的形式返回。根据收集的模型覆盖率类型,结构体数组可以有不同的字段。如果仅收集溢出覆盖率饱和度,则结构体数组包含以下字段:
isFiltered | 如果 | ||||
decision.text | 'Saturate on integer overflow' | ||||
decision.outcome | 包含每个覆盖率结果两个字段的结构数组:
整数溢出饱和有两种可能的结果, | ||||
decision.isFiltered | 如果 | ||||
decision.filterRationale | 如果 |
数据类型: struct
版本历史记录
在 R2013a 中推出
另请参阅
cvtest
| cvsim
| decisioninfo
| complexityinfo
| conditioninfo
| getCoverageInfo
| mcdcinfo
| sigrangeinfo
| sigsizeinfo
| tableinfo
| executioninfo
| relationalboundaryinfo
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)