使用OpenRewrite消除繁琐工作

💡 原文英文,约600词,阅读约需2分钟。
📝

内容提要

OpenRewrite是一个用于重构Java代码的工具,可以快速可靠地对代码进行耗时的更改。通过使用Gradle init脚本,您可以在不修改项目的情况下从命令行运行OpenRewrite。该工具可以更新依赖项,修复导入问题,并替换注解和方法。OpenRewrite估计为作者节省了55分钟的工作时间。

🔎

延伸解读

为何选择Gradle init脚本方式

文章指出,许多OpenRewrite示例会修改项目的pom.xml或build.gradle文件,但作者更倾向于使用Gradle init脚本。因为重构配方通常只运行一次,通过init脚本可以在命令行执行OpenRewrite,而无需对项目文件做任何改动。这种方式避免了为一次性任务而永久修改构建配置,保持了项目的整洁,也降低了因临时修改而引入错误的风险。

运行配方时的关键参数与内存设置

运行OpenRewrite时,必须通过-Drewrite.activeRecipe属性指定要执行的重构配方,例如文中使用的SpringBoot2JUnit4to5Migration。此外,作者在命令中设置了-Dorg.gradle.jvmargs=-Xmx8G来增加堆内存,以防止OpenRewrite因内存不足而失败。这表明对于较大的代码库或复杂的重构,适当调整JVM内存是必要的操作步骤。

自动化重构的实际效果与人工干预

该配方自动完成了多项修改:更新build.gradle依赖、修复导入、移除@RunWith(SpringJUnit4ClassRunner.class)注解、将@RunWith(MockitoJUnitRunner.class)替换为@ExtendWith(MockitoExtension.class),以及将@Before替换为@BeforeEach。作者唯一需要手动处理的是将一些测试相关插件改为使用useJUnitPlatform()。这显示OpenRewrite能处理大部分重复性工作,但可能仍有少量配置需要人

❓

Q&A

OpenRewrite是什么?

OpenRewrite是一个用于重构Java代码的工具,可以快速可靠地对代码进行耗时的更改。

如何使用OpenRewrite进行JUnit 4到JUnit 5的迁移?

可以通过Gradle init脚本运行OpenRewrite,指定迁移配方并增加堆内存以防止内存不足。

使用OpenRewrite可以节省多少工作时间?

OpenRewrite估计为作者节省了55分钟的工作时间。

OpenRewrite支持哪些重构配方?

OpenRewrite提供了丰富的重构配方,包括将JUnit 4迁移到JUnit 5的配方。

如何从命令行运行OpenRewrite?

可以使用Gradle init脚本从命令行运行OpenRewrite,而无需修改项目。

运行OpenRewrite时需要注意什么?

运行OpenRewrite时需要指定要执行的重构配方,并可能需要增加堆内存以防止内存不足。

🏷️

标签

➡️

继续阅读