一个包含 MISRA C 违规的传感器驱动示例项目,用于演示 AI Safety Skills 的使用。
demo-safety-project/
├── src/
│ ├── main.c # 主程序
│ ├── sensor.c # 传感器驱动(包含多个 MISRA 违规)
│ └── sensor.h # 传感器接口
├── .claude/
│ └── skills/ # AI Safety Skills
│ ├── misra-review/
│ └── code-analysis/
├── Makefile
└── README.md
make
./sensor_demo注意: Kiro CLI 使用自然语言触发 skills,不支持斜杠命令。
kiro-cli chat
> MISRA 检查 src/sensor.c
# 检查整个目录
> MISRA 检查 src/
# 其他触发方式
> 审查 C 代码规范 src/sensor.c
> 检查 MISRA 合规性 src/kiro-cli chat
> 分析一下 src/sensor.c 的功能和工作原理
# 其他触发方式
> 分析 src/ 目录的代码结构
> 扫描 src/sensor.c 的潜在问题在 VS Code 中打开 Copilot Chat,直接输入:
MISRA 检查 src/sensor.c
或
分析一下这个传感器驱动模块
Copilot 会根据 skill 的 description 自动识别并使用对应的 skill。
/misra-review src/sensor.c
/code-analysis src/
在 Copilot Chat 中输入:
What skills do you have?
或使用命令面板(Ctrl+Shift+P)搜索 "Copilot: Show Skills"。
-
初次扫描
MISRA 检查 src/sensor.c -
查看报告,选择要修复的违规项
请修复编号 1,3,5 -
自动重新扫描,确认修复效果
-
继续修复直到满意
-
基础分析
分析 src/sensor.c -
深度扫描(根据提示选择)
- 选项 1: 扫描潜在 bug
- 选项 2: 扫描性能优化点
- 选项 3: 扫描关联模块
-
修复问题
请修复 bug 扫描中的编号 1,2
User: MISRA 检查 src/sensor.c
AI: [执行扫描...]
## MISRA C:2012 扫描报告
文件: src/sensor.c
### 汇总
- Mandatory: 0 项 | Required: 8 项 | Advisory: 2 项
- 合规率: 75.3%
### 违规详情
| # | 行号 | 规则 | 级别 | 描述 | 代码片段 |
|---|------|------|------|------|----------|
| 1 | 15 | 14.4 | Required | 条件非布尔类型 | `if (data)` |
| 2 | 32 | 14.4 | Required | 条件非布尔类型 | `if (sensor_count < MAX_SENSORS)` |
...
请输入要修复的编号(逗号分隔),或 'all' 修复全部:
User: 1,2,3
AI: [执行修复...]
已修复 3 项违规。重新扫描中...
User: 分析一下 src/sensor.c 的功能
AI: [执行分析...]
# 代码分析报告: src/sensor.c
## 1. 概述
- 模块名称: 传感器驱动
- 所属层级: 驱动层
- 核心职责: 管理传感器注册、数据读写和处理
## 2. 对外接口
| 函数 | 功能 | 参数说明 | 返回值 |
|------|------|----------|--------|
| sensor_init | 初始化传感器系统 | 无 | 0=成功 |
| sensor_register | 注册新传感器 | name, type | 传感器ID或-1 |
...
是否需要进一步扫描?
1. 扫描潜在 bug 和风险点
2. 扫描性能优化点
...
此项目故意包含以下违规,用于演示:
- Rule 14.4: 条件表达式非布尔类型
- Rule 17.7: 未使用函数返回值
- Rule 15.5: 多个返回点
- Rule 10.1/10.3: 隐式类型转换
- 危险函数: strcpy
- 未检查指针和数组边界
make clean