slcoverage.BlockSelector 类
命名空间: slcoverage
选择覆盖率过滤器的模块
描述
为过滤器规则指定模块选择准则。
slcoverage.BlockSelector 类是 handle 类。
创建对象
输入参量
要选择的模型元素类型,指定为以下值之一:
slcoverage.BlockSelectorType.BlockInstance- 由 MATLAB Function 模块调用的模块或外部 MATLAB 函数的实例。slcoverage.BlockSelectorType.BlockType- 指定模块类型的所有模块。slcoverage.BlockSelectorType.Chart— Stateflow® 图。slcoverage.BlockSelectorType.MaskType- 使用指定封装类型的模块。slcoverage.BlockSelectorType.State— Stateflow 状态。slcoverage.BlockSelectorType.StateAllContent- Stateflow 状态及其内容。slcoverage.BlockSelectorType.StateflowFunction— Stateflow 函数。slcoverage.BlockSelectorType.Subsystem- 子系统模块。slcoverage.BlockSelectorType.SubsystemAllContent- 子系统及其内容。slcoverage.BlockSelectorType.TemporalEvent- Stateflow 时间事件。slcoverage.BlockSelectorType.Transition— Stateflow 转移。
示例: slcoverage.BlockSelectorType.Transition
要选择的模型元素,指定为元素的属性名称、其句柄或其 Simulink 标识符。对选择实例的选择器类型使用句柄或 ID。使用属性名称(例如模块的 'BlockType' 属性的值)来选择多个模型元素。
示例: 'slcoverage_lct_bus:18', 'RelationalOperator'
属性:
- SetAccess
受保护
数据类型: char | string | handle | integer
属性
用于创建此选择器对象的代码,以字符向量形式返回。
属性:
GetAccess | public |
SetAccess | 受保护 |
选择器的描述,以字符向量形式返回。Simulink Coverage™ 根据选择器创建描述。
属性:
GetAccess | public |
SetAccess | 受保护 |
模型元素标识符,指定为元素的属性名称、元素的句柄或元素的 Simulink 标识符。对选择实例的选择器类型使用句柄或 ID。使用属性名称(例如模块的 'BlockType' 属性的值)来选择多个模型元素。
属性
SetAccess | 受保护 |
数据类型: char | string | handle | integer
选择器类型,以以下 slcoverage.BlockSelectorType 值之一返回:
slcoverage.BlockSelectorType.BlockInstance- 由 MATLAB Function 模块调用的模块或外部 MATLAB 函数的实例。slcoverage.BlockSelectorType.BlockType- 指定模块类型的所有模块。slcoverage.BlockSelectorType.Chart— Stateflow 图。slcoverage.BlockSelectorType.MaskType- 使用指定封装类型的模块。slcoverage.BlockSelectorType.State— Stateflow 状态。slcoverage.BlockSelectorType.StateAllContent- Stateflow 状态及其内容。slcoverage.BlockSelectorType.StateflowFunction— Stateflow 函数。slcoverage.BlockSelectorType.Subsystem- 子系统模块。slcoverage.BlockSelectorType.SubsystemAllContent- 子系统及其内容。slcoverage.BlockSelectorType.TemporalEvent- Stateflow 时间事件。slcoverage.BlockSelectorType.Transition— Stateflow 转移。
属性:
GetAccess | public |
SetAccess | 受保护 |
方法
allSelectors | 模型或代码元素的选择器 |
示例
选择多个要添加规则的模块以及一个要添加规则的模块实例。生成的过滤器有两个规则。您可以使用过滤器仿真代码覆盖率模型来查看效果。
打开模型。指定覆盖率设置并打开覆盖率记录。
modelName = 'slcoverage_lct_bus'; open_system(modelName); set_param(modelName,'CovMetricStructuralLevel','MCDC','RecordCoverage','on');
选择具有与 upper GE input 模块相同模块类型的模块来添加过滤器规则。
type = get_param('slcoverage_lct_bus/slCounter/upper GE input','BlockType'); bl = slcoverage.BlockSelector(slcoverage.BlockSelectorType.BlockType,type);
创建一个过滤器对象,根据选择器创建规则,并将规则添加到过滤器中。
filt = slcoverage.Filter;
rule = slcoverage.FilterRule(bl,'Tested elsewhere',slcoverage.FilterMode.Exclude);
filt.addRule(rule);
选择一个模块实例并将该模块实例的规则添加到过滤器。该规则使用默认过滤模式 Justify。
id = Simulink.ID.getSID('slcoverage_lct_bus/slCounter/And'); bl = slcoverage.BlockSelector(slcoverage.BlockSelectorType.BlockInstance,id); rule = slcoverage.FilterRule(bl,'Edge case'); filt.addRule(rule);
将过滤器保存为 blfilter。仿真代码覆盖率模型。将过滤器文件作为值添加到生成的 filter 对象的 cvdata 属性中。然后生成覆盖率报告。
filt.save('blfilter'); csim = cvsim(modelName); csim.filter = 'blfilter'; cvhtml('cov',csim);
检查 HTML 报告以查看有关您添加规则的模块的信息。
此示例显示如何使用 slcoverage.BlockSelector 类获取 MATLAB® 函数的选择器。
示例模型 slvnvdemo_eml_model_coverage_demo 包含一系列 MATLAB Function 模块。其中一个 MATLAB Function 模块调用一个名为 slcoverageExternalFile.m 的外部函数。
首先加载模型并生成覆盖率结果。
modelName = 'slvnvdemo_eml_model_coverage_demo';
load_system(modelName)
covData = cvsim(modelName);
由于模型使用外部函数,覆盖率结果在 cv.cvdatagroup 对象中返回。使用 cv.cvdatagroup.get 类方法提取包含 cvdata 函数结果的 slcoverageExternalFile 对象。
functionCov = get(covData,'slcoverageExternalFile');
要从覆盖率报告中排除整个函数,请使用排除过滤器。首先,使用 slcoverage.BlockSelector 类为外部 MATLAB 函数 slcoverageExternalFile.m 创建一个选择器。正确的 BlockSelectorType 枚举用法是 BlockInstance。
sel = slcoverage.BlockSelector(... slcoverage.BlockSelectorType.BlockInstance,... 'slcoverageExternalFile.m');
创建一个空的 slcoverage.Filter 对象。
filt = slcoverage.Filter;
使用 slcoverage.FilterRule 类创建排除过滤器规则。使用您创建的选择器、过滤函数的理由以及 slcoverage.FilterMode.Exclude 的过滤器类型。
rule = slcoverage.FilterRule(sel,'Exclude function demo',... slcoverage.FilterMode.Exclude);
将过滤器规则添加到过滤器对象,命名过滤器,并将其保存到文件。
addRule(filt,rule); setFilterName(filt,'mfileFilter'); setFilterDescription(filt,'Demo exclusion filter for external m-file'); save(filt,'externalFileFilter')
将过滤器文件应用于包含函数 slcoverageExternalFile.m 的覆盖率结果的 cvdata 对象。
functionCov.filter = 'externalFileFilter';
创建覆盖率报告并观察函数 slcoverageExternalFile 现在在摘要中没有报告覆盖率数据,如果点击函数名称打开函数报告,您会看到从覆盖率分析中过滤的对象下列出的 slcoverageExternalFile。
cvhtml('covReport',covData);
版本历史记录
在 R2017b 中推出
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
选择网站
选择网站以获取翻译的可用内容,以及查看当地活动和优惠。根据您的位置,我们建议您选择:。
您也可以从以下列表中选择网站:
如何获得最佳网站性能
选择中国网站(中文或英文)以获得最佳网站性能。其他 MathWorks 国家/地区网站并未针对您所在位置的访问进行优化。
美洲
- América Latina (Español)
- Canada (English)
- United States (English)
欧洲
- 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)