Класс: 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.BlockSelectorType
slcoverage.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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.