Main Content

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

slcoverage.MetricSelector 类

命名空间: slcoverage

选择覆盖率过滤器的度量标准

描述

使用 slcoverage.MetricSelector 类的对象来指定覆盖率过滤器规则的度量选择准则。

slcoverage.MetricSelector 类是 handle 类。

创建对象

描述

sel = slcoverage.MetricSelector(type,element,objIndex,outIndex) 在目标索引 objIndex 和结果索引 outIndex 处为指定模型元素 element 创建类型为 type 的度量选择器对象。

您只能为度量选择器创建一条申述规则。有关申述和排除之间的区别的更多信息,请参阅覆盖率过滤

有关报告中生成的条件和决策覆盖率表的更多信息,请参阅顶层模型覆盖率报告

输入参量

全部展开

度量选择器类型,指定为:

  • slcoverage.MetricSelectorType.ConditionOutcome 对象选择条件度量目标结果。

  • slcoverage.MetricSelectorType.DecisionOutcome 对象选择决策度量目标结果。

  • slcoverage.MetricSelectorType.MCDCOutcome 对象选择 MCDC 度量目标结果。

  • slcoverage.MetricSelectorType.RelationalBoundaryOutcome 对象选择与关系边界结果相关的结果度量。

  • slcoverage.MetricSelectorType.SaturationOverflowOutcome 对象选择与整数溢出结果饱和度相关的结果度量。

要选择的模型元素,指定为模型元素的句柄或 Simulink 标识符。

示例: 'slcoverage_lct_bus:18'

您想要过滤的目标的索引,指定为整数。

示例: 1

您想要过滤的结果的索引,指定为整数。

示例: 2

属性

全部展开

用于创建此选择器对象的代码,以字符向量形式返回。

属性:

GetAccess
public
SetAccess
受保护

选择器的描述,以字符向量形式返回。Simulink Coverage™ 根据选择器创建描述。

属性:

GetAccess
public
SetAccess
受保护

模型元素的标识符,以 Simulink ID 的字符向量或句柄形式返回。

属性:

GetAccess
public
SetAccess
受保护

此选择器的目标索引,以整数形式返回。

属性:

GetAccess
public
SetAccess
受保护

此选择器的结果索引,以整数形式返回。

属性:

GetAccess
public
SetAccess
受保护

选择器类型,返回为 ConditionOutcomeDecisionOutcomeMCDCOutcomeRelationalBoundaryOutcomeSaturationOverflowOutcome

属性:

GetAccess
public
SetAccess
受保护

方法

全部展开

示例

全部折叠

此示例显示如何选择一个度量并添加使用该度量的规则。在此示例中,您创建一条规则来对 Saturation 模块中一条未满足的决策进行申述。

打开模型并启用覆盖率分析

将模型加载到内存中。

modelName = 'slvnvdemo_covfilt';
load_system(modelName);

使用 Simulink.SimulationInput 对象来配置模型的覆盖率。

covSet = Simulink.SimulationInput(modelName);
covSet = covSet.setModelParameter('CovEnable','on');
covSet = covSet.setModelParameter('CovMetricStructuralLevel','MCDC');
covSet = covSet.setModelParameter('CovSFcnEnable','on');
covSet = covSet.setModelParameter('StopTime','20');
covSet = covSet.setModelParameter('CovSaveSingleToWorkspaceVar','on');
covSet = covSet.setModelParameter('CovSaveName','covData');

使用 SimulationInput 对象作为输入来仿真模型。

simOut = sim(covSet);

在应用过滤器之前查看覆盖率结果。您可以使用 decisioninfo 访问覆盖率,也可以使用 cvhtml 查看 HTML 报告。

covInitial = decisioninfo(covData,[modelName,'/Saturation']);
percentInitial = 100 * covInitial(1)/covInitial(2)
percentInitial =

    50

cvhtml('covReportInitial',covData);

decisioninfocvhtml 都显示出相同的结果,即 50% 的决策覆盖率。如果您不打算让当前的测试得出这个结果,那么您可以申述该结果,以便不再将其报告为缺失覆盖率。

在这个例子中,我们申述了 Saturation 模块中 input > lower limit 决策目标的 false 决策结果。

证明缺失条件目标

MetricSelector 对象接受模块路径或模块句柄作为第二个输入。使用 getSimulinkBlockHandle 获取 Saturation 模块的模块句柄。

id = getSimulinkBlockHandle([modelName,'/Saturation']);

因为被证明的目标是一个决策结果,所以度量选择器构造函数的第一个输入是 slcoverage.MetricSelectorType.DecisionOutcome。第二个输入是模块句柄。最后两个分别是需要申述的目标的索引和该目标的结果的索引。

因为 input > lower limit 决策目标是 Saturation 模块的第一个目标,所以它的目标索引是 1。因为这个目标的 false 结果是第一个结果,所以它的结果索引也是 1。因此,最后两个输入是 1,1

metr = slcoverage.MetricSelector(slcoverage.MetricSelectorType.DecisionOutcome,id,1,1);

创建过滤器和规则。在这种情况下,我们使用默认的过滤模式申述。然后使用 addRule 方法将规则添加到过滤器。

filt = slcoverage.Filter;
rule = slcoverage.FilterRule(metr,'Expected result');
filt.addRule(rule);

使用 save 方法将过滤器保存到过滤器文件。然后通过将 filter 属性分配给新的过滤器文件,将过滤器文件应用于 cvdata 对象。

filt.save('metrfilter');
covData.filter = 'metrfilter';

使用新过滤的 cvdata 对象重新生成 Saturation 模块的覆盖率结果。

covFiltered = decisioninfo(covData,[modelName,'/Saturation']);
percentInitial = 100 * covFiltered(1)/covFiltered(2)
percentInitial =

    75

cvhtml('covReportFiltered',covData);

在 HTML 报告中,缺失的决策结果被突出显示,以表明已对其进行申述。Saturation 模块的决策覆盖率现在为 75%。

版本历史记录

在 R2017b 中推出

全部展开