Skip to content

Commit 518b547

Browse files
committed
chore: add OpenRewrite for automatic code style fixes
1 parent 80c0d93 commit 518b547

42 files changed

Lines changed: 563 additions & 2 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

build-logic/build-parameters/build.gradle.kts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,10 @@ buildParameters {
8282
defaultValue.set(false)
8383
description.set("Skip AutoStyle verifications")
8484
}
85+
bool("skipOpenrewrite") {
86+
defaultValue.set(false)
87+
description.set("Skip OpenRewrite processing")
88+
}
8589
bool("skipCheckstyle") {
8690
defaultValue.set(false)
8791
description.set("Skip Checkstyle verifications")

build-logic/checksum.xml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,9 @@
118118
<dependency group='org.nosphere.apache' module='creadur-rat-gradle' version='0.8.1'>
119119
<sha512>397C3257C5448C26304B312212F6DA1649AD15E52CE0419C5BA647F8A68864707A0C8071FA9860C28AA9D626D66C8FAF2D5F576E693F9D01B0F71EEEB84B57FB</sha512>
120120
</dependency>
121+
<dependency group='org.openrewrite' module='plugin' version='6.6.3'>
122+
<sha512>FAE9431F2ADE6A8460C7E86AC5FA4AB7A2E11DB919BB9C60F59BD684CF5AF42A9D0DBFD4835AC8450F0F5B36258B6DF1920E445F84CBD3CFE2944F4CE430DF58</sha512>
123+
</dependency>
121124
<dependency group='org.sonarsource.scanner.gradle' module='sonarqube-gradle-plugin' version='4.0.0.2929'>
122125
<sha512>5CD9C5E9C91145E6F5FC1DA819F6241ADCE8685C6C71F480CB7F7F1D2ACFCDFD19C631E7DC2E9FDDEDBA840C6063A020A377644C80543A9E366DF65642F16F8C</sha512>
123126
</dependency>

build-logic/jvm/build.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,4 +28,5 @@ dependencies {
2828
api("org.jetbrains.kotlin.jvm:org.jetbrains.kotlin.jvm.gradle.plugin:1.9.22")
2929
api("org.jetbrains.kotlin.kapt:org.jetbrains.kotlin.kapt.gradle.plugin:1.9.22")
3030
api("org.jetbrains.dokka:org.jetbrains.dokka.gradle.plugin:1.9.10")
31+
api("org.openrewrite.rewrite:org.openrewrite.rewrite.gradle.plugin:6.6.3")
3132
}
Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
/*
2+
* Licensed to the Apache Software Foundation (ASF) under one or more
3+
* contributor license agreements. See the NOTICE file distributed with
4+
* this work for additional information regarding copyright ownership.
5+
* The ASF licenses this file to you under the Apache License, Version 2.0
6+
* (the "License"); you may not use this file except in compliance with
7+
* the License. You may obtain a copy of the License at
8+
*
9+
* http://www.apache.org/licenses/LICENSE-2.0
10+
*
11+
* Unless required by applicable law or agreed to in writing, software
12+
* distributed under the License is distributed on an "AS IS" BASIS,
13+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14+
* See the License for the specific language governing permissions and
15+
* limitations under the License.
16+
*/
17+
18+
import org.openrewrite.gradle.RewriteDryRunTask
19+
20+
plugins {
21+
id("org.openrewrite.rewrite")
22+
}
23+
24+
dependencies {
25+
rewrite(platform("org.openrewrite.recipe:rewrite-recipe-bom:latest.integration"))
26+
rewrite("org.openrewrite.recipe:rewrite-static-analysis")
27+
rewrite("org.openrewrite.recipe:rewrite-testing-frameworks")
28+
}
29+
30+
rewrite {
31+
configFile = project.rootProject.file("config/openrewrite/rewrite.yml")
32+
// See RewriteDryRunTask workaround below
33+
failOnDryRunResults = false
34+
35+
activeStyle("org.apache.jmeter.style.Style")
36+
37+
// See config/openrewrite/rewrite.yml
38+
activeRecipe("org.apache.jmeter.staticanalysis.CodeCleanup")
39+
// See https://github.com/openrewrite/rewrite-static-analysis/blob/8c803a9c50b480841a4af031f60bac5ee443eb4e/src/main/resources/META-INF/rewrite/common-static-analysis.yml#L21
40+
activeRecipe("org.apache.jmeter.staticanalysis.CommonStaticAnalysis")
41+
plugins.withId("build-logic.test-junit5") {
42+
// See https://github.com/openrewrite/rewrite-testing-frameworks/blob/47ccd370247f1171fa9df005da8a9a3342d19f3f/src/main/resources/META-INF/rewrite/junit5.yml#L18C7-L18C62
43+
activeRecipe("org.openrewrite.java.testing.junit5.JUnit5BestPractices")
44+
// See https://github.com/openrewrite/rewrite-testing-frameworks/blob/47ccd370247f1171fa9df005da8a9a3342d19f3f/src/main/resources/META-INF/rewrite/junit5.yml#L255C7-L255C60
45+
activeRecipe("org.openrewrite.java.testing.junit5.CleanupAssertions")
46+
}
47+
}
48+
49+
// See https://github.com/openrewrite/rewrite-gradle-plugin/issues/255
50+
tasks.withType<RewriteDryRunTask>().configureEach {
51+
doFirst {
52+
if (reportPath.exists()) {
53+
// RewriteDryRunTask keeps the report file if there are no violations, so we remove it
54+
reportPath.delete()
55+
}
56+
}
57+
doLast {
58+
if (reportPath.exists()) {
59+
throw GradleException(
60+
"The following files have format violations. " +
61+
"Execute ./gradlew ${path.replace("Dry", "")} to apply the changes:\n" +
62+
reportPath.readText()
63+
)
64+
}
65+
}
66+
}

build-logic/verification/src/main/kotlin/build-logic.style.gradle.kts

Lines changed: 50 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@
1515
* limitations under the License.
1616
*/
1717

18+
import com.github.autostyle.gradle.AutostyleTask
19+
import de.thetaphi.forbiddenapis.gradle.CheckForbiddenApis
1820
import org.gradle.kotlin.dsl.apply
1921
import org.gradle.language.base.plugins.LifecycleBasePlugin
2022

@@ -26,6 +28,14 @@ if (!buildParameters.skipAutostyle) {
2628
apply(plugin = "build-logic.autostyle")
2729
}
2830

31+
// OpenRewrite Gradle plugin applies to allprojects when it is applied to the root project
32+
// So the workaround is to avoid applying openrewrite to the root
33+
val skipOpenrewrite = project == rootProject || buildParameters.skipOpenrewrite
34+
35+
if (!skipOpenrewrite) {
36+
apply(plugin = "build-logic.openrewrite")
37+
}
38+
2939
val skipCheckstyle = buildParameters.skipCheckstyle || run {
3040
logger.info("Checkstyle requires Java 11+")
3141
buildParameters.buildJdkVersion < 11
@@ -61,20 +71,40 @@ if (!skipCheckstyle && !buildParameters.skipAutostyle) {
6171
}
6272
}
6373

64-
if (!buildParameters.skipAutostyle || !skipCheckstyle || !buildParameters.skipForbiddenApis) {
74+
if (!buildParameters.skipAutostyle || !skipCheckstyle || !buildParameters.skipForbiddenApis || !skipOpenrewrite) {
6575
tasks.register("style") {
6676
group = LifecycleBasePlugin.VERIFICATION_GROUP
6777
description = "Formats code (license header, import order, whitespace at end of line, ...) and executes Checkstyle verifications"
6878
if (!buildParameters.skipAutostyle) {
6979
dependsOn("autostyleApply")
7080
}
81+
if (!skipOpenrewrite) {
82+
dependsOn("rewriteRun")
83+
}
84+
if (!skipCheckstyle) {
85+
dependsOn("checkstyleAll")
86+
}
87+
if (!buildParameters.skipForbiddenApis) {
88+
dependsOn("forbiddenApis")
89+
}
90+
}
91+
tasks.register("styleCheck") {
92+
group = LifecycleBasePlugin.VERIFICATION_GROUP
93+
description = "Report code style violations (license header, import order, whitespace at end of line, ...)"
94+
if (!buildParameters.skipAutostyle) {
95+
dependsOn("autostyleCheck")
96+
}
97+
if (!skipOpenrewrite) {
98+
dependsOn("rewriteDryRun")
99+
}
71100
if (!skipCheckstyle) {
72101
dependsOn("checkstyleAll")
73102
}
74103
if (!buildParameters.skipForbiddenApis) {
75104
dependsOn("forbiddenApis")
76105
}
77106
}
107+
78108
}
79109

80110
tasks.register("checkstyle") {
@@ -90,3 +120,22 @@ tasks.register("checkstyle") {
90120
dependsOn("forbiddenApis")
91121
}
92122
}
123+
124+
// OpenRewrite fixes many warnings, so it should run the first
125+
if (!skipOpenrewrite) {
126+
if (!buildParameters.skipForbiddenApis) {
127+
tasks.withType<CheckForbiddenApis>().configureEach {
128+
mustRunAfter("rewriteRun", "rewriteDryRun")
129+
}
130+
}
131+
if (!buildParameters.skipCheckstyle) {
132+
tasks.withType<Checkstyle>().configureEach {
133+
mustRunAfter("rewriteRun", "rewriteDryRun")
134+
}
135+
}
136+
if (!buildParameters.skipAutostyle) {
137+
tasks.withType<AutostyleTask>().configureEach {
138+
mustRunAfter("rewriteRun", "rewriteDryRun")
139+
}
140+
}
141+
}

checksum.xml

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,14 +11,19 @@
1111
<trusted-key id='dcba03381ef6c89096acd985ac5ec74981f9cda6' group='com.beust' />
1212
<trusted-key id='28118c070cb22a0175a2e8d43d12ca2ac19f3181' group='com.fasterxml.jackson.core' />
1313
<trusted-key id='8a10792983023d5d14c93b488d7f1bec1e2ecae7' group='com.fasterxml.jackson.core' />
14+
<trusted-key id='28118c070cb22a0175a2e8d43d12ca2ac19f3181' group='com.fasterxml.jackson.dataformat' />
1415
<trusted-key id='8a10792983023d5d14c93b488d7f1bec1e2ecae7' group='com.fasterxml.jackson.dataformat' />
16+
<trusted-key id='28118c070cb22a0175a2e8d43d12ca2ac19f3181' group='com.fasterxml.jackson.datatype' />
17+
<trusted-key id='28118c070cb22a0175a2e8d43d12ca2ac19f3181' group='com.fasterxml.jackson.module' />
1518
<trusted-key id='8a10792983023d5d14c93b488d7f1bec1e2ecae7' group='com.fasterxml.jackson.module' />
19+
<trusted-key id='28118c070cb22a0175a2e8d43d12ca2ac19f3181' group='com.fasterxml.woodstox' />
1620
<trusted-key id='8a10792983023d5d14c93b488d7f1bec1e2ecae7' group='com.fasterxml.woodstox' />
1721
<trusted-key id='58f086abb0ede8f7a04b76c34c00043bec5cb7cb' group='com.fifesoft' />
1822
<trusted-key id='4ac55a85d30c3499a3219500b7e2662a7640a051' group='com.formdev' />
1923
<trusted-key id='8756c4f765c9ac3cb6b85d62379ce192d401ab61' group='com.formdev' />
2024
<trusted-key id='d112630c899f508198c09018105cb91cac2aee0e' group='com.github.autostyle' />
2125
<trusted-key id='635ee627345f3c1dd422b2e207d3516820bcf6b1' group='com.github.ben-manes.caffeine' />
26+
<trusted-key id='2655176f748fd83725b4805ff2a01147d830c125' group='com.github.docker-java' />
2227
<trusted-key id='55e770230e69cc6de143fb5b62c82e50836eb3ee' group='com.github.gundy' />
2328
<trusted-key id='253e8e4c6fb28d11748115c1249dee8e2c07a0a2' group='com.github.javaparser' />
2429
<trusted-key id='fc2c31fc25fede4e7ad0d18c2bfd7825a8984fbe' group='com.github.javaparser' />
@@ -90,11 +95,17 @@
9095
<trusted-key id='aa417737bd805456db3cbdde6601e5c08dccbb96' group='info.picocli' />
9196
<trusted-key id='c62c0ce2e5c346b2d9bf2d8bb2ca0dfe9ed21c6e' group='io.burt' />
9297
<trusted-key id='1ab9bdf40ed49debb5caaded5b30d3b10694f057' group='io.codearte.gradle.nexus' />
98+
<trusted-key id='1f47744c9b6e14f2049c2857f1f111af65925306' group='io.github.classgraph' />
9399
<trusted-key id='7186bbf993566d8c2f4f7ed7d945e643368fef62' group='io.github.eisop' />
100+
<trusted-key id='ed09733fa05dedf15100abeb32bbf14af07ca77b' group='io.github.fastfilter' />
94101
<trusted-key id='d477d51812e692011db11e66a6ea2e2bf22e0543' group='io.github.java-diff-utils' />
95102
<trusted-key id='e52567d2589415bd74eb4c2867631bc0568801c3' group='io.github.microutils' />
103+
<trusted-key id='8756c4f765c9ac3cb6b85d62379ce192d401ab61' group='io.github.resilience4j' />
96104
<trusted-key id='050a37a2e0577f4baa095b52602ec18d20c4661c' group='io.github.x-stream' />
105+
<trusted-key id='48b086a7d843cfa258e83286928fbf39003c0425' group='io.micrometer' />
97106
<trusted-key id='59b06224fd8912e36603be79fefe78456eddc34a' group='io.mockk' />
107+
<trusted-key id='7119b89feb81209430e65c62c2ad9c8a7d4e988a' group='io.quarkus.gizmo' />
108+
<trusted-key id='1d339b6a68ae2e8daeda65d5276962ca56e73c81' group='io.vavr' />
98109
<trusted-key id='6dd3b8c64ef75253beb2c53ad908a43fb7ec07ac' group='jakarta.activation' />
99110
<trusted-key id='a1483f88ba771993ab609c43590c2310cee1c9be' group='jakarta.jms' />
100111
<trusted-key id='fc411cd3cb7dcb0abc9801058118b3bcdb1a5000' group='jakarta.xml.bind' />
@@ -170,10 +181,12 @@
170181
<trusted-key id='7c669810892cbd3148fa92995b05ccde140c2876' group='org.eclipse.jgit' />
171182
<trusted-key id='1def9646901a1652e5b3e5ea694db6f419c8d1fd' group='org.exparity' />
172183
<trusted-key id='13ac2213964abe1d1c147c0e1939a2520bab1d90' group='org.freemarker' />
184+
<trusted-key id='bd3b8aab16ea001cda79d4773e8a7f8a3597e7fb' group='org.functionaljava' />
173185
<trusted-key id='e5b8247af8a619a28f90fdfc9ff25980f5ba7e4f' group='org.fusesource.hawtbuf' />
174186
<trusted-key id='1bd97a6a154e7810ee0bc832e2f38302c8075e3d' group='org.gradle.kotlin' />
175187
<trusted-key id='4db1a49729b053caf015cee9a6adfc93ef34893e' group='org.hamcrest' />
176188
<trusted-key id='e3a9f95079e84ce201f7cf60bede11eaf1164480' group='org.hamcrest' />
189+
<trusted-key id='e113159331a1f87bfc2a93d0960d2e8635a91268' group='org.hdrhistogram' />
177190
<trusted-key id='d76260c72df74e66268f7770ab049df4ab24c1ef' group='org.hsqldb' />
178191
<trusted-key id='a413f67d71beec23add0ce0acb43338e060cf9fa' group='org.jacoco' />
179192
<trusted-key id='e5c3b1929191df06136ccb2b164779204e106a76' group='org.javassist' />
@@ -195,28 +208,38 @@
195208
<trusted-key id='ff6e2c001948c5f2f38b0cc385911f425ec61b51' group='org.junit.jupiter' />
196209
<trusted-key id='ff6e2c001948c5f2f38b0cc385911f425ec61b51' group='org.junit.platform' />
197210
<trusted-key id='ff6e2c001948c5f2f38b0cc385911f425ec61b51' group='org.junit.vintage' />
211+
<trusted-key id='7a1d848e7c2af85eeba69c99e7bf252cf360097e' group='org.latencyutils' />
198212
<trusted-key id='08ba61cf501c09f70911b83b82216a03caa86c78' group='org.mongodb' />
199213
<trusted-key id='e9af5293c334c7c0b583227d2f45f85cdf082e68' group='org.mozilla' />
200214
<trusted-key id='07a4fa67a8222f1b39f9edaef8052e4e1bd0db31' group='org.neo4j.driver' />
201215
<trusted-key id='e85aed155021af8a6c6b7a4a7c7d8456294423ba' group='org.objenesis' />
202216
<trusted-key id='019082bc00e0324e2aef4cf00d3b328562a119a7' group='org.openjdk.jmh' />
217+
<trusted-key id='f36ca0c4b500f0cdde0c5aa1913f763cd0f9cfd8' group='org.openrewrite' />
218+
<trusted-key id='f36ca0c4b500f0cdde0c5aa1913f763cd0f9cfd8' group='org.openrewrite.gradle.tooling' />
219+
<trusted-key id='f36ca0c4b500f0cdde0c5aa1913f763cd0f9cfd8' group='org.openrewrite.meta' />
220+
<trusted-key id='f36ca0c4b500f0cdde0c5aa1913f763cd0f9cfd8' group='org.openrewrite.recipe' />
221+
<trusted-key id='f36ca0c4b500f0cdde0c5aa1913f763cd0f9cfd8' group='org.openrewrite.tools' />
203222
<trusted-key id='ff6e2c001948c5f2f38b0cc385911f425ec61b51' group='org.opentest4j' />
204223
<trusted-key id='a5bd02b93e7a40482eb1d66a5f69ad087600b22c' group='org.ow2.asm' />
205224
<trusted-key id='908366594e746bf3c449f5622be5d98f751f4136' group='org.pcollections' />
206225
<trusted-key id='e0d98c5fd55a8af232290e58dee12b9896f97e34' group='org.pcollections' />
207226
<trusted-key id='50a628ffaf58480736b1079fd1031d14464180e0' group='org.reactivestreams' />
208227
<trusted-key id='a33a0b49a4c1ab590b0a4ddc1364c5e2df3e99c5' group='org.reactivestreams' />
209228
<trusted-key id='3f2a008a91d11a7fac4a0786f13d3e721d56bd54' group='org.reflections' />
229+
<trusted-key id='8756c4f765c9ac3cb6b85d62379ce192d401ab61' group='org.rnorth.duct-tape' />
210230
<trusted-key id='475f3b8e59e6e63aa78067482c7b12f2a511e325' group='org.slf4j' />
211231
<trusted-key id='60200ac4ae761f1614d6c46766d68daa073be985' group='org.slf4j' />
212232
<trusted-key id='2b1042677fd8190c7b9fc0dc2161d72e7dcd4258' group='org.sonarsource.scanner.api' />
213233
<trusted-key id='f1182e81c792928921dbcab4cfca4a29d26468de' group='org.sonarsource.scanner.api' />
214234
<trusted-key id='8756c4f765c9ac3cb6b85d62379ce192d401ab61' group='org.springframework' />
215235
<trusted-key id='e2acb037933cdeaab7bf77d49a2c7a98e457c53d' group='org.springframework' />
236+
<trusted-key id='2655176f748fd83725b4805ff2a01147d830c125' group='org.testcontainers' />
216237
<trusted-key id='7cd52b5a8295137c88fb5748dddafa7674e54418' group='org.testng' />
217238
<trusted-key id='fa1703b1d287caea3a60f931e0130a3ed5a2079e' group='org.webjars' />
239+
<trusted-key id='56b505dc8a29c69138a430b9429c8816dea04cdb' group='org.xerial.snappy' />
218240
<trusted-key id='4c5f68d09d42ba7fac888df9a929ea2321fdbf8f' group='org.xmlresolver' />
219241
<trusted-key id='ce8075a251547bee249bc151a2115ae15f6b8b72' group='org.xmlunit' />
242+
<trusted-key id='120d6f34e627ed3a772ebbfe55c7e5e701832382' group='org.yaml' />
220243
<trusted-key id='2db4f1ef0fa761ecc4ea935c86fdc7e2a11262cb' group='xalan' />
221244
<trusted-key id='e5b8247af8a619a28f90fdfc9ff25980f5ba7e4f' group='xalan' />
222245
<trusted-key id='6cb87b18a453990eac9453f87d713008cc07e9ad' group='xerces' />
@@ -322,6 +345,9 @@
322345
<dependency group='org.gradle.kotlin' module='gradle-kotlin-dsl-plugins' version='4.1.2'>
323346
<sha512>B23C4355CBAB2098506528D196F6C9A71D4689F4A3334494B97D9F6D868883D429D851FC319761C25ACC86F0C4E02F028B33C1868B6EF7BA1246E3D79ADF1582</sha512>
324347
</dependency>
348+
<dependency group='org.jboss' module='jandex' version='2.4.2.Final'>
349+
<sha512>635642582701F6AE26DF91E39D5BFD9345C4C219DA73E71A27F4740A4C0C7970F52CEF667BB9CC4DD08C26D9B0447EE003C9E56D5EDE68870976356C2FCC4A5C</sha512>
350+
</dependency>
325351
<dependency group='org.jetbrains.kotlin' module='kotlin-gradle-plugin' version='1.8.21'>
326352
<sha512>09D6B646399888DBD6498D24C2B6FABBEF49444FD0710E8F93FE266FFFD11A4A2C1CFEE3431D52AD03CA781E2EFAB60896DCA53AE56924AA0C48F9C85FCE66BB</sha512>
327353
</dependency>
@@ -346,6 +372,9 @@
346372
<dependency group='org.nosphere.apache' module='creadur-rat-gradle' version='0.8.1'>
347373
<sha512>397C3257C5448C26304B312212F6DA1649AD15E52CE0419C5BA647F8A68864707A0C8071FA9860C28AA9D626D66C8FAF2D5F576E693F9D01B0F71EEEB84B57FB</sha512>
348374
</dependency>
375+
<dependency group='org.openrewrite' module='plugin' version='6.6.3'>
376+
<sha512>FAE9431F2ADE6A8460C7E86AC5FA4AB7A2E11DB919BB9C60F59BD684CF5AF42A9D0DBFD4835AC8450F0F5B36258B6DF1920E445F84CBD3CFE2944F4CE430DF58</sha512>
377+
</dependency>
349378
<dependency group='org.ow2.asm' module='asm-analysis' version='6.2.1'>
350379
<sha512>BE273F8E886BBCFDA81180917145996AB8FD26A17264EBEB5E1FC2337950A309D64DC8CBD373220009728622A8CBF56B8578E960B5561C22EA66848D296AE44E</sha512>
351380
</dependency>

0 commit comments

Comments
 (0)