首页龙虾技能列表 › misra-automotive-c — MISRA C:2012 代码审查

misra-automotive-c — MISRA C:2012 代码审查

v1.0.0

审查汽车嵌入式 C 代码是否符合 MISRA C:2012 规则,标记违规项并提供 MISRA 合规的代码替换方案。

0· 112·0 当前·0 累计
by @budhadityarano·MIT-0
下载技能包
License
MIT-0
最后更新
2026/3/26
安全扫描
VirusTotal
无害
查看报告
OpenClaw
安全
high confidence
技能的文件、指令和需求与 MISRA C:2012 审查辅助工具内部一致,不请求无关凭据、安装或系统访问权限。
评估建议
该技能看起来连贯且独立:分析您粘贴的 C 代码,并仅使用捆绑的规则文档生成 MISRA 格式的违规报告。在使用前,除非您愿意与代理共享,否则不要粘贴专有或安全关键源代码,并将建议视为人工审查建议(README 已警告它不能替代 PC-lint、Polyspace 或 QAC 等认证静态分析器)。在合并到安全关键代码之前,请在 CI 和安全工程师处验证任何自动化的“MISRA 合规替换”。许可证是宽松的(MIT-0),但对于正式认证,请遵循您组织批准的工具链,并在需要保密时将敏感代码排除在聊天之外。...
详细分析 ▾
用途与能力
名称和描述(MISRA/ISO 26262 汽车嵌入式 C 审查)与包含的文档和运行时指令匹配。不请求无关的二进制文件、环境变量或配置路径。
指令范围
SKILL.md 指示代理解析粘贴的 C 代码并咨询包含的规则文档以生成结构化违规报告;它不指示读取系统文件、环境变量或联系外部端点。范围狭窄地限制在代码审查和 MISRA 规则下的可选代码生成。
安装机制
这是一个纯指令技能,没有安装规范,也没有代码需要下载或执行。这是最低风险的安装模式。
凭证需求
技能声明不需要环境变量、凭据或配置路径。请求的访问级别与其声明的功能(审查粘贴的 C 代码)成正比。
持久化与权限
always:false 且 user-invocable:true。技能不请求永久包含或修改其他技能或系统范围设置。自主调用由平台默认允许但不强制。
安全有层次,运行前请审查代码。

License

MIT-0

可自由使用、修改和再分发,无需署名。

运行时依赖

无特殊依赖

版本

latestv1.0.02026/3/26

misra-automotive-c v1.0.0 — 初始版本:提供对嵌入式 C 代码的全面 MISRA C:2012 审查及详细报告工作流程;使用精确规则编号、强制/必需分类、ASIL 分类和严重性标记规则违规;为每个发现的违规生成可直接使用的 MISRA 合规代码替换;包含代码审查和新代码生成指南以确保合规;自动化摘要报告,包含合规状态和 ASIL 分解,便于快速认证评估。

● 无害

安装命令 点击复制

官方npx clawhub@latest install misra-automotive-c
镜像加速npx clawhub@latest install misra-automotive-c --registry https://cn.clawhub-mirror.com

技能文档

快速参考

文件覆盖范围
misra-mandatory.md强制规则 — 永不违规,不允许偏差
misra-required.md必需规则 — 必须合规或提出正式偏差
types-and-casting.md基本类型、固定宽度整数、类型转换、基本类型模型
memory-embedded.md无动态分配、volatile、ISR 约束、栈规范
control-flow.mdgoto、循环、switch、if-else 链、单入口单出口
preprocessor.md宏、include 守卫、#undef、## 操作符
iso26262-mapping.md关键 MISRA C:2012 规则的 ASIL A–D 相关性

何时激活

在以下情况下激活此技能:

  • 用户粘贴 C 代码并请求 MISRA 审查、合规检查或审计
  • 使用触发词:"misra"、"misra check"、"misra review"、"automotive c"、"embedded c review"、"iso 26262"、"asil"
  • 询问"这是否符合 MISRA?"或"这违反了哪些规则?"

审查工作流程 — 按顺序遵循这些步骤

步骤 1 — 解析代码

  • 仔细阅读提交的 C 代码的每一行。
  • 识别上下文:函数体、头文件、ISR、宏定义、类型声明。
  • 记录所有变量类型、控制流路径、预处理器指令。

步骤 2 — 首先检查强制规则(加载 misra-mandatory.md

强制规则零容忍 — 立即标记每个违规。 优先强制检查:

  • 规则 1.3 — 无未定义行为
  • 规则 2.1 — 无不可达代码
  • 规则 13.2 — 无顺序未确定表达式中的副作用
  • 规则 14.3 — 控制表达式不应是不变的
  • 规则 15.1 — 无 goto
  • 规则 17.1 — 无 特性
  • 规则 17.3 — 无隐式函数声明
  • 规则 17.4 — 非 void 函数的所有出口路径应有显式 return
  • 规则 21.3 — 无 malloccallocreallocfree

步骤 3 — 检查必需规则(加载 misra-required.mdtypes-and-casting.mdcontrol-flow.mdpreprocessor.md

必需规则必须合规,除非存在正式偏差。检查:

  • 固定宽度类型的 typedef 使用(规则 4.6 → D.4.6)
  • 基本类型模型违规(规则 10.1–10.8)
  • 所有 switch 语句有 default 子句(规则 16.4)
  • 所有 if-else if 链以 else 结束(规则 15.7)
  • 首选单入口单出口(规则 15.5)
  • 所有 struct/union 成员已初始化(规则 9.1)
  • 所有宏已加括号(规则 20.7)
  • 除非不可避免,否则无函数式宏(规则 20.10)

步骤 4 — 检查嵌入式/内存规则(加载 memory-embedded.md

  • 所有硬件映射寄存器和共享 ISR 变量使用 volatile
  • 安全关键路径中任何地方无动态内存分配(堆)
  • 无递归(规则 17.2)
  • 硬件寄存器和协议字段专用固定宽度整数类型
  • ISR 函数:无重计算、无阻塞调用

步骤 5 — 映射到 ISO 26262 ASIL(加载 iso26262-mapping.md

  • 对于每个发现的规则违规,报告其 ASIL 分类
  • ASIL D 违规是最高严重性 — 突出显示
  • 报告 ASIL A 违规但标记为较低优先级

步骤 6 — 生成违规报告

对于每个发现的违规,按精确格式输出报告:

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
VIOLATION #
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Rule : MISRA C:2012 Rule 
Category : Mandatory | Required | Advisory
ASIL : A | B | C | D | Not mapped
Severity : CRITICAL | HIGH | MEDIUM | LOW
Location : Line 

Non-Compliant Code:

Why it violates Rule : <1–3 sentence plain-English explanation of the rule and why this code breaks it>

MISRA-Compliant Replacement:

Explanation of fix: <1–2 sentences explaining what changed and why it is now compliant> ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

在所有单独违规之后,输出摘要表:

REVIEW SUMMARY
──────────────────────────────────────────────────
Total violations : 
Mandatory :  ← must fix before any safety certification
Required :  ← must fix or raise formal deviation
Advisory :  ← recommended to fix

ASIL breakdown: ASIL D : ← safety critical, fix immediately ASIL C : ASIL B : ASIL A : Not mapped :

Overall compliance status: FAIL | CONDITIONAL | PASS ──────────────────────────────────────────────────


代码生成工作流程

当请求生成新的汽车/嵌入式 C 代码(不是审查现有代码)时: 无例外地始终应用这些规则:

类型:

  • 使用 uint8_tuint16_tuint32_tuint64_tint8_tint16_tint32_tint64_t — 绝不使用 intunsigned intlongchar 作为数值数据
  • 使用 bool(来自 )作为布尔值 — 绝不使用整数标志
  • 类型转换时始终显式转换 — 无隐式缩窄

内存:

  • 绝不使用 malloccallocreallocfree
  • 所有变量在声明点初始化
  • 数组是固定大小、静态分配的
  • 硬件寄存器指针声明为 volatile

控制流:

  • goto
  • 所有 if / else if 链以 else 结束
  • 所有 switch 语句有 default
  • 所有循环有定义的最大迭代次数
  • 每个非 void 函数在可能时在末尾有一个显式 return

函数:

  • 所有参数和返回类型使用固定宽度 typedef
  • 所有返回值由调用者检查
  • 无递归
  • 除非有充分理由,否则最多一层指针间接寻址

宏:

  • 函数式宏:所有参数和整个表达式加括号
  • 优先使用 static inline 函数而非函数式宏
  • 每个头文件有 include 守卫(#ifndef FILENAME_H / #define FILENAME_H / ... / #endif

升级规则

  • 如果代码在任何从安全函数可达的路径中包含规则 21.3 违规(动态分配),在报告顶部任何违规之前输出 ⚠️ SAFETY CRITICAL 横幅。
  • 如果发现规则 15.1(goto),无论上下文如何都将其标记为 ASIL D。
  • 如果在任何函数中发现规则 17.2(递归),如果可见,追踪完整调用链并报告。
  • 如果代码看起来是 ISR(函数名包含 ISR_IRQ_Handler_isr,或具有 __attribute__((interrupt)) 注解),以更高严格度应用 memory-embedded.md ISR 规则。
数据来源:ClawHub ↗ · 中文优化:龙虾技能库
OpenClaw 技能定制 / 插件定制 / 私有工作流定制

免费技能或插件可能存在安全风险,如需更匹配、更安全的方案,建议联系付费定制

了解定制服务