slcoverage.MetricSelector class

Пакет: slcoverage

Выберите метрический критерий фильтра покрытия

Описание

Используйте объект slcoverage.MetricSelector класс, чтобы задать метрические критерии выбора для покрытия фильтрует правило.

slcoverage.MetricSelector классом является handle класс.

Конструкция

sel = slcoverage.MetricSelector(type,element,objIndex,outIndex) создает метрический селекторный объект типа type для указанного элемента модели element в объективном индексе objIndex и результат индексирует outIndex.

Можно только создать выровнять по ширине правило для метрического селектора. Для получения дополнительной информации о различии между выравниванием и исключением, смотрите, что Покрытие Фильтрует.

Для получения дополнительной информации об условии и таблицах Decision Coverage, произведенных в отчете, см. Отчет Покрытия модели Верхнего уровня.

Входные параметры

развернуть все

Метрический селекторный тип в виде:

  • slcoverage.MetricSelectorType.ConditionOutcome объекты выбирают метрику условия объективные результаты.

  • slcoverage.MetricSelectorType.DecisionOutcome объекты выбирают метрику решения объективные результаты.

  • slcoverage.MetricSelectorType.MCDCOutcome объекты выбирают метрику MCDC объективные результаты.

  • slcoverage.MetricSelectorType.RelationalBoundaryOutcome объекты выбирают метрики результата, связанные с реляционными граничными результатами.

  • slcoverage.MetricSelectorType.SaturationOverflowOutcome объекты выбирают метрики результата, связанные с насыщением на результатах целочисленного переполнения.

Элемент модели, чтобы выбрать в виде указателя или идентификатора Simulink® элемента модели.

Пример: 'sldemo_lct_bus:18'

Индекс цели, которую вы хотите отфильтровать в виде целого числа.

Пример 1

Индекс результата, который вы хотите отфильтровать в виде целого числа.

Пример 2

Свойства

развернуть все

Код, используемый, чтобы создать этот селекторный объект, возвратился как вектор символов.

Атрибуты

SetAccess

защищенный

Описание селектора, возвращенного как вектор символов. Simulink Coverage™ создает описание на основе селектора.

Атрибуты

SetAccess

защищенный

Это свойство доступно только для чтения.

Идентификатор элемента модели, возвращенного как вектор символов ID Simulink или указателя.

Это свойство доступно только для чтения.

Индекс цели для этого селектора, возвращенного как целое число.

Это свойство доступно только для чтения.

Индекс результата для этого селектора, возвращенного как целое число.

Это свойство доступно только для чтения.

Селекторный тип, возвращенный как ConditionOutcome, DecisionOutcome, MCDCOutcome, RelationalBoundaryOutcome, или SaturationOverflowOutcome.

Выходные параметры

развернуть все

Селекторный объект, возвращенный как slcoverage.MetricSelector объект или массив slcoverage.MetricSelector объекты.

Методы

Открытые методы

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, или можно просмотреть отчет HTML с помощью cvhtml.

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

    50

cvhtml('covReportInitial',covData)

Оба decisioninfo и cvhtml покажите тот же результат 50% Decision Coverage. Если вы не предназначаете свои текущие тесты, чтобы осуществить этот результат, можно выровнять по ширине результат, таким образом, об этом больше не сообщают как недостающее покрытие.

В этом примере мы выравниваем по ширине false результат решения input > lower limit цель решения в блоке Saturation.

Выровняйте по ширине Недостающую цель условия

MetricSelector объекты принимают блок path или указатель блока как второй вход. Получите указатель блока блока Saturation при помощи getSimulinkBlockHandle.

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';

Регенерируйте результаты покрытия для блока Saturation с помощью нового отфильтрованного cvdata объект.

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

    75

cvhtml('covReportFiltered',covData)

В отчете HTML недостающий результат решения подсвечен, чтобы указать, что это выравнивается по ширине. Decision Coverage для блока Saturation - теперь 75%.

Введенный в R2017b