📄 本页由源文件
skills/dev-flow/references/code-safety-rules.md自动投影生成(单一权威源)。请勿直接编辑本页。
代码安全规则(全局强制)
以下规则不仅适用于 dev-flow 步骤 5,而是适用于任何产生代码文件改动的场景。
大文件代码移动安全规则(>500 行文件强制)
在大文件中使用 multi_replace / replace_in_file 进行代码块移动(删除+插入)时,必须遵循:
- 唯一性锚点:
old_string必须包含足够唯一的上下文(≥5 行),避免匹配到文件中其他相同结构的位置(如</div></Card>在大文件中可能出现多次) - 分步验证:代码移动操作拆为「删除」和「插入」两步时,每步完成后立即用
grep_search确认目标代码的位置和出现次数是否符合预期 - 结构完整性验证:涉及 JSX/TSX 括号结构的移动(如条件渲染块
{ condition && (...) }),移动后必须立即运行 TypeCheck(npx tsc --noEmit 2>&1 | grep "src/")验证语法完整性,不得跳过 - 移动后 Diff 确认:移动完成后,读取目标位置前后 10 行上下文,确认代码块的上下文衔接正确(括号闭合、缩进一致、无多余/缺失的
}/))
⚠️ 反模式警示:
- 案例 1:曾因
old_string上下文不够唯一,导致multi_replace匹配到错误的</div></Card>位置,代码被插入到错误区块,且破坏了 JSX 括号结构产生 TS1381 语法错误。- 案例 2:代码移动完成后未立即运行 TypeCheck,直接向用户汇报完成。用户手动发现 TS1381 错误后才修复——违反了「代码修改后即时验证规则」。任何代码结构性改动后必须先验证再汇报。
代码修改后即时验证+审查规则(强制,全局适用)
⛔ 全局规则:此规则适用于任何产生代码文件改动的场景——包括步骤 6A 修复、步骤 7 清理/L2 修复、用户临时要求的代码调整、非 dev-flow 流程中的代码修改等。只要修改了代码文件,就必须立即验证并回退到合适的审查步骤。
每次代码修改后(无论是步骤 5 的正常编码、步骤 6A 的修复、步骤 7 的清理/修复、还是任何中间修复),都必须按顺序执行:
第一步:即时验证(不可跳过)
| 改动类型 | 必须执行的验证 |
|---|---|
| JSX/TSX 结构性改动(移动/删除/插入代码块) | npx tsc --noEmit TypeCheck |
| 普通代码修改 | read_lints 检查改动文件 |
| 样式/CSS 修改 | read_lints + 视觉确认(如有 Browser) |
第二步:回退到合适的审查步骤(验证通过后执行)
| 修改发生的阶段 | 回退目标 | 说明 |
|---|---|---|
| 步骤 5 正常编码 | → 5.5a L1 审查 | 正常流程 |
| 步骤 5.5c 修复 | → 5.5a 重新审查修复代码 | 审查修复本身 |
| 步骤 6A V1/V2/V3 修复 | → 5.5a 审查修复代码 | 确保修复不引入新问题 |
| 步骤 6A V4 Browser 修复 | → 5.5(完整后置钩子) | 功能性修复需完整审查 |
| 步骤 6A V5 Test 修复 | → 步骤 3 重新制定方案 | 测试失败通常涉及方案问题 |
| 步骤 6B 验收修复 | → 步骤 5(修复后重走 5.5 → 6A → 6B) | 完整回归 |
| 步骤 7 清理调试代码 | → 5.5c 快速自检 | 确认清理未破坏功能 |
| 步骤 7 L2 🔴 修复 | → 5.5a 审查修复代码 → 5.5c 自检 | 修复后重新审查+自检 |
| 非 dev-flow 场景 | 验证通过即可 | 无 dev-flow 步骤可回退 |
禁止行为
❌ 禁止:修改代码后不验证就进入下一步操作或向用户汇报完成 ❌ 禁止:连续多次修改后才批量验证——必须每次修改后立即验证 ❌ 禁止:验证通过后跳过审查直接继续——修复代码本身也需要被审查
审查报告 / 验证报告问题定位规范(强制)
以下产出物中,所有「问题定位」字段必须使用可点击链接,按 AI 行为规范「文件/代码位置引用」执行。
| 产出物 | 问题定位格式 |
|---|---|
| L1 / L2 / L3 审查报告 | `相对路径` L行号 |
| read_lints / tsc / eslint 报告 | 同上 |
| 浏览器运行时错误定位(若有 source map) | 同上 |
严禁:输出裸 src/xxx.tsx:42 或 L42 等无法点击的定位。
示例(正确):
| 严重度 | 问题定位 | 描述 |
|---|---|---|
| 🔴 CRITICAL | src/x.tsx L42 | 未使用可选链 |
| 🟡 HIGH | src/y.ts L10-L30 | useEffect 缺 cleanup |