| name | c-code-standard |
| description | 按 C 语言编程规范编写、检视或审阅 C/C++ 代码改动。 |
C 规范 Skill
本 skill 用于需要遵守 C 语言编程规范的 C/C++ 源码、头文件、构建脚本和单元测试改动。
适用于新增代码、修改已有代码、提交前扫描本地 diff,以及输出带规则编号的审阅意见。
触发场景
- 编写或修改 C/C++ 源码、头文件、宏、公共 API 或测试。
- 按 C 语言编程规范审阅 patch、PR、commit 或本地 diff。
- push 或刷新 PR 前做提交就绪检查。
- 解释缺陷或风格问题,并需要引用具体规则编号。
规则引用
当需要规则编号、详细约束或审阅措辞时,读取
c-rules.md。先加载本文件的流程,再按任务需要读取
引用文件中相关章节,避免一次性引入无关上下文。
编写流程
- 先阅读周边代码,保持本地命名、排版、错误码、日志和清理路径风格;除非本地风格违反更强规则。
- 控制改动范围,不为个人偏好重写无关文件或大范围格式化模块。
- 公共声明放入匹配头文件,私有辅助函数放在
.c 文件中;文件内可见函数使用 static。
- 优先使用清晰函数和
const 对象替代宏。必须使用宏时,表达式参数加括号,多语句宏使用
do { ... } while (0)。
- 完整检查易失败操作:内存分配、拷贝、格式化、文件 I/O、加锁、命令执行和外部 API 调用。
- 外部输入作为尺寸、下标、循环边界、格式串、文件路径或命令参数前必须校验。
- 只在说明所有权、约束、并发、fallthrough、公共 API 契约或非显然行为时添加注释。
- 行为变更时同步新增或更新聚焦 UT,覆盖正常路径、非法输入、边界值和错误传播。
检视流程
- 根据
git diff --name-only <base>...HEAD、变更函数或用户指定文件确定检视范围。
- 优先检查高风险缺陷:内存越界、泄漏、释放后使用、差 1 错误、字符串结束符、整数溢出或截断、
未检查返回值、不安全命令执行。
- 再检查设计和可维护性:头文件自包含、无用 include、循环依赖、头文件变量定义、函数过长或嵌套过深、
全局/静态状态、宏副作用、过期注释。
- 按改动范围运行本地检查:
git diff --check
- 变更文件 tab 和行宽扫描
- 最窄构建或 UT 目标
- 公共头文件或通用构建文件变更时运行全量项目脚本
- 对机械且不改变行为的明确违规点直接修复;存在行为风险的改动先报告问题。
审阅输出
先输出发现的问题,按严重级别排序,并引用文件、行号和规则编号。
P1 path/file.c:123 规则 13.3 - 防止整数溢出
说明具体触发条件、为什么不安全,以及最小可行修复方式。
严重级别:
P0:确定的崩溃、破坏、安全漏洞、构建失败或数据丢失。
P1:可能的功能缺陷、严重安全问题、API 契约破坏或 -Werror 风险。
P2:有实际后续风险的可维护性、可移植性、可测性或规则问题。
P3:轻微风格清理项。
如果没有发现问题,需要明确说明,并列出已运行的检查。