Пакет: ModelAdvisor
Задает объекты детали результата
В функции обратного вызова проверки, ModelAdvisor.ResultDetail
объекты создаются для каждого элемента модели, возвращенного find_system()
API, такой как набор блоков, которые нарушают проверку.
ResultDetailObjs
объекты сохранены как ResultDetails
свойство ModelAdvisor.Check
класс.
Этот пример показывает детали результата, которые соответствуют выполнению проверки "Проверка, появляются ли имена блока ниже блоков" в slvnvdemo_mdladv
модель в качестве примера. Чтобы рассмотреть определение проверки, откройте sl_customization.m
файл из модели в качестве примера и видит пример кода для ModelAdvisor.Check('com.mathworks.sample.Check0')
.
От slvnvdemo_mdladv
модель в качестве примера, открытая sl_customization.m
файл. В функции обратного вызова проверки, find_system()
API возвращает элементы модели в system
это соответствует заданным критериям. В этом примере функция возвращает блоки, имя которых не появляется ниже блока (violationBlks
).
% find all blocks whose name does not appear below blocks violationBlks = find_system('System','Type','block','NamePlacement','alternate','ShowName', 'on');
ModelAdvisor.ResultDetail
создает ResultDetailObjs
для каждого элемента модели, возвращенного find_system
API. Когда violationBlks
пусто, ElementResults
набор состоит из отдельного объекта. Name,Value
пары задают набор для ненарушенной проверки. Для этого типа набора, Simulink.ModelAdvisor.setCheckResultStatus(true)
метод указывает, что проверка не нарушена и отображает Passed
на Model Advisor.
В этом примере кода, find_system
API не идентифицирует блоки, имя которых появляется ниже блока, поэтому ElementResults
обеспечивает информационное содержимое только.
% Results when no blocks % violate the check if isempty(violationBlks) ElementResults = ModelAdvisor.ResultDetail; ElementResults.IsInformer = true; ElementResults.Title = 'Identify blocks where the name is not displayed below the block.'; ElementResults.Information = 'Verifies that the name appears below the block.'; ElementResults.Description = 'Identify blocks where the name is not displayed below the block.'; ElementResults.Status = 'All blocks have names displayed below the block.'; mdladvObj.setCheckResultStatus(true);
Этот пример показывает ModelAdvisor.ResultDetail
свойства для ElementResults
когда проверка "Проверка, появляются ли имена блока ниже блоков", не нарушена.
ElementResults = ResultDetail with properties: IsInformer = 1 Description = 'Identify blocks where the name is not displayed below the block.' Title = 'Check whether block names appear below blocks' Information = 'Verifies that the name appears below the block.' Status = 'All blocks have names displayed below the block.'
Когда find_system
API возвращает список элементов модели, которые соответствуют заданным критериям, ModelAdvisor.ResultDetail
класс создает ResultDetailObjs
объект для каждого элемента в violationBlks
. Name,Value
пары задают ElementResults
как набор объектов, которые нарушают проверку. Для этого набора, Simulink.ModelAdvisor.setCheckResultStatus(false)
метод указывает, что проверка нарушена и отображает Warning
или Failed
на Model Advisor. Simulink.ModelAdvisor.setActionEnable(true)
метод включает способности устранить проблему нарушения проверки от Model Advisor.
В этом примере кода, find_system
API возвращает список блоков, имя которых появляется ниже блока. ElementResults
включает каждый ResultDetailObjs
объект, который нарушает проверку и предоставляет рекомендуемое сообщение действия для фиксации нарушения проверки.
% Create results when blocks violate the check else ElementResults(1,numel(violationBlks))=ModelAdvisor.ResultDetail; for i=1:numel(ElementResults) ElementResults(i).setData(violationBlks{i}); ElementResults.Title = 'Identify blocks where the name is not displayed below the block.'; ElementResults.Information = 'Verifies that the name appears below the block.'; ElementResults.Description = 'Identify blocks where the name is not displayed below the block.'; ElementResults.Status = 'The following blocks have names that do not display below the blocks:'; ElementResults.RecAction = 'Change the location such that the block name is below the block.'; end mdladvObj.setCheckResultStatus(false); mdladvObj.setActionEnable(true);
Этот пример показывает ModelAdvisor.ResultDetail
свойства для ElementResults
когда проверка "Проверка, появляются ли имена блока ниже блоков", нарушена.
ElementResults = ResultDetail with properties: IsInformer = 0; Description = 'Identify blocks where the name is not displayed below the block.'; Title = 'Check whether block names appear below blocks'; Information = 'Verifies that the name appears below the block.'; Status = 'The following blocks have names that do not display below the blocks:'; RecAction = 'Change the location such that the block name is below the block.'
ModelAdvisor.Check.setResultDetails
метод сопоставляет результаты с проверкой (CheckObj
).
% Associate the results with the check
CheckObj.setResultDetails([CheckObj.ResultDetails, ElementResults]);
После выполнения проверки можно просмотреть результаты в Model Advisor как набор, такой как рекомендуемым действием, блоком или подсистемой. Чтобы задать этот стиль отчета, задайте 'DetailStyle
'как стиль коллбэка в ModelAdvisor.Check.setCallbackFcn
метод.
% Define Model Advisor check "Check whether block names appear % below blocks". rec = ModelAdvisor.Check('com.mathworks.sample.Check0'); rec.Title = 'Check whether block names appear below blocks (recommended check style)'; rec.TitleTips = 'Example new style callback (recommended check style)'; rec.setCallbackFcn(@SampleNewCheckStyleCallback,'None','DetailStyle');