Пакет: 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');