From 3359be16e5e277ae6d0082fb09c446d7648854ca Mon Sep 17 00:00:00 2001 From: gongxuanzhang Date: Mon, 3 Jun 2024 04:02:07 +0800 Subject: [PATCH] KAFKA-10787 Add import ordering checkstyle rule and configure an automatic formatter (#16097) Reviewers: Chia-Ping Tsai --- README.md | 7 ++++++- build.gradle | 17 ++++++++++++++++- checkstyle/checkstyle.xml | 2 ++ 3 files changed, 24 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 27ce0dc0bce64..ab7dcd7685bde 100644 --- a/README.md +++ b/README.md @@ -227,11 +227,16 @@ There are two code quality analysis tools that we regularly run, spotbugs and ch Checkstyle enforces a consistent coding style in Kafka. You can run checkstyle using: - ./gradlew checkstyleMain checkstyleTest + ./gradlew checkstyleMain checkstyleTest spotlessCheck The checkstyle warnings will be found in `reports/checkstyle/reports/main.html` and `reports/checkstyle/reports/test.html` files in the subproject build directories. They are also printed to the console. The build will fail if Checkstyle fails. +#### Spotless #### +The import order is a part of static check. please call `spotlessApply` to optimize the imports of Java codes before filing pull request : + + ./gradlew spotlessApply + #### Spotbugs #### Spotbugs uses static analysis to look for bugs in the code. You can run spotbugs using: diff --git a/build.gradle b/build.gradle index ea168ecb26fb4..a2a6531d29a62 100644 --- a/build.gradle +++ b/build.gradle @@ -47,7 +47,9 @@ plugins { // Updating the shadow plugin version to 8.1.1 causes issue with signing and publishing the shadowed // artifacts - see https://github.com/johnrengelman/shadow/issues/901 id 'com.github.johnrengelman.shadow' version '8.1.0' apply false - id 'com.diffplug.spotless' version '6.14.0' apply false // 6.14.1 and newer require Java 11 at compile time, so we can't upgrade until AK 4.0 + // the minimum required JRE of 6.14.0+ is 11 + // refer:https://github.com/diffplug/spotless/tree/main/plugin-gradle#requirements + id 'com.diffplug.spotless' version "6.13.0" apply false } ext { @@ -198,6 +200,9 @@ def determineCommitId() { } } +def spotlessApplyModules = [''] + + apply from: file('wrapper.gradle') if (repo != null) { @@ -793,6 +798,16 @@ subprojects { skipProjects = [ ":jmh-benchmarks", ":trogdor" ] skipConfigurations = [ "zinc" ] } + + if (project.name in spotlessApplyModules) { + apply plugin: 'com.diffplug.spotless' + spotless { + java { + importOrder('kafka', 'org.apache.kafka', 'com', 'net', 'org', 'java', 'javax', '', '\\#') + removeUnusedImports() + } + } + } } gradle.taskGraph.whenReady { taskGraph -> diff --git a/checkstyle/checkstyle.xml b/checkstyle/checkstyle.xml index aff659638928b..61eb7e4b245fd 100644 --- a/checkstyle/checkstyle.xml +++ b/checkstyle/checkstyle.xml @@ -82,6 +82,8 @@ + +