#1031: integrate openrewrite - #2299
Conversation
…1031_intergrate_with_openrewrite
…nrewrite' into feature/1031_intergrate_with_openrewrite
…ith_openrewrite # Conflicts: # cli/src/main/java/com/devonfw/tools/ide/commandlet/CommandletManagerImpl.java # cli/src/main/resources/nls/Help.properties # cli/src/main/resources/nls/Help_de.properties
…rent version of IDEasy
…ith_openrewrite # Conflicts: # cli/src/main/java/com/devonfw/tools/ide/commandlet/CommandletManagerImpl.java # cli/src/main/resources/nls/Help.properties # cli/src/main/resources/nls/Help_de.properties
…rds and added more tests
…h_openrewrite # Please enter a commit message to explain why this merge is necessary, # especially if it merges an updated upstream into a topic branch. # # Lines starting with '#' will be ignored, and an empty message aborts # the commit.
Coverage Report for CI Build 32749918658Coverage decreased (-0.07%) to 73.417%Details
Uncovered ChangesNo uncovered changes found. Coverage Regressions10 previously-covered lines in 2 files lost coverage.
Coverage Stats💛 - Coveralls |
Ali-Shariati-Najafabadi
left a comment
There was a problem hiding this comment.
Nice first step on the OpenRewrite integration. A few things before this can merge:
Missing CHANGELOG.adoc entry for #1031.
Left a few inline notes: an exception path that can leak a raw NPE, a redundant try/catch, some stale help text, and a bit of dead code.
Scope-wise, the original issue talked about AssertJ/Hamcrest/JUnit recipes plus a generic --artifact= option ,this PR only covers two formatting recipes. Might be fine as a first cut, but worth checking with a maintainer whether that's okay to merge as-is.
|
@Ali-Shariati-Najafabadi thanks for all the Review suggestions! I agree with you on all of them and added them all. |
Ali-Shariati-Najafabadi
left a comment
There was a problem hiding this comment.
Verified, all the review points look properly addressed.
hohwille
left a comment
There was a problem hiding this comment.
@samuelkos17 thanks for taking over this PR. 👍
It has been a long time since I wrote the initial story for this.
Before this is ready to merge I see some issues:
- You create a new commandlet but removed the DoD checklist for new commandlets.
- This way you missed to add OpenRewirte to our license
- Shouldn't RewriteCommandlet be a LocalToolCommandlet? I see that technically nothing needs to be installed here since we are just triggering mvn that you are properly invoking as commandlet so it will ensure installing mvn and java if needed and also supports mnvw, etc. So maybe we want to keep it as is but just logically I would consider this as a local tool that should also have tags.
- You implemented what I wrote in the story. However, during the review I get the impression that it would make much more sense to have
openrewrite.jsoninide-settingsso recipe shortcuts are not hard-coded but can be added by projects without changing the code of IDEasy. We can still create a follow up story for this and first merge this and later improve with a new PR. However, just reading the current code does not seem to make much sense. If we include the JSON into our release we can also hard-code its content in Java and would need no JSON parser. This is why I read the story again since I expected that I have suggested the JSON so that it can be configured outside of the IDEasy product dynamically but somehow I did not write this correctly in the story description. But great that you implemented the JSON mapping already so if we (later) support to read the JSON from outside this is already there. - I would not add the recipe options to the help texts - they will quickly outdate if something changes. For this we have auto-completion that always reflects the truth and needs no update if JSON/enum changes.
|
@hohwille thanks for the Review! I removed the reflect-config.json entry and also renamed the german help sentence for the recipe names. Regarding your questions:
|
OK. Thanks for clarification. Indeed it is strange that we already have the license listed before the tool was actually integrated.
Can you create the issue and link it here? I am asking since years ago I was not tracking such things and then month later discovered lots of problems where the developers promised to do the rework in a follow up PR but then forgot about it and important things simply got lost. I don't want to go though the same pain again. Thanks. |
This PR fixes #1031
Old PR was #1266
Implemented changes:
RewriteCommandlet— new commandlet to execute OpenRewrite recipesRecipeManager— manages and loads configurable OpenRewrite recipesRecipeWrapper/RecipeWrapperJsonDeserializer— wrapper and JSON deserializer for recipe configurationRewriteRecipeEnum— enum for predefined rewrite recipesrefactor/openrewrite.json) for defining recipesCommandletManagerImpl,JsonMapping, and native-image reflect/resource configs to support the new modulesRewriteCommandletandRecipeManagerTesting instructions
Please add conscise, understandable instructions on how a reviewer can test/verify the functionality of your contribution here:
mvn clean testin theclimodule to verify all tests passrewritecommandlet manually with the providedopenrewrite.jsonconfiguration using the local dev build.Checklist for this PR
Make sure everything is checked before merging this PR. For further info please also see
our DoD.
mvn clean testlocally all tests pass and build is successful#«issue-id»: «brief summary»(e.g.#921: fixed setup.batand notfeature/921 fixed setup.bat). If no issue ID exists, title only.In Progressand assigned to you or there is no issue (might happen for very small PRs)with
internalpom.xmlfiles or otherwise if runtime dependencies changed, you have updated our LICENSE.asciidoc