slcoverage.MetricSelector 类
命名空间: slcoverage
选择覆盖率过滤器的度量标准
描述
使用 slcoverage.MetricSelector 类的对象来指定覆盖率过滤器规则的度量选择准则。
slcoverage.MetricSelector 类是 handle 类。
创建对象
描述
在目标索引 sel = slcoverage.MetricSelector(type,element,objIndex,outIndex)type 和结果索引 element 处为指定模型元素 objIndex 创建类型为 outIndex 的度量选择器对象。
您只能为度量选择器创建一条申述规则。有关申述和排除之间的区别的更多信息,请参阅覆盖率过滤。
有关报告中生成的条件和决策覆盖率表的更多信息,请参阅顶层模型覆盖率报告。
输入参量
度量选择器类型,指定为:
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 | 受保护 |
选择器类型,返回为 ConditionOutcome、DecisionOutcome、MCDCOutcome、RelationalBoundaryOutcome 或 SaturationOverflowOutcome。
属性:
GetAccess | public |
SetAccess | 受保护 |
方法
allSelectors | 模型或代码元素的选择器 |
示例
此示例显示如何选择一个度量并添加使用该度量的规则。在此示例中,您创建一条规则来对 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);

decisioninfo 和 cvhtml 都显示出相同的结果,即 50% 的决策覆盖率。如果您不打算让当前的测试得出这个结果,那么您可以申述该结果,以便不再将其报告为缺失覆盖率。
在这个示例中,我们申述了 Saturation 模块中 false 决策目标的 input > lower limit 决策结果。
申述缺失条件目标
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 方法将过滤器保存到过滤器文件。然后通过将 cvdata 属性分配给新的过滤器文件,将过滤器文件应用于 filter 对象。
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 中推出您可以使用 slcoverage.MetricSelectorType.MCDCOutcome 来申述单独修正条件/决策覆盖率 (MCDC) 结果,而无需排除整个表达式。
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)