Gar*_*ker 7 java refactoring automated-refactoring
如何通过 Java 代码/Groovy 插件以编程方式重构此类?比方说,我需要:
foo.method2为foo.method3myMethod为yourMethodorg.you.core.util.AnotherClassFromExternalPackageimport com.me.core.util.AnotherClassFromExternalPackage;
import com.me.core.util.Foo;
public class MyClass implements AnotherClassFromExternalPackage {
private final Foo foo;
public MyClass() {
this.foo = new Foo();
}
@Override
public long myMethod() {
return foo.method2();
}
}
Run Code Online (Sandbox Code Playgroud)
如何创建一个脚本来解析代码、应用语法转换并使用给定的指令保存它?
上面的代码只是一个例子。更大的问题是我有很多项目都使用相同的外部库。有时,他们会发布一个包含重大更改的新版本,这些更改会在依赖项冲突后破坏当前代码。我必须每 2 周将 10 多个项目的依赖项更新到最新版本。我需要编写一个脚本来自动修复这些重大更改。理想情况下,逐一应用代码转换。
听起来像是OpenRewrite的工作。可以使用标准方法,例如用于重命名包的方法。您还可以编写自己的方法,在源代码的基于树的表示上使用访问者模式(这将保留例如缩进)。
您可以使用 Maven 或 Gradle 来执行重写。
例如,入门页面中的更改包配置如下所示:
type: specs.openrewrite.org/v1beta/recipe
name: com.yourorg.VetToVeterinary
recipeList:
- org.openrewrite.java.ChangePackage:
oldPackageName: org.springframework.samples.petclinic.vet
newPackageName: org.springframework.samples.petclinic.veterinary
Run Code Online (Sandbox Code Playgroud)