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