Code automatisiert manipulieren mit openRewrite

Code automatisiert manipulieren mit openRewrite

Die Releasezyklen von Software und Bibliotheken werden immer kürzer. Es steht z.B. die Migration auf das nächste Spring Boot oder die nächste Java LTS an. Oft stellt sich die Migration aufwändiger heraus als gedacht. Man behilft sich mit einem kleinen sed-Skript, um Anpassungen am Sourcecode vorzunehmen. Solche Skripte haben oft das Problem, das die Anpassungen statisch sind und nicht auf die unterschiedlichen Konstellationen im Code eingehen können. Zum Glück gibt es dafür mittlerweile eine andere Möglichkeit: OpenRewrite

Einfache Integration und Nutzung

Ein großer Vorteil von OpenRewrite ist die einfache Integration in bestehende Projekte. Mit nur wenigen Schritten können Entwickler das Tool in ihre Entwicklungsumgebung einbinden und sofort von den Vorteilen profitieren. OpenRewrite unterstützt verschiedene Programmiersprachen wie Java, Kotlin und mehr, was es zu einem vielseitigen Werkzeug für Entwickler macht.

Kein einfaches Suchen und Ersetzen

OpenRewrite verwendet nicht ein einfaches "Suchen und Ersetzen", sondern eine Schemantische Suche. Der Sourcecode wird dabei in eine Baumstruktur überführt (Lossless Semantic Trees). Auf diese Baumstruktur können dann Aktionen angewendet werden. Nähere Informationen dazu findet man hier. Die anzuwendenden Aktionen werden bei OpenRewrite "Receipes" genannt. Versteht man die Funktionsweise können eigene Rezepte jederzeit implementiert werden. Rezepte können auch auf anderen Rezepte basieren. Somit können mehrere Schritte wieder zusammen gefasst werden.

Wie wende ich ein Rezept an? Die Liste der bereits vorhandenen Rezepte ist lang. Bei der Durchsicht der Liste fällt auf das z.B. auch XML bearbeitet werden kann. Das zeigt wie mächtig das Tool ist. Die Einbindung in das eigene Projekt erfolgt über Maven oder Gradle. Um Rezepte mit Maven anwenden zu können gibt es zwei Möglichkeiten. Es kann ein Plugin in die pom.xml aufgenommen werden, was sich für Multimodule Projekte empfielt, oder das Plugin direkt aus der Kommandozeilte gestartet werden.

<profile> <id>openrewrite</id> <build> <plugins> <plugin> <groupId>org.openrewrite.maven</groupId> <artifactId>rewrite-spring</artifactId> <version>RELEASE</version> <configuration> <activeRecipes> <recipe>org.openrewrite.java.spring.boot3.SpringBootProperties_3_0</recipe> </activeRecipes> <failOnDryRunResults>true</failOnDryRunResults> </configuration> </plugin> </plugins> </build> </profile>

Es kann auch direkt aus der Kommandozeile ausgeführt werden!

mvn -U org.openrewrite.maven:rewrite-maven-plugin:run -Drewrite.recipeArtifactCoordinates=org.openrewrite.recipe:rewrite-spring:RELEASE -Drewrite.activeRecipes=org.openrewrite.java.spring.boot3.SpringBootProperties_3_0

Community und Dokumentation

OpenRewrite profitiert von einer aktiven und engagierten Gemeinschaft, die laufend neue Plugins und Erweiterungen entwickelt. Die Dokumentation von OpenRewrite ist umfassend und einsteigerfreundlich, was Entwicklern aller Erfahrungsstufen hilft, das Beste aus dem Werkzeug herauszuholen.

Fazit

Die einfache Integration, leistungsstarke Code-Transformation und die unterstützende Gemeinschaft machen es zu einem unverzichtbaren Werkzeug für Entwickler, die nach effizienten Möglichkeiten suchen, ihren Code zu verbessern. Bei SAPHIR haben wir openRewrite schon mehrfach erfolgreich in Projekten eingesetzt um schnell und kosteneffizient zu arbeiten. Ein Blick in die Liste der Rezepte lohnt sich auf jeden Fall.

← Zurück