ModelAdvisor自定义检查项

ModelAdvisor自定义检查项,怎么才能使得模块出现问题时自定义报”警告“还是”失败“?已经使rec.ErrorSeverity为0/1了,但结果依旧只能报”警告“。

img

基于new bing部分指引作答:
在 MATLAB 的 ModelAdvisor 自定义检查项中,可以使用 rec.ErrorSeverity 属性来控制问题的严重级别,但需要注意它只能控制警告的级别,而无法直接控制失败。

要实现模块出现问题时自定义报"警告"或"失败",可以使用 rec.Result 属性来实现。rec.Result 属性可以设置为以下值之一:

'pass':表示检查通过。
'warning':表示警告。
'fail':表示失败。
以下是一个示例,演示如何在自定义检查项中根据需要报告警告或失败:

function result = myCustomCheck(system)
    result = ModelAdvisor.ValidationResult;
    
    % 进行自定义检查
    % ...
    
    if % 检查失败条件
        result.Result = 'fail';
        result.DiagnosticResult = ModelAdvisor.DiagnosticResult('检查失败,请修复问题!');
    elseif % 检查警告条件
        result.Result = 'warning';
        result.DiagnosticResult = ModelAdvisor.DiagnosticResult('检查发现警告,请注意修复问题!');
    else
        result.Result = 'pass';
    end
end

在上述示例中,根据检查的结果,我们将 result.Result 设置为 'fail' 或 'warning',并使用 ModelAdvisor.DiagnosticResult 创建一个相应的诊断结果,其中包含相应的消息。

请根据您的具体需求,将示例中的检查逻辑替换为您自己的逻辑,并相应地设置 result.Result 和 result.DiagnosticResult。

希望这可以帮助到您!

你可能需要注意以下几点:
rec.ErrorSeverity属性是一个整数值,用于指定当检查项在模型中发现问题时,是标记为警告还是失败。
rec.ErrorSeverity属性的值为0时,表示检查项为警告;值为1时,表示检查项为失败。
rec.ErrorSeverity属性是在Model Advisor Configuration Editor中使用Check result when issues are flagged选项的编程等价物。

在Matlab的ModelAdvisor中,你可以通过自定义检查项来控制模块出现问题时的报告级别。要使模块出现问题时报告为"警告"或"失败",确保进行以下操作:

  1. 在自定义检查项函数中,使用rec = ModelAdvisor.Check.createCheckResult()创建检查结果对象。

  2. 设置rec.ErrorSeverity属性为0(表示警告)或1(表示失败)。

  3. 使用report(obj, rec)将检查结果报告给ModelAdvisor。

  4. 确保在ModelAdvisor配置文件中设置了正确的级别。例如,在checkObjectConfig函数中,可以使用setCheckLevel(obj, 'sys', level)来设置级别为'warning''failure'

以下是一个示例:

function runCustomCheck(this, model)
    % 创建检查结果对象
    rec = ModelAdvisor.Check.createCheckResult(this.getCheckID);

    % 检查模块是否符合条件
    if condition
        % 如果满足条件,设置报告级别为警告
        rec.ErrorSeverity = 0;
        rec.addAdvice('...'); % 添加建议信息
    else
        % 如果不满足条件,设置报告级别为失败
        rec.ErrorSeverity = 1;
        rec.addFailure('...'); % 添加失败信息
    end

    % 将检查结果报告给ModelAdvisor
    report(this, rec);
end

在使用 MATLAB 的 ModelAdvisor 工具时,您可以通过设置自定义检查项的严重性级别来控制模块出现问题时的报告类型。ModelAdvisor 工具支持三个严重性级别:Error(错误)、Warning(警告)和Information(信息)。以下是设置自定义检查项严重性级别的一般步骤:

创建自定义检查项:首先,您需要创建一个自定义检查项。这可以通过创建一个 MATLAB 脚本来实现,该脚本定义了您的检查逻辑和报告内容。确保脚本以 ModelAdvisor.Check 对象的形式返回结果。

设置严重性级别:在脚本中,您可以使用 ModelAdvisor.Check 对象的 SetResult 方法来设置检查项的结果和严重性级别。该方法接受两个参数:检查结果和严重性级别。以下是一个示例代码片段:


function result = customCheck(system)
    % 检查逻辑
    if condition
        % 出现问题时的警告报告
        result = ModelAdvisor.Check('警告', '此模块存在问题');
        result.setCheckResult(false);
        result.setSeverity(ModelAdvisor.Severity.Warning);
    else
        % 无问题时的通过报告
        result = ModelAdvisor.Check('通过', '此模块正常');
        result.setCheckResult(true);
        result.setSeverity(ModelAdvisor.Severity.Information);
    end
end

在上述示例中,当满足某个条件时,设置了一个警告级别的自定义检查项,并将其结果设置为 false。

集成到 ModelAdvisor:将您的自定义检查项集成到 ModelAdvisor 工具中。这可以通过创建一个检查项注册表文件(.mltbx)或通过手动添加到 MATLAB 搜索路径中来实现。

运行检查:在 ModelAdvisor 工具中,选择要应用自定义检查项的模型或模块,并运行检查。在检查结果中,根据设置的严重性级别,将显示警告、错误或信息报告。

请注意,上述步骤提供了一般的指导,实际的操作可能因 MATLAB 版本和具体的检查项定义而有所不同。建议您参考 MATLAB 的官方文档、示例和教程,以获取更详细和准确的信息,并了解如何在 ModelAdvisor 中设置自定义检查项的严重性级别。

要设置ModelAdvisor自定义检查项的报警级别,需要在defineModelAdvisorChecks函数中针对每个检查项设置错误级别。可以使用rec.ErrorSeverity属性来设置报警级别。

rec.ErrorSeverity属性的值可以为0(警告)、1(失败)或2(通过)。

下面是一个示例代码,展示如何设置自定义检查项的报警级别为"失败":

function sl_customization(cm)
    % defineModelAdvisorChecks回调函数
    cm.Title = 'My Model Checks';
    cm.TitleTips = 'Model Advisor checks for custom checks';

    % 创建自定义检查项目
    rec = ModelAdvisor.Check('MyCustomCheck');
    rec.Title = 'My Custom Check';
    rec.Description = 'This is a custom check';
    rec.Action = 'Fix the issue';
    rec.Result = ModelAdvisor.Action('Pass', 'The model passed the custom check');
    rec.ErrorSeverity = 1; % 设置报警级别为"失败"

    % 注册自定义检查项到Model Advisor中
    cm.addCheck(rec);
end

要将报警级别设置为"警告",可以将rec.ErrorSeverity属性的值设置为0:

rec.ErrorSeverity = 0; % 设置报警级别为"警告"

希望这个示例能够帮助您解决问题!如果有任何其他问题,请随时提问。