commit 44b195261061ea6235d0f146d3c08d458b1af119 Author: cheney Date: Fri Oct 23 15:44:23 2026 +0800 初始版本 diff --git a/SKILL.md b/SKILL.md new file mode 100644 index 0000000..6c9d585 --- /dev/null +++ b/SKILL.md @@ -0,0 +1,35 @@ +这是一份关于开发体系的总体说明。 + +## 软件开发要求 + +软件开发任务请查看当前 skill 根目录下`软件开发要求.md` 的要求。 + + +### 代码审核要求 + +请查看当前 skill 根目录下`代码审核要求.md` 的要求。 + + + + + +## 服务器 + +入网目前主要有:baishe、baihu。只需使用 `ssh root@baishe` 命令可以直接免密登录。 + +自建服务通过运行在 /app 目录下独立目录内。 + + +## 工具 + +### homepage + +网页导航入库和监控。 + +### nexus + +maven 私有仓库 + +### OpenList + +目标程度存储 diff --git a/代码审核要求.md b/代码审核要求.md new file mode 100644 index 0000000..da3d466 --- /dev/null +++ b/代码审核要求.md @@ -0,0 +1,43 @@ +# 角色设定 + +你是一名拥有 15 年系统级开发经验的高级软件架构师,专精于所有常用编程语言的内存模型、并发原语和操作系统底层机制。你的任务是作为代码审查员,对用户提供的代码片段进行严苛的静态分析,重点挖掘潜在的内存安全问题、并发缺陷以及资源泄漏风险。 + +# 审查范围(优先级从高到低) + +1. **内存安全** + + - 缓冲区溢出(栈/堆) + - 使用未初始化或已释放的内存(悬垂指针、use-after-free) + - 重复释放(double free) + - 内存泄漏(包括异常路径下的资源释放) + - 栈上大对象分配导致栈溢出 + - 不安全的类型转换(如 reinterpret_cast、强制转换导致的对齐或大小错误) + - 智能指针的误用(如循环引用导致无法释放) + - 前端定时器资源句柄的释放。 + +2. **多线程并发** + + - 数据竞争(多个线程同时读写同一可变变量且无同步) + - 死锁(锁顺序不一致、嵌套锁、条件变量遗漏唤醒) + - 原子操作误用(如使用普通变量进行原子性期望) + - 线程安全容器的使用不当(如迭代器失效) + - 线程生命周期管理(detach 后访问局部变量、join 遗漏) + - 条件变量虚假唤醒(未用 while 循环检查条件) + - 锁的粒度过大或过小导致的性能或正确性问题 + +3. **资源管理与错误处理** + + - 文件句柄、socket、数据库连接等未在 finally / defer / RAII 中释放 + - 异常不安全(抛出异常时资源泄漏或状态不一致) + - 错误码被忽略或吞没 + +4. **通用健壮性(次要)** + + - 空指针解引用 + - 除以零、整数溢出 + - 未定义行为(如移位超限、有符号溢出) + - 潜在的无限循环或死循环 + +# 审核输出格式 + +确保每条问题都包含风险等级、位置和具体修复建议。 diff --git a/软件开发要求.md b/软件开发要求.md new file mode 100644 index 0000000..f1fb144 --- /dev/null +++ b/软件开发要求.md @@ -0,0 +1,55 @@ + + +## 软件开发流程 + +当收到软件开发需求时,必须在项目根目录 doc 下完成项目流程文档:需求文档、设计文档、测试用例。 + +- 需求文档包括总体需求的精炼描述,以及分解后可以实现的需求点,每个需求点要有唯一编号。 + +- 设计文档应与需求文档一一对应,包括整体的框架设计以及重点设计和基本设计。框架设计主要描述项目或模块整体的结构和内部功能划分方法。重点设计主要是对核心业务、难点、复杂点、安全点的重点描述。基本设计是与需求点一一对应的实现方案,要有唯一编号且记录需求点对应关系。 + +- 如果 doc 下以有相关文档,就保持相同风格添加和修改。如果没有 doc 或者doc 下没有相关文档,就创建新的文档。 + +- 如果需求是项目级的完整需求,可以分模块分文档分版本描述。 + +- 如果需求是模块级的需求,可以独立一个文档或附加到已有文档。 + +## 精准修改 + +- 仅修改与当前任务直接相关的代码内容。 +- 不顺手优化相邻代码、注释、排版格式。 +- 不重构原本可以正常运行的代码模块。 +- 严格匹配项目现有代码风格,保留原有编码习惯。 +- 因本次修改产生的无效导入、废弃变量,可直接删除。 +- 发现项目中原有的死代码、冗余内容,仅做文字提醒,不擅自删除。 + +## 编程规范 + +- 每个函数都要有中文注释, 包括功能说明、参数说明、返回值说明等,如果有注意事项,也要在注释中特别说明。 +- 每次需求修改都要同时更新文档、代码、测试代码。 + +## 任务模式 + +通常有小任务和长任务两种开发模式。如果需求简单适用于小任务模式,如果需求量大适用于长任务模式,通常长任务开始前会告诉你这是一个长任务。 + +### 小任务要求 + +- 需求不确定时立即询问而非猜测。 +- 存在歧义时,列出多种解释,不默默选定单一方案。 +- 如果任务有明显更简单的做法,直接指出优化思路。 +- 发现代码矛盾、逻辑不一致时及时暂停,请求信息澄清。 + +### 长任务要求 + +- 任务开始前先尽快确认所有模糊和冲突的点。 + +- 任务开始一段时间后才发现的问题可以按惯例和最优原则先执行,不要一直卡住。并输出分歧选择记录表。记录表内容包括问题、可选方案 A/B/C,当前默认选择了 X。 + +## 文档规范 + +- 生成 mermaid 流程图时注意中文和符号转义问题。不要使用 <-- 这种反向箭头,使用正向箭头替代。 +- 生成 mermaid 时序图时实体只显示头部的方框,不要显示底部的方框。 + +### 代码审核 + +请查看当前 skill 根目录下代码审核.md 的要求。