用AI写代码,什么最关键?答案就是规范。没有规矩不成方圆,同样能力的AI大模型,有的人能写出规范的生产级代码,而有的人只能写出勉强能跑的“屎山”,差别就在编程规范。
我们整理的这份规范,分别从目录结构、编码、错误处理、日志四个维度定义。当然,你也可以根据自己的需要补上其他关注的维度。
directory-structure.md:内核代码如何组织的规范
quality-guidelines.md:编码规范(内核风格)
error-handling.md:内核代码中的错误处理规范
logging-guidelines.md:内核代码日志、调试规范
下面一起来看看规范里都定义了些什么。
目录规范
定义了:
- 目录职责边界
- 新增代码放置规则
- Kconfig/Makefile 组织规范
- 驱动目录组织建议(drivers)
- 跨子系统与分层约束
- UAPI 与兼容性
- 文档与测试伴随规则
- 禁止事项
编码规范
定义了:
- 基础风格
- 命名与可读性
- 函数设计约束
- 并发与上下文安全
- 内存与资源管理
- 注释与文档
- 内核 API 使用优先级
- 提交前质量门禁
- 评审关注点(Checklist)
错误处理规范
定义了:
- 返回值统一约定
- 指针错误编码(必须)
- 失败路径组织(goto 模式)
- 错误码选择原则
- probe/remove 与生命周期错误处理
- 锁与错误路径
- 日志与错误分离
- 典型反例(禁止)
日志规范
定义了:
- 日志 API 选型
- 级别使用规范
- 格式与内容规范
- 频率控制与去重
- 调试开关与动态调试
- 错误日志编写建议
- 上下文与时序注意事项
- 调试实践流程(建议)
有了这些规范,怎么使用呢?很简单,如果你用 Claude Code,就在 CLAUDE.md 文件里引用这些规范文件;如果你用的是 Codex,就在 AGENTS.md 文件里引用。不管是在 CLAUDE.md 还是在 AGENTS.md 里,都可以用类似下面的方式来引用:
<!-- 下面的文字放到你的CLAUDE.md的合适位置 -->
## linux内核代码开发规范:
- 目录规范: [references/directory-structure.md](references/directory-structure.md)
- 编码规范: [references/quality-guidelines.md](references/quality-guidelines.md)
- 错误处理规范: [references/error-handling.md](references/error-handling.md)
- 日志规范: [references/logging-guidelines.md](references/logging-guidelines.md)
整套规范的源码已经放在 GitHub:
https://github.com/simple-tec/linux-kernel-develop-spec
大家可以自由学习、修改、传播,同时也欢迎反馈使用情况、提 Issue。期待你的反馈。
|