Пакет: ModelAdvisor
Задает объекты детали результата
В функции обратного вызова проверки объекты ModelAdvisor.ResultDetail
создаются для каждого элемента модели, возвращенного API find_system()
, таким как набор блоков, которые нарушают проверку.
Объекты ResultDetailObjs
сохранены как свойство ResultDetails
класса ModelAdvisor.Check
.
Этот пример показывает детали результата, которые соответствуют выполнению проверки "Проверка, появляются ли имена блока ниже блоков" в модели slvnvdemo_mdladv
в качестве примера. Чтобы рассмотреть определение проверки, откройте файл sl_customization.m
из модели в качестве примера и смотрите пример кода для ModelAdvisor.Check('com.mathworks.sample.Check0')
.
Из модели slvnvdemo_mdladv
в качестве примера откройте файл sl_customization.m
. В функции обратного вызова проверки API find_system()
возвращает элементы модели в 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
для каждого элемента модели, возвращенного API find_system
. Когда violationBlks
пуст, набор ElementResults
состоит из отдельного объекта. Пары Name,Value
задают набор для ненарушенной проверки. Для этого типа набора метод Simulink.ModelAdvisor.setCheckResultStatus(true)
указывает, что проверка не нарушена и отображает Passed
на Model Advisor.
В этом примере кода API find_system
не идентифицирует блоки, имя которых появляется ниже блока, поэтому 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.'
Когда API find_system
возвращает список элементов модели, которые соответствуют заданным критериям, класс ModelAdvisor.ResultDetail
создает объект ResultDetailObjs
для каждого элемента в violationBlks
. Пары Name,Value
задают ElementResults
как набор объектов, которые нарушают проверку. Для этого набора метод Simulink.ModelAdvisor.setCheckResultStatus(false)
указывает, что проверка нарушена и отображает Warning
или Failed
на Model Advisor. Метод Simulink.ModelAdvisor.setActionEnable(true)
включает способности устранить проблему нарушения проверки от Model Advisor.
В этом примере кода API find_system
возвращает список блоков, имя которых появляется ниже блока. 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');
ModelAdvisor.Check.ResultDetails
| ModelAdvisor.Class.setResultDetails