跳转至

重构清理

安全地识别未使用的代码,并在每一步通过测试验证后将其移除。

第 1 步:检测未使用的代码

根据项目类型运行分析工具:

工具 检测目标 命令
knip 未使用的 exports、文件、依赖 npx knip
depcheck 未使用的 npm 依赖 npx depcheck
ts-prune 未使用的 TypeScript exports npx ts-prune
vulture 未使用的 Python 代码 vulture src/
deadcode 未使用的 Go 代码 deadcode ./...
cargo-udeps 未使用的 Rust 依赖 cargo +nightly udeps

如果没有可用的工具,使用 Grep 查找没有 import 的 export:

# export를 찾은 후, 다른 곳에서 import되는지 확인

第 2 步:结果分类

按安全等级对结果进行分类:

等级 示例 措施
安全 未使用的工具函数、测试辅助函数、内部函数 有把握地删除
注意 组件、API 路由、中间件 确认没有动态 import 或外部消费者
危险 配置文件、入口点、类型定义 需要在改动前进行调查

第 3 步:安全删除循环

对每个安全项:

  1. 运行完整测试套件 --- 建立基线(全部通过)
  2. 删除未使用的代码 --- 使用 Edit 工具精确移除
  3. 重新运行测试套件 --- 确认没有破坏任何东西
  4. 测试失败时 --- 立即用 git checkout -- <file> 还原,并跳过该项
  5. 测试通过时 --- 继续下一项

第 4 步:处理注意项

在删除注意项之前: - 搜索动态 import:import()、require()、__import__ - 搜索字符串引用:路由名称、配置文件中的组件名称 - 确认是否从公开包 API 导出 - 确认没有外部消费者(若已发布,检查依赖包)

第 5 步:合并重复项

移除未使用的代码后,寻找以下内容: - 几乎重复的函数(相似度 80% 以上)--- 合并为一个 - 重复的类型定义 --- 统一 - 不增加价值的包装函数 --- 内联处理 - 没有目的的 re-export --- 移除间接引用

第 6 步:总结

报告结果:

Dead Code Cleanup
──────────────────────────────
삭제:     미사용 함수 12개
           미사용 파일 3개
           미사용 의존성 5개
건너뜀:   항목 2개 (테스트 실패)
절감:     약 450줄 제거
──────────────────────────────
모든 테스트 통과 PASS:

规则

  • 绝不先运行测试就删除
  • 一次只删除一项 --- 原子性变更易于回滚
  • 不确定就跳过 --- 保留未使用的代码比破坏生产环境更好
  • 清理时不要重构 --- 关注点分离(先清理,后重构)

本页原文 Markdown:在 AtomGit 查看·内容源自开源项目 ev/ECC