Класс: 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.
возвращает все пользовательские селекторы C/C++ кода для sel = slcoverage.CodeSelector.allSelectors(element)element.
, где sel = slcoverage.CodeSelector.allSelectors(element,Name,Value)element модель и Name,Value задает режим симуляции, возвращает все пользовательские селекторы C/C++ кода для модели в заданном режиме симуляции.
возвращает все метрические селекторы для sel = slcoverage.MetricSelector.allSelectors(element)element.
возвращает все селекторы S-функции для sel = slcoverage.SFcnSelector.allSelectors(element)element.
возвращает селекторы для sel = slcoverage.Selector.allSelectors(element,Name,Value)element, с дополнительными опциями, заданными одним или несколькими Name,Value парные аргументы.
element — Элемент модели, чтобы выбратьЭлемент модели, чтобы выбрать в виде указателя или элемента модели Simulink® идентификатор.
Пример: 'sldemo_lct_bus:18'
Задайте дополнительные разделенные запятой пары Name,Value аргументы. Name имя аргумента и Value соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.
'Type',slcoverage.BlockSelectorType.BlockInstance,'Description','F outcome'Type — Селекторное улучшение типаslcoverage.BlockSelectorType значение | slcoverage.CodeSelectorType значение | slcoverage.MetricSelectorType значение | slcoverage.SFcnSelectorType значениеСелекторное улучшение типа, заданное как один из 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.
Description — Текст описания, чтобы соответствоватьТекст описания, чтобы соответствовать для селектора, который вы хотите возвратить в виде вектора символов или строки. Например, если вы хотите возвратить только селекторы, которые включают текст F outcome в описании используйте этот синтаксис:
s = slcoverage.Selector.allSelectors(id,'Description','F outcome')
SimulationMode — Режим SimulationРежим Simulation, чтобы запуститься при выборе фильтров кода, вводимых как одно из следующего:
| Объектная спецификация | Описание |
|---|---|
| Извлеките селекторы кода для пользовательского кода в нормальной симуляции, такие как пользовательский код, названный от блока C Caller или диаграммы Stateflow. |
| Извлеките селекторы кода для кода, сгенерированного в Симуляции в режиме Loop (SIL) и селекторах кода для интерфейса топ-модели кода |
| Извлеките селекторы кода для кода, сгенерированного в Процессоре в режиме Loop (PIL) и селекторах кода для интерфейса топ-модели кода |
| Если код режима SIL существует, селекторы извлечения кода для кода, сгенерированного в режиме SIL и селекторах извлечения кода для интерфейса топ-модели кода; в противном случае извлеките селекторы кода для кода, сгенерированного в режиме PIL, и извлеките селекторы кода для интерфейса топ-модели кода |
| Извлеките селекторы кода для интерфейса модели - ссылки кода в режиме SIL |
| Извлеките селекторы кода для интерфейса модели - ссылки кода в режиме PIL |
| Если код режима SIL существует, селекторы извлечения кода для интерфейса модели - ссылки кода в режиме SIL, если модель находится в режиме SIL; в противном случае извлеките селекторы кода для интерфейса модели - ссылки кода в режиме PIL |
sel — Селекторы для элемента модели или кодаSelector объектыСелекторы для элемента модели или кода, возвращенного как массив 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)'
slcoverage.MetricSelector | slcoverage.BlockSelector | slcoverage.CodeSelector | slcoverage.SFcnSelector | slcoverage.Selector
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.