Skip to content

📄 本页由源文件 skills/dev-flow/references/code-safety-rules.md 自动投影生成(单一权威源)。请勿直接编辑本页。

代码安全规则(全局强制)

以下规则不仅适用于 dev-flow 步骤 5,而是适用于任何产生代码文件改动的场景

大文件代码移动安全规则(>500 行文件强制)

在大文件中使用 multi_replace / replace_in_file 进行代码块移动(删除+插入)时,必须遵循:

  1. 唯一性锚点old_string 必须包含足够唯一的上下文(≥5 行),避免匹配到文件中其他相同结构的位置(如 </div></Card> 在大文件中可能出现多次)
  2. 分步验证:代码移动操作拆为「删除」和「插入」两步时,每步完成后立即用 grep_search 确认目标代码的位置和出现次数是否符合预期
  3. 结构完整性验证:涉及 JSX/TSX 括号结构的移动(如条件渲染块 { condition && (...) }),移动后必须立即运行 TypeChecknpx tsc --noEmit 2>&1 | grep "src/")验证语法完整性,不得跳过
  4. 移动后 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 等无法点击的定位。

示例(正确)

严重度问题定位描述
🔴 CRITICALsrc/x.tsx L42未使用可选链
🟡 HIGHsrc/y.ts L10-L30useEffect 缺 cleanup

基于「单一权威源」哲学构建 —— 文档由源文件投影生成