Пакет: ModelAdvisor
Определяет объекты детализации результатов
Как часть функции обратного вызова проверки, ModelAdvisor.ResultDetail объекты создаются для каждого блока, find_system() API возвращается как нарушающий проверку. Чтобы связать эти объекты с ModelAdvisor.Check объект, используйте setResultDetails способ. The ModelAdvisor.ResultDetail объекты сохраняются как ResultDetails свойство ModelAdvisor.Check класс.
| setData | Связать идентификатор Simulink с объектом ModelAdvisor.ResultDetail |
В этом примере показаны подробные данные результата, которые соответствуют выполнению проверки Check whether block names appear below blocks в AdvisorCustomizationExample модель. Чтобы просмотреть файлы в этом примере, смотрите Создание и развертывание Пользовательского строения Model Advisor.
The defineDetailStyleCheck функция определения проверки содержит DetailStyleCallback проверяйте функцию обратного вызова. Чтобы вернуть элементы модели в system которые удовлетворяют заданным критериям, DetailStyleCallback функция использует find_system API. В этом примере find_system() API возвращает блоки, имя которых не отображается ниже блока (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 набор состоит из одного объекта. The Name,Value пары определяют набор для ненасыщенной проверки. Для этого типа набора, Simulink.ModelAdvisor.setCheckResultStatus(true) метод задает, что проверка не нарушена, и отображает Passed на Model Advisor.
В этой выборке кода, find_system API не идентифицирует блоки, имя которых находится ниже блока, поэтому ElementResults предоставляет только информационное содержимое.
if isempty(violationBlks) ElementResults = ModelAdvisor.ResultDetail; ElementResults.IsInformer = true; 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);
Когда find_system API возвращает список элементов модели, удовлетворяющих заданным критериям, ModelAdvisor.ResultDetail класс создает ResultDetailObjs объект для каждого элемента в violationBlks. The Name,Value пары задают ElementResults как набор объектов, нарушающих проверку. Для этого набора, Simulink.ModelAdvisor.setCheckResultStatus(false) метод задает, что проверка нарушена, и отображает Warning или Failed на Model Advisor. The Simulink.ModelAdvisor.setActionEnable(true) метод позволяет исправить проблему нарушения проверки из Model Advisor.
В этой выборке кода, find_system API возвращает список блоков, имя которых отображается под блоком. ElementResults включает в себя каждую ResultDetailObjs объект, нарушающий проверку и предоставляющий рекомендуемое сообщение о действии для устранения нарушения проверки.
else ElementResults(1,numel(violationBlks))=ModelAdvisor.ResultDetail; for i=1:numel(ElementResults) ElementResults(i).setData(violationBlks{i}); 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);
The ModelAdvisor.Check.setResultDetails метод связывает результаты с проверкой (CheckObj).
CheckObj.setResultDetails(ElementResults);
После выполнения проверки можно просмотреть результаты в Model Advisor как набор, например, с помощью рекомендуемого действия, блока или подсистемы. Чтобы определить этот стиль отчета, задайте 'DetailStyle'как стиль коллбэка в ModelAdvisor.Check.setCallbackFcn способ.
% Create ModelAdvisor.Check object and set properties. rec = ModelAdvisor.Check('com.mathworks.sample.detailStyle'); rec.Title = 'Check whether block names appear below blocks'; rec.TitleTips = 'Check position of block names'; rec.setCallbackFcn(@DetailStyleCallback,'None','DetailStyle');