mcpField
C
checking-model-compliance

checking-model-compliance

github.com/matlab测试与质量1.3k45 次安装1 周前更新
代码仓库

关于 checking-model-compliance

用于按指定标准或自定义 Model Advisor 配置检查 Simulink 模型的技能。它解析检查项,汇总并排序问题,提供修复建议,也支持说明违规项的豁免理由。

主要功能

  1. 01检查多种合规标准
  2. 02运行自定义检查或配置
  3. 03排序问题并提供修复建议
  4. 04支持说明违规豁免理由

适用场景

  1. 01按 ISO 26262 检查模型
  2. 02对子系统运行 JMAAB 检查
  3. 03汇总自定义配置的检查结果
  4. 04记录违规项的豁免理由

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/matlab/simulink-agentic-toolkit --skill checking-model-compliance

安装后在 Claude Code 中输入/checking-model-compliance确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

manifest.yaml
references/
fix-mode.md
semantic-evaluation-index.md
uncheckable-guidelines-review.md
scripts/
detect_default_config.p
model_advisor_justify.p
model_advisor_resolve_checks.p
model_advisor_run.p

详细介绍

检查模型合规性

针对指定标准(或默认配置)运行 Model Advisor 检查,并提供按优先级排序的摘要和修复建议。

适用场景

  • 检查 Simulink 模型是否符合某项标准(MISRA、MAB、JMAAB、ISO 26262、DO-178C 等)
  • 根据指定的合规标准运行 Model Advisor 检查
  • 生成包含按优先级排序的发现项和修复建议的合规报告
  • 针对模型运行自定义 Model Advisor 配置文件
  • 说明或豁免特定合规违规项

不适用场景

  • 构建或编辑模型结构 → building-simulink-models
  • 编写行为测试 → testing-simulink-models
  • 仅进行结构验证(未连接的端口) → 直接使用 model_check 工具
  • 不涉及指定标准的一般模型质量问题(例如“我的模型分解得合理吗?”)——这需要采用其他工作流

支持的标准

标准可接受的输入
MISRA C:2023MISRA_C、MISRA C、MISRA
MISRA Simulink/StateflowMISRA_SLSF、MISRA Simulink
MABMAB、MAAB
JMAAB v5.1JMAAB
JMAAB v6JMAAB_V6、JMAAB06
ISO 26262ISO_26262、ISO 26262
ISO 25119ISO_25119、ISO 25119
DO-178C/DO-331DO_178C、DO-178C、DO-178B、DO-331
DO-254DO_254、DO-254
IEC 61508IEC_61508、IEC 61508
IEC 62304IEC_62304、IEC 62304
EN 50128/EN 50657EN_50128、EN 50128、EN_50657
安全编码(CERT C、CWE)SECURITY、CERT_C、CWE、secure coding
AUTOSARAUTOSAR
Simulink Code Inspector(SLCI)SLCI、Simulink Code Inspector

等效检查集(运行一次,同时报告两者):

  • ISO 26262、IEC 61508、IEC 62304、EN 50128/EN 50657、ISO 25119
  • DO-178B、DO-178C、DO-331
自定义检查和配置

用户可以使用自定义 Model Advisor 检查或自定义配置文件(从 Model Advisor Configuration Editor 导出的 .json 文件)。这些不属于标准,可通过以下方式处理:

  • **自定义配置文件:**用户提供路径 → 直接使用 model_advisor_run 的 'configuration' 参数(路径 B)
  • **自定义检查 ID:**用户提供具体检查 ID → 直接使用 model_advisor_run 的 'checks' 参数(跳过解析)

前置条件

所有脚本函数都位于该技能的 scripts/ 目录中。使用 evaluate_matlab_code,并将 project_path 设置为该技能的 scripts/ 文件夹,以便 MATLAB 找到这些函数。切勿使用 addpath。

提供的工具(始终使用这些工具,切勿自行调用原始 Model Advisor API):

函数输入输出示例
model_advisor_resolve_checks'standard', '<NAME>'包含 checks、checks_count、status 的结构体model_advisor_resolve_checks('standard', 'JMAAB')
model_advisor_runsystem, 'checks', {ids} 或 system, 'configuration', path包含 findings、status、check_summary 的 YAMLmodel_advisor_run('MyModel', 'checks', checkIds, 'token_budget', 8000)
model_advisor_justifymodel, checkId, blockPath, text包含状态的结构体model_advisor_justify('MyModel', 'mathworks.jmaab.db_0032', 'MyModel/Sub', 'Waived per review')
detect_default_configmodelName包含 config_path 的结构体,或空值detect_default_config('MyModel')

工作流

1. 确定标准、模型和范围

根据用户请求确定:

  • 标准 — 映射到受支持的名称(参见表格)。默认值:“MISRA” → MISRA_C。如果用户提到“JMAAB”但未指定版本 → 询问用户(v5.1 或 v6)
  • 模型 — .slx 文件(如果不明确则询问)
  • 范围 — 整个模型(默认)或子系统路径(例如 Model/Controller)

消歧规则:

  • 未指定版本的“JMAAB” → 询问(v5.1 或 v6 — 两组不同的检查集)
  • 未指定类别的“ISO” → 询问(有多种受支持的标准)
  • 未指定类别的“DO” → 询问(178C 还是 254)
  • 请求多个标准 → 分别解析、比较检查集;如果相同,则只运行一次
2. 选择路径

路径 A — 已指定标准: 继续执行步骤 3。

路径 B — 未指定标准,用户说“运行 Model Advisor”/“检查我的模型”: 运行 detect_default_config(modelName)。如果找到配置 → 跳至步骤 4。如果结果为空 → 询问要使用哪个标准(展示受支持的列表)。

3. 解析检查项(仅适用于路径 A)
model_advisor_resolve_checks('standard', '<STANDARD_NAME>')
  • status: success → 记录 checks_count,告知用户
  • status: truncated → 在步骤 4 中使用返回的配置文件路径
  • status: error → 报告错误并停止

门槛: 如果 checks_count > 100,在继续前先征求用户确认。

快捷方式: 如果用户已提供具体的检查项 ID,直接使用这些 ID 调用 model_advisor_run,然后跳至步骤 5。

4. 运行检查
model_advisor_run('<system>', 'checks', {<check_ids>})          % inline checks
model_advisor_run('<system>', 'configuration', '<config_path>') % config file

使用 'token_budget', 8000。如果结果被截断,从 full_results 路径读取完整结果。

5. 分析发现项

根据 YAML 响应分类:

  1. 严重(Failed)— 必须修复才能符合要求
  2. 警告(Warning)— 应当修复,但可能有正当理由
  3. 信息性 — 优先级较低
6. 提交合规报告

对于非 MAB/JMAAB 标准,使用此模板:

## Compliance Summary: <Standard>
Model: <model> [Scope: <subsystem> if scoped]
Result: X passed, Y warnings, Z failures

### Critical Findings (must fix)
| Check | Blocks | Fix Type | Action |
|-------|--------|----------|--------|
| name  | N      | param/insert/config/routing/arch | what to change |

### Warnings (should fix)
| Check | Blocks | Fix Type | Action |
|-------|--------|----------|--------|

### Passed
N checks passed.

### Suggested Next Steps
[5-7 prioritized actions max]

对于 MAB、JMAAB 或 JMAAB_V6 标准,改用此模板(其中将不可检查指南审查作为报告的组成部分):

## Compliance Summary: <Standard>
Model: <model> [Scope: <subsystem> if scoped]
Result: X passed, Y warnings, Z failures

### Critical Findings (must fix)
| Check | Blocks | Fix Type | Action |
|-------|--------|----------|--------|
| name  | N      | param/insert/config/routing/arch | what to change |

### Warnings (should fix)
| Check | Blocks | Fix Type | Action |
|-------|--------|----------|--------|

### Passed
N checks passed.

---

### Agentic Review of Uncheckable Guidelines (LLM-based — not deterministic)

> **Note:** This is a semantic evaluation performed by an AI agent, not a deterministic Model Advisor check.

**Model:** <model_name>
**Judgment:** PASS | WARNING | FAIL
**Confidence:** 0.XX

#### Critical (must fix)
| Guideline | Blocks | Fix Type | Action | Confidence |
|-----------|--------|----------|--------|------------|

#### Warnings (should fix)
| Guideline | Blocks | Fix Type | Action | Confidence |
|-----------|--------|----------|--------|------------|

### Evidence
[2-3 sentences citing specific model data]

### Recommendation
[Top 3-5 prioritized actions, or "No action required."]

---

### Suggested Next Steps
[5-7 prioritized actions max, combining both deterministic and uncheckable findings]

Fix Type 值: param(块参数)、insert(添加块)、config(模型配置)、routing(重新连接信号)、arch(重构 — 仅建议)

简洁性规则:

  • 每个检查项占一行;每个检查项最多显示 3-5 个块路径(注明总数)
  • 目标为 40-60 行;最多约 80 行
  • 如需详细信息,提供“我可以列出检查项 X 涉及的所有块”
7. 执行不可检查指南审查(仅适用于 JMAAB/MAB)

本节说明如何填写上述 MAB/JMAAB 报告模板中的“Agentic Review of Uncheckable Guidelines”(不可检查指南的 Agentic 审查)部分。在向用户提交报告前,必须完成此审查。

仅对其他标准(MISRA、ISO 26262、DO-178C 等)跳过此步骤。 对于 JMAAB、JMAAB_V6 或 MAB 标准 → 加载并遵循 references/uncheckable-guidelines-review.md。

要执行的操作: 评估 Model Advisor 无法完全验证的指南 — 需要语义判断或完全没有对应检查项的指南。加载 references/semantic-evaluation-index.md,获取不可检查指南列表,然后:

  1. 根据 Model Advisor 结果,确定其中哪些已检查的指南出现在语义评估索引中
  2. 对于这些指南,使用 MCP 工具(model_overview、model_read、model_query_params)提取模型数据
  3. 针对每项适用的指南应用索引中的快速规则
  4. 对于边界情况,使用“语义差距”列校准判断

判断: 采用所有发现项中的最差判定(FAIL > WARNING > PASS)。置信度为 0.0-1.0。如果置信度 < 0.5,切勿判定为 FAIL。

8. 修复模式

询问:“你希望我修复这些问题吗?”

  • 否 → 停止(仅提交报告)
  • 是 → 加载并遵循 references/fix-mode.md 工作流
9. 申诉模式

如果用户希望为违规项提出理由、申请豁免或抑制 → 加载并遵循 references/fix-mode.md 中的 Justification(申诉)部分。

防护措施

始终遵守
  • 对于 JMAAB/JMAAB_V6/MAB:始终执行步骤 7(不可检查指南审查)——缺少此步骤,报告即不完整
  • 运行前显示标准名称和检查数量
  • 在发现项中包含模块路径
  • 严格遵循修复顺序(结构性问题 → 诊断问题),以避免产生级联误报
  • 总结结果,不要照搬原始输出
  • 执行 ≥100 项检查前,先向用户确认
  • 添加任何理由说明前,先向用户索取说明文字——绝不捏造理由
  • 如果参考工具返回错误,逐字报告——不要尝试其他方法
  • 如果存在多个 .slx 文件或名称不明确,先确认要检查哪个模型
  • 在报告标题中注明解析后的标准名称和版本
  • 报告工具输出中的准确检查数量
  • 解释失败时,列出所有不同的根本原因
先询问
  • 修复模式下的修改——每批修改前都必须确认,绝不擅自修改模型
  • 理由说明——始终由人工决定
  • 运行超过 100 项检查——确认检查范围符合预期
绝不执行
  • 声称“模型符合要求”——只报告通过/失败;是否符合要求由用户决定
  • 在修复结构性问题前升级处理诊断问题
  • 未经明确请求便隐藏发现项
  • 猜测参数名称——使用检查输出中的准确 parameter 字段
  • 永久修改 MATLAB 路径(不要运行 savepath)
  • 未经用户明确许可运行 slbuild 或代码生成
  • 不必要地重新运行检查——如果模型自上次运行后未修改,请复用最近一次运行的违规 ID;只有模型发生变更时,才重新运行以获取最新哈希值

错误恢复

错误操作
UNKNOWN_STANDARD检查是否存在拼写错误或别名(例如,“MAAB” → MAB)。如果标准有效但不受支持,请说明并显示受支持标准列表。
LICENSE_FAILED需要 Simulink Check 许可证
MODEL_NOT_FOUND询问正确的模型路径
CHECK_NOT_FOUND版本不匹配——告知用户所需的 MATLAB 版本
CONFIG_NOT_FOUND路径已过期——请用户更新路径,或回退到命名标准
EXECUTION_FAILED模型可能存在编译错误——建议先修复
Token 预算超限从 full_results 字段读取完整结果
HASH_NOT_FOUND(justify)上次运行后模型已修改——重新运行检查以获取最新 ID
JUSTIFICATION_FILE_ERROR检查文件权限和许可证

版权所有 2026 The MathWorks, Inc.


评论

支持 Markdown