allSelectors

Класс: slcoverage.BlockSelector, slcoverage.CodeSelector, slcoverage.Selector, slcoverage.MetricSelector, slcoverage.SFcnSelector
Пакет: slcoverage

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

Синтаксис

sel = slcoverage.Selector.allSelectors(element)
sel = slcoverage.BlockSelector.allSelectors(element)
sel = slcoverage.CodeSelector.allSelectors(element)
sel = slcoverage.CodeSelector.allSelectors(element,Name,Value)
sel = slcoverage.MetricSelector.allSelectors(element)
sel = slcoverage.SFcnSelector.allSelectors(element)
sel = slcoverage.Selector.allSelectors(element,Name,Value)

Описание

sel = slcoverage.Selector.allSelectors(element) возвращает все селекторы для элемента модели.

sel = slcoverage.BlockSelector.allSelectors(element) возвращает все селекторы блока для element.

sel = slcoverage.CodeSelector.allSelectors(element) возвращает все пользовательские селекторы C/C++ кода для element.

sel = slcoverage.CodeSelector.allSelectors(element,Name,Value) , где element модель и Name,Value задает режим симуляции, возвращает все пользовательские селекторы C/C++ кода для модели в заданном режиме симуляции.

sel = slcoverage.MetricSelector.allSelectors(element) возвращает все метрические селекторы для element.

sel = slcoverage.SFcnSelector.allSelectors(element) возвращает все селекторы S-функции для element.

sel = slcoverage.Selector.allSelectors(element,Name,Value) возвращает селекторы для element, с дополнительными опциями, заданными одним или несколькими Name,Value парные аргументы.

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

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

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

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

Аргументы name-value

Задайте дополнительные разделенные запятой пары Name,Value аргументы. Name имя аргумента и Value соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

Пример: 'Type',slcoverage.BlockSelectorType.BlockInstance,'Description','F outcome'

Селекторное улучшение типа, заданное как один из slcoverage.BlockSelectorTypeslcoverage.CodeSelectorType, slcoverage.MetricSelectorType, или slcoverage.SFcnSelectorType значения. Возможные значения:

  • Типы селектора блока:

    • slcoverage.BlockSelectorType.BlockInstance — Экземпляр блока.

    • 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.CodeSelectorType.File — Пользовательское имя файла кода C or C++.

    • slcoverage.CodeSelectorType.Function — Пользовательское имя функции кода C or C++.

    • slcoverage.CodeSelectorType.Decision — Пользовательское решение кода C or C++.

    • slcoverage.CodeSelectorType.Condition — Пользовательское условие кода C or C++.

    • slcoverage.CodeSelectorType.DecisionOutcome — Пользовательский результат решения кода C or C++.

    • slcoverage.CodeSelectorType.ConditionOutcome — Пользовательский результат условия кода C or C++.

    • slcoverage.CodeSelectorType.MCDCOutcome — Пользовательский код C or C++ результат MCDC.

    • slcoverage.CodeSelectorType.RelationalBoundaryOutcome — Пользовательский код C or C++ реляционный граничный результат.

  • Метрические селекторные типы:

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

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

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

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

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

  • Типы селектора S-функции:

    • slcoverage.SFcnSelectorType.SFcnName выбирает заданную S-функцию.

    • slcoverage.SFcnSelectorType.SFcnInstanceCppFileName выбирает данные о покрытии в файле сгенерированного кода для этого блока.

    • slcoverage.SFcnSelectorType.SFcnInstanceCppFunction выбирает функцию.

    • slcoverage.SFcnSelectorType.SFcnInstanceCppCondition выбирает результат условия Блока s-function.

    • slcoverage.SFcnSelectorType.SFcnInstanceCppDecision выбирает результат решения Блока s-function.

Текст описания, чтобы соответствовать для селектора, который вы хотите возвратить в виде вектора символов или строки. Например, если вы хотите возвратить только селекторы, которые включают текст F outcome в описании используйте этот синтаксис:

s = slcoverage.Selector.allSelectors(id,'Description','F outcome')

Режим Simulation, чтобы запуститься при выборе фильтров кода, вводимых как одно из следующего:

Объектная спецификацияОписание

'normal' (значение по умолчанию)

Извлеките селекторы кода для пользовательского кода в нормальной симуляции, такие как пользовательский код, названный от блока C Caller или диаграммы Stateflow.

'sil'

Извлеките селекторы кода для кода, сгенерированного в Симуляции в режиме Loop (SIL) и селекторах кода для интерфейса топ-модели кода

'pil'

Извлеките селекторы кода для кода, сгенерированного в Процессоре в режиме Loop (PIL) и селекторах кода для интерфейса топ-модели кода

'xil'

Если код режима SIL существует, селекторы извлечения кода для кода, сгенерированного в режиме SIL и селекторах извлечения кода для интерфейса топ-модели кода; в противном случае извлеките селекторы кода для кода, сгенерированного в режиме PIL, и извлеките селекторы кода для интерфейса топ-модели кода

'modelrefsil'

Извлеките селекторы кода для интерфейса модели - ссылки кода в режиме SIL

'modelrefpil'

Извлеките селекторы кода для интерфейса модели - ссылки кода в режиме PIL

'modelrefxil'

Если код режима SIL существует, селекторы извлечения кода для интерфейса модели - ссылки кода в режиме SIL, если модель находится в режиме SIL; в противном случае извлеките селекторы кода для интерфейса модели - ссылки кода в режиме PIL

Выходные аргументы

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

Селекторы для элемента модели или кода, возвращенного как массив Selector объекты.

Примеры

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

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

Загрузите модель и установите настройки покрытия

modelName = 'slvnvdemo_covfilt';
load_system(modelName);
set_param(modelName,'CovEnable','on','CovMetricStructuralLevel','MCDC');

Во-первых, получите указатель блока для И блок.

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

Получите селекторы с помощью указателя блока.

sel = slcoverage.Selector.allSelectors(id)
sel = 

  1x10 heterogeneous Selector (BlockSelector, MetricSelector) array with properties:

    Description
    Type
    Id
    ConstructorCode

Блок имеет десять селекторов. Можно индексировать в каждого, чтобы видеть их содержимое. В этом примере вы хотите выровнять по ширине шестой селектор.

sel(6)
ans = 

  MetricSelector with properties:

     ObjectiveIndex: 2
       OutcomeIndex: 2
        Description: 'T outcome of input > upper limit in Saturate block "Saturation"'
               Type: DecisionOutcome
                 Id: 'slvnvdemo_covfilt:5'
    ConstructorCode: 'slcoverage.MetricSelector(slcoverage.MetricSelectorType.DecisionOutcome, 'slvnvdemo_covfilt:5', 2, 2)'

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

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

Сохраните фильтр и сгенерируйте отчет покрытия.

filt.save('metrfilter');
csim = cvsim(modelName);
csim.filter = 'metrfilter';
cvhtml('cov',csim,'-sRT=0');

В этом примере показано, как получить селектор типом и описанием. В этом примере вы получаете все селекторы для Ложных результатов И блок, типом которого является ConditionOutcome.

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

modelName = 'slcoverage_lct_bus';
load_system(modelName);
load slcoverage_lct_data.mat

slcoverage_lct_bus модель имеет S-функцию. Создайте S-функцию при помощи legacy_code.

def = legacy_code('initialize');
def.SFunctionName = 'slcoverage_sfun_counterbus';
def.OutputFcnSpec = 'void counterbusFcn(COUNTERBUS u1[1], int32 u2, COUNTERBUS y1[1], int32 y2[1])';
def.HeaderFiles   = {'counterbus.h'};
def.SourceFiles   = {'counterbus.c'};
def.Options.supportCoverage = true;
legacy_code('generate_for_sim', def);
### Start Compiling slcoverage_sfun_counterbus
mex -I/tmp/BR2021bd_1724986_151598/publish_examples3/tp438098df/ex13162396 -c /tmp/BR2021bd_1724986_151598/publish_examples3/tp6b5535de_eb1d_4786_ab8c_500c9fb5b054/counterbus.c -outdir /tmp/BR2021bd_1724986_151598/publish_examples3/tpa40de959_15e1_49fd_8106_ab72ddb88489
Building with 'gcc'.
MEX completed successfully.
mex -I/tmp/BR2021bd_1724986_151598/publish_examples3/tp438098df/ex13162396 /tmp/BR2021bd_1724986_151598/publish_examples3/tp6b5535de_eb1d_4786_ab8c_500c9fb5b054/tp5691a3a7_bcb7_488c_952b_0cf1ac58d7d3.c /tmp/BR2021bd_1724986_151598/publish_examples3/tpa40de959_15e1_49fd_8106_ab72ddb88489/counterbus.o -L/mathworks/devel/bat/BR2021bd/build/matlab/bin/glnxa64 -lmwsl_sfcn_cov_bridge -output slcoverage_sfun_counterbus
Building with 'gcc'.
MEX completed successfully.
mex -I/tmp/BR2021bd_1724986_151598/publish_examples3/tp438098df/ex13162396 -c /tmp/BR2021bd_1724986_151598/publish_examples3/tp438098df/ex13162396/counterbus.c -outdir /tmp/BR2021bd_1724986_151598/publish_examples3/tpa40de959_15e1_49fd_8106_ab72ddb88489
Building with 'gcc'.
MEX completed successfully.
mex -I/tmp/BR2021bd_1724986_151598/publish_examples3/tp438098df/ex13162396 /tmp/BR2021bd_1724986_151598/publish_examples3/tp6b5535de_eb1d_4786_ab8c_500c9fb5b054/slcoverage_sfun_counterbus.c /tmp/BR2021bd_1724986_151598/publish_examples3/tp6b5535de_eb1d_4786_ab8c_500c9fb5b054/tp90218a34_f46f_4c79_aef2_d9b7c5968cba.c /tmp/BR2021bd_1724986_151598/publish_examples3/tp6b5535de_eb1d_4786_ab8c_500c9fb5b054/tp64ff0c6f_ea8a_43b1_9512_c3c552246c3a.c /tmp/BR2021bd_1724986_151598/publish_examples3/tpa40de959_15e1_49fd_8106_ab72ddb88489/counterbus.o -L/mathworks/devel/bat/BR2021bd/build/matlab/bin/glnxa64 -lmwsl_sfcn_cov_bridge -output slcoverage_sfun_counterbus
Building with 'gcc'.
MEX completed successfully.
### Finish Compiling slcoverage_sfun_counterbus
### Exit

Получите ложные селекторы условия результата для И блок путем поиска описаний, которые включают F.

id = getSimulinkBlockHandle([modelName,'/slCounter/And']);
sel = slcoverage.Selector.allSelectors(id, ...
         'Type',slcoverage.MetricSelectorType.ConditionOutcome, ...
         'Description','F')
sel = 

  1x2 MetricSelector array with properties:

    ObjectiveIndex
    OutcomeIndex
    Description
    Type
    Id
    ConstructorCode

Посмотрите на код конструктора для двух селекторов, которые были возвращены.

sel.ConstructorCode
ans =

    'slcoverage.MetricSelector(slcoverage.MetricSelectorType.ConditionOutcome, 'slcoverage_lct_bus:23', 1, 2)'


ans =

    'slcoverage.MetricSelector(slcoverage.MetricSelectorType.ConditionOutcome, 'slcoverage_lct_bus:23', 2, 2)'

Введенный в R2017b