slcoverage.BlockSelector 类
命名空间: slcoverage
选择覆盖率过滤器的模块
创建对象
输入参量
type
— 模块选择器类型
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 转移。
示例: slcoverage.BlockSelectorType.Transition
element
— 要选择的模型元素
属性名称 | 句柄 | Simulink® ID
要选择的模型元素,指定为元素的属性名称、其句柄或其 Simulink 标识符。对选择实例的选择器类型使用句柄或 ID。使用属性名称(例如模块的 'BlockType'
属性的值)来选择多个模型元素。
示例: 'slcoverage_lct_bus:18'
, 'RelationalOperator'
属性:
- SetAccess
受保护
数据类型: char
| string
| handle
| integer
属性
ConstructorCode
— 用于创建此选择器对象的代码
字符数组
用于创建此选择器对象的代码,以字符向量形式返回。
属性:
GetAccess | public |
SetAccess | 受保护 |
Description
— 选择器的描述
字符向量
选择器的描述,以字符向量形式返回。Simulink Coverage™ 根据选择器创建描述。
属性:
GetAccess | public |
SetAccess | 受保护 |
Id
— 模型元素标识符
Simulink ID (默认) | 属性 | 句柄
模型元素标识符,指定为元素的属性名称、元素的句柄或元素的 Simulink 标识符。对选择实例的选择器类型使用句柄或 ID。使用属性名称(例如模块的 'BlockType'
属性的值)来选择多个模型元素。
属性
SetAccess | 受保护 |
数据类型: char
| string
| handle
| integer
Type
— 模块选择器类型
slcoverage.BlockSelectorType
值
选择器类型,以以下 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
。仿真代码覆盖率模型。将过滤器文件作为值添加到生成的 cvdata
对象的 filter
属性中。然后生成覆盖率报告。
filt.save('blfilter'); csim = cvsim(modelName); csim.filter = 'blfilter'; cvhtml('cov',csim);
检查 HTML 报告以查看有关您添加规则的模块的信息。
获取 MATLAB 函数的选择器
此示例显示如何使用 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
类方法提取包含 slcoverageExternalFile
函数结果的 cvdata
对象。
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 命令
您点击的链接对应于以下 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)