exponenta event banner

slcoverage.Close Selector класс

Пакет: 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 ® элемента модели.

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

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

Пример: 1

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

Пример: 2

Свойства

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

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

Признаки

SetAccess

защищенный

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

Признаки

SetAccess

защищенный

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

Идентификатор элемента модели, возвращаемый как символьный вектор идентификатора Simulink или дескриптора.

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

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

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

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

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

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

Продукция

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

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

Методы

Общедоступные методы

allSelectorsСелекторы для модели или элемента кода

Примеры

свернуть все

В этом примере показано, как выбрать метрику и добавить правило, использующее эту метрику. В этом примере создается правило для обоснования неудовлетворенного решения для блока Насыщенность.

Открытие модели и включение анализа покрытия

Загрузите модель в память.

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% покрытия принятия решения. Если вы не хотите, чтобы текущие тесты выполняли этот результат, вы можете обосновать результат, чтобы он больше не считался отсутствующим покрытием.

В этом примере мы оправдываем false решения по итогам input > lower limit цель решения в блоке Насыщение.

Выравнивание отсутствующей цели условия

MetricSelector объекты принимают путь блока или маркер блока в качестве второго ввода. Получение дескриптора блока насыщенности с помощью getSimulinkBlockHandle.

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

Поскольку оправдываемая цель является результатом решения, первым вводом в конструктор выбора метрики является slcoverage.MetricSelectorType.DecisionOutcome. Второй вход является дескриптором блока. Последние два показателя представляют собой индекс цели, подлежащей обоснованию, и индекс результатов этой цели, соответственно.

Потому что input > lower limit цель принятия решения - первая цель для блока Насыщения, ее целевой индекс - 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 объект.

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

    75

cvhtml('covReportFiltered',covData)

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

Представлен в R2017b