Add Gradle tasks and Git hooks for IntelliJ-based code formatting (#15535)#15555
Add Gradle tasks and Git hooks for IntelliJ-based code formatting (#15535)#15555sanjana2505006 wants to merge 4 commits intoapache:7.0.xfrom
Conversation
56037b6 to
e886bca
Compare
|
@sanjana2505006 we explicitly decided to not auto-install the hook so it would be optional if people wanted it. |
|
To revert the changes in build.gradle, remove the added plugin block and revert the lambda expressions in the ext block back to method references. build.gradle |
| private static void doNotApplyStylingToTests(Project project) { | ||
| project.tasks.named('checkstyleTest') { | ||
| it.enabled = false // Do not check test sources at this time | ||
| if (project.tasks.names.contains('checkstyleTest')) { |
There was a problem hiding this comment.
Can you help me understand why this change was necessary?
There was a problem hiding this comment.
I originally added this to focus the initial rollout on production source code and avoid overwhelming the PR with style violations from the existing test suite. However, I agree that tests should ideally follow the same standards. Would you prefer that I remove this block and enable styling for tests as well?
There was a problem hiding this comment.
While we do need to eventually format our tests, we have agreed to not do so at this time. We should leave styles and only adjust the styles when working on the tests.
| throw new RuntimeException("IntelliJ formatter executable not found.") | ||
| } | ||
|
|
||
| def filesToFormat = project.findProperty('formatFiles') |
There was a problem hiding this comment.
I hadn't considered the useful of having a format task added to the subprojects. I still think we should split the format tasks out from the code style though - otherwise you're trying to apply styling to the root project which we don't want to do.
There was a problem hiding this comment.
I completely agree with the split. I've moved all the formatting logic into a separate grails-format plugin.
| throw new RuntimeException("IntelliJ code style settings not found at ${settingsFile.absolutePath}") | ||
| } | ||
|
|
||
| project.exec { ExecSpec exec -> |
There was a problem hiding this comment.
Take a look at the publishAllToMavenLocal task for how to do in this a modern Gradle way without referencing project .
I have reverted the |
7f21945 to
0ca94f3
Compare
jdaugherty
left a comment
There was a problem hiding this comment.
@borinquenkid Can you please take a look at this as well? I think this is very close to being mergeable.
| } | ||
| } | ||
|
|
||
| private static void doNotApplyStylingToTests(Project project) { |
There was a problem hiding this comment.
This needs to stay. We decided as a project to not yet do styling changes to the tests.
|
@sanjana2505006 if you can get the rest of these comments implemented, I'll ping another reviewer and we can get this merged. |
5251fb7 to
2322979
Compare
Done, please have a look and let me know if there's anything I need to update. |
| ext { | ||
| isReproducibleBuild = System.getenv("SOURCE_DATE_EPOCH") != null | ||
| buildInstant = java.util.Optional.ofNullable(System.getenv("SOURCE_DATE_EPOCH")) | ||
| .filter(s -> !s.isEmpty()) |
✅ All tests passed ✅🏷️ Commit: 769f735 Learn more about TestLens at testlens.app. |
Made-with: Cursor
769f735 to
ae7d7d1
Compare
Added a
formatCodeGradle task that uses the IntelliJ CLI formatter to keep our code style consistent. I also added aninstallGitHookstask that sets up a git pre-commit hook to automatically format staged files. This should help avoid formatting issues during review. Fixes #15535.