ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Claude Code 代码审查 Angle C:跨文件调用追踪(cross-file tracer)实战指南

Claude Code 代码审查 Angle C:跨文件调用追踪(cross-file tracer)实战指南 文档提示工程人工智能【免费下载链接】claude-code-system-promptsAll parts of Claude Codes system prompt, 27 builtin tool descriptions, sub agent prompts (Plan/Explore/Task), utility prompts (CLAUDE.md, compact, statusline, magic docs, WebFetch, Bash cmd, security review, agent creation). Updated for each Claude Code version.项目地址https://gitcode.com/gh_mirrors/cl/claude-code-system-prompts点击查看免费下载导读本文聚焦 Claude Code 内置/code-review审查管线中的Angle Ccross-file tracer跨文件追踪器——一个专门针对改动函数是否破坏其调用方契约的查找视角。你将从本文掌握如何对 diff 中每个被修改的函数做向上查调用方、向下查被调方的双向追踪识别新增前置条件、返回值形态变化、新增异常、时序依赖等四类跨文件破坏并将其与 Angle A/B/D/E 等其他查找视角配合嵌入 medium / high / extra-high / maximum 四档审查流程中。文章同时结合本仓库中/code-review子代理提示词与技能文件给出可落地的操作步骤与判定依据。一、Angle C 是什么一次审查里被单独拆出的追踪型查找视角在 Claude Code 的代码审查体系中审查并非只有一个笼统的找 bug指令而是被拆解为多个独立的查找视角finder angles每个角度用不同的方式审视同一份 diff避免单一视角漏检。本仓库的 skill-code-review-correctness-finder-angles.md 集中定义了三个核心正确性角度Angle A — line-by-line diff scan逐行扫描每个 hunk再读取每个 hunk 所在的完整函数寻找条件反转、off-by-one、空值解引用、缺失await、falsy-zero 误判、复制粘贴错变量、catch 吞错、正则元字符未转义等问题Angle B — removed-behavior auditor对每一行被删除或被替换的代码说出它原本保障的不变量/行为再到新代码中寻找该不变量被重新建立的位置找不到即为候选缺陷Angle C — cross-file tracer对 diff 修改的每个函数找到它的所有调用方并检查改动是否破坏了调用点契约同时检查被调方。而 skill-code-review-angle-c-cross-file-tracer.md 正是把 Angle C 单独抽取出来的技能文件其完整原文如下For each function the diff changes, find its callers (Grep for the symbol) and check whether the change breaks any call site: a new precondition, a changed return shape, a new exception, a timing/ordering dependency. Also check callees: does a parallel change in the same PR make a call unsafe?这段指令定义了 Angle C 的两个方向方向动作检查目标向上callers对每个被改函数用 Grep 搜索符号找到所有调用点新增前置条件、返回值形态变化、新增异常、时序/顺序依赖向下callees检查同一 PR 中对被调方的并行改动是否让现有调用变得不安全从源码结构看Angle C 与其他角度共享同一套找候选Phase 1→ 验证Phase 2→ 补漏Phase 3→ 输出Output流水线是 agent-prompt-code-review-part-3-extra-high-and-maximum-effort-modes.md 中 55 angles 里五个正确性角度之一。二、Angle C 的检查清单四类调用方契约破坏Angle C 的核心是调用点契约call-site contract。当 diff 修改一个函数时审查者必须假设这个函数已经被别人调用然后逐一验证以下四类变化是否破坏了某个调用点1. 新增前置条件new precondition函数新增了调用方必须满足的前提但调用方不知道。典型场景参数从可为空变为必填如新增空值断言参数取值范围收窄如原来接受任意整数现在要求 0函数要求调用前必须完成某种初始化如先连接、先加载配置。检查动作对每个调用点问一句这个调用方满足新前置条件吗如果调用方在冷路径错误处理分支、缓存未命中分支、可选字段缺失分支上不满足就构成候选缺陷。2. 返回值形态变化changed return shape函数返回值发生结构性变化调用方仍按旧形态消费从返回单个值改为返回数组/对象/元组从总是返回值改为可能返回null/undefined返回值类型改变如从string改为number错误语义改变如原来返回错误码现在抛异常。检查动作追踪每个调用点对返回值的消费方式解构、判空、类型断言、透传确认新形态下消费逻辑仍然成立。3. 新增异常new exception函数新增了抛异常路径或把原路径从吞错改为抛错调用方没有对应的 try/catch。检查动作对比调用方的异常处理边界确认新异常不会逃逸到用户可见的崩溃路径。这里可与 Angle Bremoved-behavior auditor配合——如果 diff 删除了某处的 catch 或 guardAngle B 负责找被删行为去哪了Angle C 负责确认逃逸的异常会砸到哪个调用方。4. 时序/顺序依赖timing/ordering dependency改动引入了对调用时机或调用顺序的新依赖函数变成必须异步等待后才能调用函数内部开始依赖某个全局状态的先后设置顺序新增了缓存预热、连接建立、资源释放等时序前提。检查动作从调用方视角判断调用时点是否满足新时序要求特别是并发场景竞态、重试风暴、部分失败下是否仍然成立。这一点与 agent-prompt-code-review-part-5-recall-biased-verification-phase.md 中明确列为 PLAUSIBLE 的concurrency races、retry storms / partial failures等现实状态直接对应。5. 反向检查callees 的并行改动Angle C 原文特别强调第二个方向——检查 calleesdoes a parallel change in the same PR make a call unsafe?即同一 PR 中对被调函数的并行改动是否让本函数的现有调用变得不安全。示例本函数调用foo()同一 PR 把foo()的返回语义从可能为空改为必定为空或给foo()新增了前置条件——本函数的调用点同样需要按上述四类清单复查。三、操作步骤如何执行一次 Angle C 追踪结合 skill-code-review-phase-0-gather-the-diff.md 与 Angle C 技能文件执行路径如下Step 1 — 获取 diffPhase 0git diff {upstream}...HEAD # 已提交改动 git diff HEAD # 工作区未提交改动如范围内为空也执行若传入了 PR 编号、分支名或文件路径则审查该目标git diff main...HEAD、git diff HEAD~1等变体同样适用参见 agent-prompt-code-review-part-2-low-effort-mode.md 中对 diff 获取命令的说明。Step 2 — 枚举被修改的函数遍历每个 hunk找出被修改/新增/删除的函数符号函数名、方法名、构造函数、导出符号。注意 Angle A 的原则同样适用被触碰函数中未改动的行也在审查范围内PR 重新暴露了它们或未能修复它们因此被改函数本体也要快速扫一遍。Step 3 — 向上追踪调用方对每个符号执行 Grep本技能文件中明确要求 Grep for the symbol收集仓库内所有调用点及其所在文件跨文件调用这正是 Angle C 名为 cross-file 的原因——缺陷往往藏在 diff 之外的调用方文件里测试代码中对它的调用帮助理解旧契约。Step 4 — 逐调用点比对四类契约对每个调用点套用第二节的四类清单调用方是否满足新前置条件调用方是否正确消费新返回值形态调用方是否覆盖新异常路径调用方调用时点是否满足新时序依赖对每个存疑调用点记录file、line、一句话summary与具体failure_scenario具体输入/状态 → 错误输出或崩溃。Step 5 — 向下检查被调方对函数体内每个被调函数检查同一 PR 是否并行修改了它若是按相同四类清单复查本函数与被调方的调用契约。四、Angle C 在审查流水线中的位置与配合1. 与其它 Angle 的分工与配合角度视角与 Angle C 的关系A逐行 diff 扫描hunk 内部 所在函数覆盖行级缺陷Angle C 负责行级看不到的跨文件破坏B删除行为审计被删/被替换的行Angle C 发现新增异常逃逸B 确认被删 guard 未重建——两者互补C跨文件追踪调用方与被调方本文主题D语言陷阱专家语言/框架经典坑与 C 正交如 C 追踪调用链时 D 补充 JS falsy-zero、Python 可变默认参数等语言层陷阱E包装器/代理正确性包装类型转发E 检查delegate字段是否误经 registry/session 转发导致递归C 则从调用方角度确认包装器暴露的契约未被破坏各角度并行运行且互相抑制根据 agent-prompt-code-review-part-3-extra-high-and-maximum-effort-modes.mdDo NOT let one angles conclusions suppress anothers——若两个角度对同一行给出不同理由的发现两条都要记录。2. 不同 effort 档位下 Angle C 的启用情况档位角度数量Angle C 是否参与依据low无 finder angles否仅单次 diff 读取agent-prompt-code-review-part-2-low-effort-mode.mdmedium3 正确性角度 3 cleanup 1 altitude 1 conventions是作为 3 个正确性角度之一agent-prompt-code-review-part-6-medium-effort-mode.mdhigh3 正确性角度 3 cleanup 1 altitude 1 conventions是agent-prompt-code-review-part-7-high-effort-mode.mdextra-high / max5 正确性角度 3 cleanup 1 altitude 1 conventions是5 个正确性角度包含 Angle Cagent-prompt-code-review-part-3-extra-high-and-maximum-effort-modes.md各档位的完整角度集合定义于 agent-prompt-code-review-part-1-base-finder-angles.md而 Angle C 的独立技能文件 skill-code-review-angle-c-cross-file-tracer.md 就是该角度在各档位被引用时的正文内容。3. 候选发现如何进入验证与输出Phase 1 产出的候选进入 Phase 2 三态验证agent-prompt-code-review-part-4-three-state-verification-phase.mdCONFIRMED能命名触发它的输入/状态及错误输出或崩溃并引用具体代码行PLAUSIBLE机制真实但触发条件不确定时序、环境、配置需说明何种证据可确认REFUTED事实错误或已被他处 guard引用证明行。在 high 及以上档位采用recall-biased 验证agent-prompt-code-review-part-5-recall-biased-verification-phase.md竞态、罕见但可达的空值路径错误处理器、冷缓存、可选字段缺失、falsy-zero 被当作缺失等现实状态默认判为 PLAUSIBLE只有能从代码构造出反证引用实际行、类型/常量/不变量证明不可能、diff 内已有 guard、纯风格无观察影响才 REFUTED。单票通过——任一非 REFUTED 投票即保留该发现不要在不确定性上丢弃候选。最终按 agent-prompt-code-review-part-10-reportfindings-output-format.md 以{level, findings}结构报告每条发现含file、line、summary、short_summary≤60 字符、failure_scenario、category如correctness或更具体的 kebab-case 标签有验证时附加verdict也可参考 skill-code-review-output-findings-json-array.md 的 JSON 数组形态。五、实战一个可推导的 Angle C 工作流示例以下示例基于仓库中可确认的机制构造用于说明 Angle C 的执行逻辑非仓库内真实代码场景某 PR 将getUser(id)的返回值从User对象改为可能返回null新增前置条件/返回值形态变化并让getUser在数据库连接失败时改为抛DbUnavailableError新增异常。Angle C 执行GrepgetUser得到调用点profile.ts渲染用户资料、auth.ts登录校验、billing.ts账单生成逐个检查profile.ts直接解构getUser(id).name→ 新返回值可能为null解构即崩溃 →CONFIRMED可引用调用行auth.ts已有判空 → 不受返回值形态影响但未捕获新异常 →PLAUSIBLE异常逃逸取决于连接失败是否在该路径可达billing.ts在事务内调用抛异常会中断事务 → 需确认调用方是否有回滚处理 →PLAUSIBLE向下检查PR 同时改了getUser内部调用的cache.get(id)将缓存未命中从返回undefined改为抛CacheMissError——getUser自身未捕获该新异常 →CONFIRMED引用getUser内未加 try/catch 的行所有候选进入三态验证与输出阶段按严重度排序上报。六、适用范围与局限适用前提Angle C 依赖 Grep 能力与完整仓库上下文因此只在 medium 及以上档位启用low 档单次读取 diff、不读全文件、不追踪调用方见 agent-prompt-code-review-part-2-low-effort-mode.md语言无关四类契约破坏前置条件、返回值形态、异常、时序是跨语言的通用模型适用于 JS/TS、Python、Go、Java、Ruby 等任意代码库跨文件是核心价值单文件审查永远看不到diff 之外调用方还在按旧契约消费这正是 Angle C 被单独立项的原因验证纪律recall 模式下宁可多报漏报的 bug 会随代码发布medium 精度模式下则要求每条发现都是维护者会动手修的问题Angle C 产出必须带可命名的failure_scenario无场景的感觉有问题不应进入验证阶段。七、延伸阅读仓库内相关文件角度定义总览skill-code-review-correctness-finder-angles.md各档位管线agent-prompt-code-review-part-3-extra-high-and-maximum-effort-modes.md、agent-prompt-code-review-part-6-medium-effort-mode.md、agent-prompt-code-review-part-7-high-effort-mode.md验证阶段agent-prompt-code-review-part-4-three-state-verification-phase.md、agent-prompt-code-review-part-5-recall-biased-verification-phase.md输出格式agent-prompt-code-review-part-10-reportfindings-output-format.md、skill-code-review-output-findings-json-array.md相关角度skill-code-review-angle-b-removed-behavior-auditor.md、skill-code-review-angle-d-language-pitfall-specialist.md、skill-code-review-angle-e-wrapper-proxy-correctness.md赞分享文档提示工程人工智能【免费下载链接】claude-code-system-promptsAll parts of Claude Codes system prompt, 27 builtin tool descriptions, sub agent prompts (Plan/Explore/Task), utility prompts (CLAUDE.md, compact, statusline, magic docs, WebFetch, Bash cmd, security review, agent creation). Updated for each Claude Code version.项目地址https://gitcode.com/gh_mirrors/cl/claude-code-system-prompts点击查看免费下载相关推荐Claude Code 代码审查技能解析Angle E 包装器/代理正确性Wrapper/Proxy Correctness检查实战指南Claude Code 代码审查技能解析Angle E 包装器/代理正确性Wrapper/Proxy Correctness检查实战指南 导读 本文深入解文档提示工程人工智能Claude Code 代码审查技能 Angle D语言陷阱专家language-pitfall specialist实战解析Claude Code 代码审查技能 Angle D语言陷阱专家language pitfall specialist实战解析 本篇技术指南围绕 Clau文档提示工程人工智能在 Claude Code 中调用 Codexcodex-plugin-cc 代码审查与任务委派插件实战指南在 Claude Code 中调用 Codexcodex plugin cc 代码审查与任务委派插件实战指南 本指南以 openai/codex plugi人工智能AI 插件代码智能体创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表