💡
原文中文,约9000字,阅读约需22分钟。
📝
内容提要
本文介绍了 OpenRewrite 中配方和访问者的应用,配方用于代码重构,访问者用于遍历无损语义树。通过示例展示了如何为指定类添加注解,强调了二者的灵活性与可扩展性。
🎯
关键要点
-
本文介绍了 OpenRewrite 中的配方和访问者,配方用于代码重构,访问者用于遍历无损语义树。
-
访问者模式将算法与对象结构分开,遵循开放/封闭原则。
-
配方是一组逻辑集合,可对无损语义树执行搜索和重构操作,可以独立或组合使用。
-
ScanningRecipe 是一种特殊的配方,用于生成新源文件或查看所有源文件。
-
执行流水线指示如何对源文件应用配方,并执行代码转换任务。
-
执行上下文用于在多个配方及其访问者之间共享状态。
-
执行周期可能会重复多次运行整个 Recipe 链,直到没有新的修改或达到最大循环次数。
-
流水线成功执行后会生成 Result 实例集合,提供对源文件更改的信息。
-
访问者模式中有三个角色:被处理的对象结构、发起处理的客户端应用和执行处理逻辑的访问者。
-
OpenRewrite 提供的 visitElement 方法默认采用深度优先的方式对树进行遍历。
-
Tree 是所有无损语义树的实现接口,TreeVisitor 提供了访问者的多态导航和生命周期管理。
-
Cursor 用于在遍历无损语义树时跟踪访问者的位置。
-
示例中展示了如何为指定类添加注解,强调了 JavaTemplate 的使用。
-
总结了配方与访问者的结合如何灵活、可扩展地对大规模代码库进行修改和改进。
➡️