主要内容

ModelAdvisor.Check

R2026b

创建自定义模型顾问检查

描述

使用 ModelAdvisor.Check 类定义显示在模型顾问树中的自定义检查,配置其回调函数和输入参数,并控制结果的显示方式。

创建对象

描述

check_obj = ModelAdvisor.Check(check_ID) 使用 check_ID 指定的标识符创建检查对象 check_obj。要在模型顾问树中显示检查,检查必须具有关联的 ModelAdvisor.Task 或 ModelAdvisor.Root 对象。

您可以在多个 ModelAdvisor.Task 对象中使用同一个 ModelAdvisor.Check 对象,从而允许您在模型顾问树的多个位置放置相同的检查。例如,检查隐藏信号解析显示在模型顾问树中的按产品 > Simulink 文件夹中和按任务 > 模型引用文件夹中。

当您在任务定义中使用检查时,以下规则适用:

  • 如果在检查定义函数和任务定义函数中均定义了检查的属性,则模型顾问仅显示任务定义中包含的信息。例如,如果使用 ModelAdvisor.Task.DisplayName 属性和 ModelAdvisor.Check.Title 属性定义检查的名称,模型顾问将显示 ModelAdvisor.Task.DisplayName 中提供的信息。

  • 如果在检查定义中定义了检查的属性,但没有在任务定义中定义,则任务将使用来自检查的属性。例如,如果使用 ModelAdvisor.Check.Title 属性在检查定义函数中定义检查的名称,并使用任务定义注册该检查,则模型顾问将显示 ModelAdvisor.Check.Title 中提供的信息。

  • 如果您在任务定义函数中定义检查的属性,但没有在检查定义函数中定义,则只要您向模型顾问注册的是任务而不是检查,模型顾问就会显示信息。例如,如果使用 ModelAdvisor.Task.DisplayName 属性而不是 ModelAdvisor.Check.Title 属性在任务定义中定义检查的名称,并且使用任务定义注册该检查,则模型顾问将显示 ModelAdvisor.Task.DisplayName 中提供的信息。

输入参量

全部展开

自定义模型顾问检查的唯一标识符。

属性

全部展开

指定用于检查模型或子系统的上下文。

  • None - 运行检查而不需要进行模型编译。

  • PostCompile - 在模型编译后运行检查。

  • PostCompileForCodeGen - 在针对代码生成编译模型后运行检查。

指定检查回调函数的句柄。

示例: {@checkFcn1, @checkFcn2}

指定回调函数的类型。

DetailStyle 回调函数使用详细结果收集回调函数,这是推荐的方法。此样式支持默认的模型顾问报告格式,因此您无需使用 ModelAdvisor.FormatTemplate 类或其他格式 API。它允许您按模块、子系统或建议的操作查看结果。该回调不返回输出参量,而是使用 Simulink.ModelAdvisor API 将结果直接存储在 CheckObj 对象中。检查定义需要使用 DetailStyle 关键字。

参量I/O 类型描述
system输入由模型顾问分析的模型或子系统的路径。
CheckObj输入ModelAdvisor.Check 对象

StyleOne 回调函数使用简单检查回调函数来指示模型是通过还是未通过检查,或者提供修复建议。您可使用模型顾问格式 API 来格式化结果。检查定义需要使用 StyleOne 关键字。

参量I/O 类型描述
system输入由模型顾问分析的模型或子系统的路径。
result输出MATLAB® 字符向量,支持模型顾问格式化 API 调用或嵌入式 HTML 标签,用于文本格式化对象。

StyleTwo 回调函数使用详细检查回调函数,以分层、层次结构形式将结果作为字符串返回并组织。该函数提供两个输出参量,用于将文本描述与一个或多个详细信息段落关联。检查定义需要使用 StyleTwo 关键字。

参量I/O 类型描述
system输入由模型顾问分析的模型或子系统的路径。
ResultDescription输出支持模型顾问格式 API 调用或用于文本格式化的嵌入式 HTML 标记的 MATLAB 字符向量元胞数组。模型顾问将 ResultDescription 字符向量与对应的 ResultDetails 字符向量数组串联起来。
ResultDetails输出由元胞数组组成的元胞数组,其中每个元胞数组包含一个或多个字符向量。ResultDetails 元胞数组的长度必须与 ResultDescription 元胞数组的长度相同。

StyleThree 回调函数使用自动为检查返回的每个对象显示超链接的回调函数。此样式便于导航到相关模型元素。检查定义需要使用 StyleThree 关键字。

参量I/O 类型描述
system输入由模型顾问分析的模型或子系统的路径。
ResultDescription输出支持模型顾问格式 API 调用或用于文本格式化的嵌入式 HTML 标记的 MATLAB 字符向量元胞数组。
ResultDetails输出由元胞数组组成的元胞数组,其中每个元胞数组包含一个或多个 Simulink® 对象,例如模块、端口、线和 Stateflow® 图。这些对象必须采用句柄或 Simulink 路径的形式。ResultDetails 元胞数组的长度必须与 ResultDescription 元胞数组的长度相同。

指定是否在模型顾问报告中显示检查输入参数。

指定用户是否可以启用或禁用检查。

一个整数值,用于指定当检查标记出您的模型中的某个问题时,该检查被标记为警告还是失败。值为 0 时将检查标记为警告;值为 1 时将该检查标记为失败。此属性相当于在模型顾问配置编辑器中使用当检查标识了问题时的状态选项,是该选项的等效编程方式。

在用于定义自定义检查属性的此示例代码中,ErrorSeverity 的值为 1。因此,如果在模型中标记了违反此检查的情况,在结果中此检查将被标记为 Fail。

% 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');
rec.ErrorSeverity = 1;

ID 属性为检查指定永久的唯一标识符。请注意有关 ID 属性的以下内容:

  • 您必须指定此属性。

  • ID 的值必须保持不变。

  • 如果 ID 不唯一,模型顾问将生成错误。

  • 任务和出厂组定义必须按 ID 引用检查。

指定一个元胞数组,其中包含显示和运行检查所需的产品许可证名称。当模型顾问启动时,它会测试该产品许可证是否存在。如果您不满足许可证要求,则模型顾问不会显示该检查。当您运行自定义检查时,模型顾问将对产品许可证执行签出。如果您没有产品许可证可用,则会看到一条错误消息,指出所需的许可证不可用。

提示

要查找许可证字符串的文本,请在 MATLAB 命令行中键入 help license。

指定一个元胞数组,用来存储由 CallbackHandle 中指定的回调函数所返回的结果。

提示

要设置与该检查关联的图标,请使用 Simulink.ModelAdvisor setCheckResultStatus 和 setCheckErrorSeverity 方法。

存储与检查相关联的 ModelAdvisor.ResultDetail 对象。此属性可以包含多个对象。

指定检查是否支持排除项。

示例代码指定了一个支持排除项的检查。

% specify that a check supports exclusions
rec = ModelAdvisor.Check('com.mathworks.sample.Check1');
rec.SupportExclusion = true; 

指定检查是否支持库模型。

示例代码指定了一个支持库模型的检查。

% specify that a check supports library models
rec = ModelAdvisor.Check('com.mathworks.sample.Check1');
rec.SupportLibrary = true;  

指定模型顾问中检查的名称。模型顾问在树状结构中使用检查的标题显示自定义检查。为每个检查指定唯一标题。当您为多个检查指定相同的标题时,模型顾问会生成警告。

示例代码指定了一个自定义检查的名称。

rec = ModelAdvisor.Check('com.mathworks.sample.Check1');
rec.Title = 'Check Simulink block font';  

指定检查的描述。有关检查的详细信息显示在模型顾问的右窗格中。

示例代码指定了一个自定义检查的描述。

rec = ModelAdvisor.Check('com.mathworks.sample.Check1');
rec.Title = 'Check Simulink block font';
rec.TitleTips = 'Example style three callback';  

指定检查的初始状态。当您使用 Value 属性来指定检查的初始状态时,您可以在模型顾问窗口中启用或禁用运行此检查。

如果您想在 By Product 文件夹中指定检查的初始状态,在启动模型顾问之前,请确保 ModelAdvisor.Preferences.DeselectByProduct 为 false。

示例代码指定了一个检查的初始状态。

% hide all checks that do not belong to Demo group
if ~(strcmp(checkCellArray{i}.Group, 'Demo'))
    checkCellArray{i}.Visible = false;
    checkCellArray{i}.Value = false;
end  

指定模型顾问是否显示该检查。

示例代码指定了隐藏模型顾问中所有不属于 Demo 组的检查。

% hide all checks that do not belong to Demo group
if ~(strcmp(checkCellArray{i}.Group, 'Demo'))
    checkCellArray{i}.Visible = false;
    checkCellArray{i}.Value = false;
end  

对象函数

getIDReturn check identifier
setActionSpecify action for check
setHelpSet custom help for custom authored Model Advisor checks
setInputParametersSpecify input parameters for check
setCallbackFcnSpecify callback function for check
setInputParametersLayoutGridSpecify layout grid for input parameters
setResultDetailsAssociates result details with a check object

版本历史记录

在 R2008a 中推出