openrewrite/rewrite
开发工具用预置或自定义 recipe 对 Java 等语言源码做自动化、可重复的重构。
OpenRewrite 是一个开源源码自动重构引擎,面向希望清理技术债的开发者:框架迁移、安全修复、风格统一等任务可以通过运行打包好的“recipe”完成,而不必手工逐文件修改。项目称这类工作可从数小时乃至数天缩短到数分钟 README。
工作机制
Recipe 运行在 OpenRewrite 的 Lossless Semantic Tree(LST)上。LST 是带类型信息的内存源码模型,并保留格式细节,每次运行 recipe 时重新构建。由于分析带类型信息,recipe 可以针对具体代码结构,而不是只做文本匹配 LST 文档。项目说明 recipe 易于定制,可以改造现有 recipe,也可以自己编写 README。
运行方式
最基本的方式是针对单个仓库运行单条 recipe。对 Java 来说,文档给出的集成方式是 OpenRewrite Gradle 插件和 OpenRewrite Maven 插件,项目还提供了首次使用的快速入门指南 快速入门、Gradle 插件、Maven 插件。README 将 OpenRewrite 定位为按仓库运行的工具;跨数百或数千个仓库批量运行同一批 recipe 是商业平台 Moderne 的职责,该平台构建在 OpenRewrite 之上 README,并不属于开源引擎本身。
语言与许可
核心项目支持多种语言的解析器和基础 recipe,文档列出的包括 Java、Kotlin、Groovy、JavaScript/TypeScript、Python 和 C# 支持语言。许可采用分层结构:核心项目为 Apache-2.0 仓库,但 Java 之外其他语言的解析器和基础 recipe 采用 Moderne Source Available License,允许免费用于自己的代码;这些生态中用于大规模分析、安全修复和 AI 工具调用的专有 recipe 则需要 Moderne 商业许可 许可说明。因此团队在选用前应确认具体 recipe 和解析器适用的许可——“开源”并不覆盖这里的每个组件。README 也明确说明存在分层许可模式,该边界同样关系到再分发和内部使用。
实际限制
README 没有说明回滚、升级或撤销行为,插件版本与兼容性放在外部文档而非仓库页面。现有材料描述的是范围与许可,并未评估真实仓库中的迁移准确性或性能,因此这些结果无法据此判断。在应用到代码库前,应查看 recipe 的说明和支持语言,并让改动纳入版本控制,以便像普通 diff 一样审阅结果 文档。
本文由 AI 根据项目 README 生成,更新于 2026年10月30日,以项目官方文档为准。