Introduction to OpenRewrite
OpenRewrite is an automated refactoring ecosystem for source code, enabling developers to effectively eliminate technical debt within their repositories.
It consists of an auto-refactoring engine that runs prepackaged, open-source refactoring recipes for common framework migrations, security fixes, and stylistic consistency tasks – reducing your coding effort from hours or days to minutes. Build tool plugins like the OpenRewrite Gradle plugin and the OpenRewrite Maven plugin help you run these recipes on one repository at a time.
While the original focus was on the Java language, the OpenRewrite community is continuously expanding language and framework coverage. Thousands of great individuals and teams are working together to make software seamless to update and continuously secure.
How does OpenRewrite work?
OpenRewrite works by making changes to Lossless Semantic Trees (LSTs) that represent your source code and printing the modified trees back into source code. You can then review the changes in your code and commit the results. Modifications to the LST are performed in Visitors and visitors are aggregated into Recipes. OpenRewrite recipes make minimally invasive changes to your source code that honor the original formatting.
For example, if you want to consistently use static imports across all of your test files, rather than doing this manually, you could use the UseStaticImport
visitor provided by OpenRewrite. Applied to the file below, you can see the changes this generates.
// Before OpenRewrite
import org.junit.Assert;
Assert.assertTrue(condition);
// After OpenRewrite
import static org.junit.Assert.assertTrue;
assertTrue(condition);
Get started
- If you want to jump right in and run recipes on some sample code, check out our quickstart guide.
- If you want to learn how to create your own recipes, start with the Recipe Development Environment guide and then work through the Writing a Java Refactoring Recipe guide.
- If you have questions, join us in Slack or Discord. We're happy to answer your questions directly.
- Check out our community office hours where we dive deep into key topics and answer community questions.
- Subscribe to our YouTube channel for great videos on OpenRewrite recipes.
Refactoring at scale with Moderne
Moderne is a commercial platform designed to run the OpenRewrite recipe catalog with incredible efficiency, supporting large codebases and multiple repositories. It's a place where platform teams and developers can collaborate to drive migrations across their codebases, mass-commit code fixes, and perform large-scale impact analyses.
See how Moderne and OpenRewrite work in different ways to transform your code:
Moderne freely runs an open public service for the benefit of tens of thousands of open-source projects. The platform can streamline your recipe customization and creation, enabling quick assembly and testing. It also includes a multi-repo command line interface (CLI) to enable developers to run and customize recipes locally.
To understand better how Moderne can help your team, contact us.