slcoverage.Filter 类
命名空间: slcoverage
覆盖率过滤器设置
描述
使用 slcoverage.Filter
类的对象通过使用 slcoverage.FilterRule
类创建规则来过滤掉不满足的覆盖率目标。
slcoverage.Filter
类是 handle
类。
创建对象
描述
创建一个 filt
= slcoverage.Filter()slcoverage.Filter
对象。
创建一个 filt
= slcoverage.Filter(filterFile
)slcoverage.Filter
对象,其中包含保存在 filterFile
中的过滤规则。
输入参量
filterFile
— 过滤器文件
路径名称
CVF 格式的过滤文件,指定为文件路径名的字符数组或字符数组的元胞数组。您不需要包含文件扩展名。
示例: 'myfilt'
, 'filters\myfilt'
, {'myfilt1', 'myfilt2'}
方法
公共方法
addRule | 添加覆盖率过滤规则到过滤器 |
removeRule | 从过滤器规则集中删除规则 |
rules | 过滤器规则 |
setFilterName | 设置覆盖率过滤器对象的名称 |
filterName | 获取覆盖率过滤器对象的名称 |
setFilterDescription | 设置覆盖率过滤器对象的描述 |
filterDescription | 获取覆盖率过滤器对象的描述 |
save | 将覆盖率过滤器对象保存到覆盖率过滤器文件 |
示例
将规则添加到过滤文件
此示例显示如何向覆盖率过滤器文件添加规则。
创建一个过滤器对象,并使用 BlockSelector
类为 slvnvdemo_covfilt
模型中的 Saturation 模块创建一个 BlockSelector
对象。
filt = slcoverage.Filter; blockSel = slcoverage.BlockSelector(slcoverage.BlockSelectorType.BlockInstance,... 'slvnvdemo_covfilt/Saturation');
创建一个规则,使用 slcoverage.FilterRule
过滤 Saturation 模块,以选择器作为第一个输入,以基本原理作为第二个输入。
rule = slcoverage.FilterRule(blockSel,'Edge case');
使用 slcoverage.Filter
类的 addRule
方法将规则添加到过滤器对象。
addRule(filt,rule);
使用 slcoverage.Filter
类的 save
方法将具有新规则的过滤器保存到过滤器文件中。
save(filt,'myFilterFile')
创建并使用覆盖率过滤器对象
此示例显示如何创建过滤器对象并添加规则以将子系统排除在覆盖率分析之外。
打开 slvnvdemo_covfilt
模型。使用 SimulationInput
对象启用覆盖率记录并指定覆盖率设置。
modelName = 'slvnvdemo_covfilt'; load_system(modelName) simIn = Simulink.SimulationInput(modelName); simIn = setModelParameter(simIn,'CovEnable','on'); simIn = setModelParameter(simIn,'CovMetricStructuralLevel','MCDC'); simIn = setModelParameter(simIn,'CovSaveSingleToWorkspaceVar','on'); simIn = setModelParameter(simIn,'CovSaveName','covData');
仿真模型。覆盖率数据存储在为 CovSaveName
属性提供的值中。
simOut = sim(simIn); covData = simOut.covData;
您可以使用 slcoverage.BlockSelector
类来过滤一个模块。要排除可切换配置子系统,请使用 slcoverage.BlockSelectorType.SubsystemAllContent
作为第一个输入。
subsysSel = slcoverage.BlockSelector(... slcoverage.BlockSelectorType.SubsystemAllContent,... 'slvnvdemo_covfilt/Switchable config');
通过将选择器、基本原理和排除过滤模式作为输入来创建过滤器规则。
rule = slcoverage.FilterRule(subsysSel,... 'Unused configuration',... slcoverage.FilterMode.Exclude);
创建一个 slcoverage.Filter
对象,然后向其中添加规则。
filt = slcoverage.Filter; addRule(filt,rule);
将过滤器保存到名为 blockFilter.cvf
的文件中。要创建使用此覆盖率过滤器的报告,请将过滤器文件作为值添加到 covData
的 filter
属性,并使用 covData
创建名为 coverageData.html
的报告。
save(filt,'blockFilter') covData.filter = 'blockFilter'; cvhtml('coverageData',covData);
使用多个覆盖率过滤器文件进行仿真
如果您有多个过滤器文件,每个文件都包含自己的一组规则,则可以通过创建过滤器文件名或路径名的元胞数组将它们应用于覆盖率结果集。在此示例中,您将两个过滤器文件应用于单个 cvdata
对象,然后查看报告以查看过滤器是否已应用。
将 slvnvdemo_covfilt
模型加载到内存中。
modelName = 'slvnvdemo_covfilt';
load_system(modelName)
使用 Simulink.SimulationInput
对象设置覆盖率设置,并使用 sim
仿真模型。
simIn = Simulink.SimulationInput(modelName); simIn = setModelParameter(simIn,'CovEnable','on'); simIn = setModelParameter(simIn,'CovMetricStructuralLevel','MCDC'); simIn = setModelParameter(simIn,'CovSaveSingleToWorkspaceVar','on'); simIn = setModelParameter(simIn,'CovSaveName','covData'); simOut = sim(simIn);
将两个过滤器作为元胞数组分配给过滤器属性,以将其应用于 cvdata
对象。
covData.filter = {'filter_1','filter_2'}; cvhtml('twoFiltersCovData',covData);
您可以在覆盖率报告的从覆盖率分析中过滤的对象部分中看到已应用的覆盖率过滤器。
版本历史记录
在 R2017b 中推出
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)