98 lines
2.7 KiB
Markdown
98 lines
2.7 KiB
Markdown
---
|
||
name: trace-code-flow
|
||
description: "快速追踪用户指定功能从入口到输出的调用链、数据流、状态变化、单位和坐标系。只进行代码分析,不修改文件,仅在用户显式调用 $trace-code-flow 时使用。"
|
||
---
|
||
|
||
# 追踪代码执行流程
|
||
|
||
快速分析指定功能在代码中的完整执行路径,只读检查代码,不修改任何文件。
|
||
|
||
## 分析范围
|
||
|
||
1. 读取当前目录适用的 `AGENTS.md`。
|
||
2. 以用户指定的函数、类、接口、事件或功能为起点。
|
||
3. 用户未指定目标时,先询问,不默认扫描整个项目。
|
||
4. 只检查完成追踪所必需的文件。
|
||
5. 跳过第三方依赖、编译产物、缓存、日志和自动生成文件。
|
||
|
||
## 追踪内容
|
||
|
||
重点追踪:
|
||
|
||
- 功能入口和触发条件;
|
||
- 上层调用者;
|
||
- 实际执行的函数和实现类;
|
||
- 参数和数据来源;
|
||
- 中间的数据转换;
|
||
- 条件分支和提前返回;
|
||
- 对象字段、全局状态和缓存的变化;
|
||
- 文件、数据库、网络、串口等外部交互;
|
||
- 最终返回值、输出消息或执行结果;
|
||
- 数值单位、坐标系、方向和角度约定。
|
||
|
||
## 分析原则
|
||
|
||
- 优先依据当前代码,不根据函数名猜测行为。
|
||
- 区分接口声明、具体实现和实际调用位置。
|
||
- 遇到重载、继承、事件、委托、回调或依赖注入时,确认可能执行的实现。
|
||
- 无法静态确认的动态路径标记为“运行时决定”。
|
||
- 每项重要结论尽量标注文件路径、类名和方法名。
|
||
- 不展开与目标无关的辅助函数。
|
||
- 不运行耗时较长的完整构建或测试,除非用户明确要求。
|
||
|
||
## 单位和坐标系
|
||
|
||
发现数值传递时,检查:
|
||
|
||
- 长度是 `m`、`cm` 还是 `mm`;
|
||
- 速度是 `m/s`、`km/h` 还是其他单位;
|
||
- 角度是 `rad` 还是 `deg`;
|
||
- 时间是 `s`、`ms` 还是时间戳;
|
||
- 坐标属于世界、地图、车辆、传感器或局部坐标系;
|
||
- 是否存在缩放、归一化、符号取反或坐标变换。
|
||
|
||
代码不能确认时标记为“待确认”,不得自行推断。
|
||
|
||
## 输出格式
|
||
|
||
按照以下结构输出:
|
||
|
||
```markdown
|
||
## 目标
|
||
|
||
功能、入口以及分析范围。
|
||
|
||
## 调用链
|
||
|
||
入口方法
|
||
→ 中间方法
|
||
→ 核心实现
|
||
→ 输出方法
|
||
|
||
每一步标注对应文件和符号。
|
||
|
||
## 数据流
|
||
|
||
| 阶段 | 输入 | 处理 | 输出 | 单位/坐标系 |
|
||
|---|---|---|---|---|
|
||
|
||
## 状态变化
|
||
|
||
| 位置 | 状态 | 变化 | 影响 |
|
||
|---|---|---|---|
|
||
|
||
没有状态变化时明确说明。
|
||
|
||
## 分支与异常路径
|
||
|
||
说明关键条件分支、提前返回、异常处理和失败结果。
|
||
|
||
## 最终输出
|
||
|
||
说明最终返回值、发送消息、文件写入或硬件指令。
|
||
|
||
## 待确认
|
||
|
||
列出无法通过静态代码确定的信息。
|
||
```
|