研发协作
Rust 安全重构:用 LSP 影响分析完成重命名…
在 Rust 项目中执行重命名、提取函数、内联或移动符号时,借助 LSP 分析引用和依赖,先 dry-run 预览再安全应用修改。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 38/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 55/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 59/100 ×0.15
适用场景
Rust 安全重构:用 LSP 影响分析特定
解决思路
- 使用命令 `/rust-refactor-helper <action> <target> [--dry-run]` 执行重构。
- 支持动作:`rename <old> <new>` 重命名符号;`extract-fn <selection>` 提取为函数;`inline <fn>` 内联函数;`move <symbol> <dest>` 移动到模块。
- 示例调用:`/rust-refactor-helper rename parse_config load_config`;`/rust-refactor-helper extract-fn src/main.rs:20-35`;`/rust-refactor-helper move UserService src/services/`。
- 重构前用 LSP 分析:调用 `LSP(operation: "findReferences", filePath: "src/lib.rs", line: 25, character: 8)` 查找所有引用;调用 `LSP(operation: "hover", filePath: "src/lib.rs", line: 25, character: 8)` 获取符号信息;调用 `LSP(operation: "incomingCalls", filePath: "src/lib.rs", line: 25, character: 8)` 为 move 操作检查调用层级。
- Rename Symbol 工作流:用 `LSP(goToDefinition)` 查找符号定义;用 `LSP(findReferences)` 查找所有引用;按文件分类;检查冲突,包括 `load_config` 是否已使用、是否有宏生成的引用;用 `--dry-run` 展示影响分析;用 Edit 工具应用修改。
- Rename Symbol 输出:展示影响分析,包括 Definition 位置、References found 数量、包含 File/Line/Context/Change 的表格;列出 Potential Issues,如 Documentation reference 需手动更新、Re-export 是 public API change;提供 Proceed? 选项:`--dry-run`(preview only)或 Apply changes。
- Extract Function 工作流:读取选中的代码块;分析变量,输入是块中使用但未在块内定义的变量,输出是块内定义且在块后使用的变量,局部是仅在块内定义和使用的变量;确定函数签名;检查提前返回、循环等;生成提取后的函数;用调用替换原代码。
- Extract Function 输出:展示 Selected Code;展示 Analysis,包括 Inputs、Outputs、Side Effects;展示 Extracted Function;展示 Replacement。
- Move Symbol 工作流:查找符号及其所有依赖;用 `LSP(findReferences)` 查找所有引用(调用方);分析需要的 import 变更;检查循环依赖;生成移动计划。
- Move Symbol 输出:展示 Current Location;展示 Dependencies(将一起移动的部分);展示 Import Changes Required 表格,包含 File/Current/New;展示 New File Structure;展示 Circular Dependency Check。
- 执行安全检查:引用完整性,确保所有使用都被找到;名称冲突,检测同名符号;可见性变更,在 pub/private 作用域变化时警告;宏生成代码,对宏中的代码警告;文档,标记提及该符号的 doc comments;测试覆盖,展示受影响的测试。
- 始终先用 `--dry-run` 预览,例如 `/rust-refactor-helper rename old_name new_name --dry-run`,只展示所有变更而不应用。
适用边界 · 注意事项
- 非 Rust 项目不适用。
- 没有 LSP 工具或 LSP 支持的环境无法执行安全影响分析,不适用。
- 需要导航符号、理解调用流、分析项目结构或查看 trait 实现时,改用 rust-code-navigator、rust-call-graph、rust-symbol-analyzer、rust-trait-explorer。