Main Content

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

slcoverage.BlockSelector 类

命名空间: slcoverage

选择覆盖率过滤器的模块

描述

为过滤器规则指定模块选择准则。

slcoverage.BlockSelector 类是 handle 类。

创建对象

描述

示例

sel = slcoverage.BlockSelector(type,element) 指定要创建过滤器规则的模型元素的类型并返回 slcoverage.BlockSelector 对象。

输入参量

全部展开

要选择的模型元素类型,指定为以下值之一:

  • 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
受保护

方法

全部展开

示例

全部折叠

选择多个要添加规则的模块以及一个要添加规则的模块实例。生成的过滤器有两个规则。您可以使用过滤器仿真代码覆盖率模型来查看效果。

打开模型。指定覆盖率设置并打开覆盖率记录。

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 报告以查看有关您添加规则的模块的信息。

此示例显示如何使用 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 中推出