用途:在代码库中安全地重命名函数、变量、类等符号,并更新所有引用。
主要能力:提供从查找定义与用法、审查匹配、应用修改到验证的完整工作流。针对不同语言给出具体方案:Clojure 使用 clj-kondo 查找所有出现位置,再用 Edit 工具修改;JavaScript/TypeScript、Python、Go、Rust 使用 ast-grep 进行结构化重命名,支持预览、交互式审查和批量更新;不支持的语言或复杂情况回退到 ripgrep 加 Edit 工具。
使用方式:先查找所有出现位置(定义与用法),审查匹配以排除误报,再应用修改,最后运行测试和 lint 验证。Clojure 示例命令:clj-kondo --lint . --config '{:output {:format :json}, :analysis {:var-definitions true, :var-usages true}}'。JS/TS 示例:ast-grep run --pattern 'oldName' --rewrite 'newName' --lang js src/ --update-all,可用 --interactive 交互审查。Python、Go、Rust 也有对应的 ast-grep 结构化模式。回退方案:rg -n '\bold_name\b' src/ 查找,再用 Edit 工具逐文件修改。
适用场景:需要跨文件重命名符号并确保所有引用同步更新的重构任务。
限制与注意事项:重命名前应提交或暂存当前修改,理解作用范围,检查字符串字面量和动态引用。注意部分匹配问题(如 user 与 username),使用词边界或语法感知工具。注意命名空间限定引用、别名引用和不同上下文中的同名符号。重命名后运行 linter 和测试,搜索残留引用,审查 diff。需要语义精确时可考虑 LSP/IDE。