Main Content

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

slcoverage.Filter 类

命名空间: slcoverage

覆盖率过滤器设置

描述

使用 slcoverage.Filter 类的对象通过使用 slcoverage.FilterRule 类创建规则来过滤掉不满足的覆盖率目标。

slcoverage.Filter 类是 handle 类。

创建对象

描述

filt = slcoverage.Filter() 创建一个 slcoverage.Filter 对象。

filt = slcoverage.Filter(filterFile) 创建一个 slcoverage.Filter 对象,其中包含保存在 filterFile 中的过滤规则。

输入参量

全部展开

CVF 格式的过滤文件,指定为文件路径名的字符数组或字符数组的元胞数组。您不需要包含文件扩展名。

示例: 'myfilt', 'filters\myfilt', {'myfilt1', 'myfilt2'}

方法

全部展开

示例

全部折叠

此示例显示如何向覆盖率过滤器文件添加规则。

创建一个过滤器对象,并使用 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 的文件中。要创建使用此覆盖率过滤器的报告,请将过滤器文件作为值添加到 covDatafilter 属性,并使用 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 中推出