From b70e2919065bf455e8dff9b2167ce2b469d9f09d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Nicoll?= Date: Wed, 5 Mar 2025 10:28:13 +0100 Subject: [PATCH] Enable checkstyle This commit updates the Gradle build to run checkstyle against the main sources. Checks for tests, as well as certain rules, are disabled as a first step. See gh-1479 --- .../conventions/CheckstyleConventions.java | 59 +++++++++++++++++++ .../gradle/conventions/ConventionsPlugin.java | 7 ++- src/checkstyle/checkstyle-suppressions.xml | 9 +++ src/checkstyle/checkstyle.xml | 9 +++ 4 files changed, 81 insertions(+), 3 deletions(-) create mode 100644 gradle/plugins/conventions-plugin/src/main/java/org/springframework/ws/gradle/conventions/CheckstyleConventions.java create mode 100644 src/checkstyle/checkstyle-suppressions.xml create mode 100644 src/checkstyle/checkstyle.xml diff --git a/gradle/plugins/conventions-plugin/src/main/java/org/springframework/ws/gradle/conventions/CheckstyleConventions.java b/gradle/plugins/conventions-plugin/src/main/java/org/springframework/ws/gradle/conventions/CheckstyleConventions.java new file mode 100644 index 00000000..23949656 --- /dev/null +++ b/gradle/plugins/conventions-plugin/src/main/java/org/springframework/ws/gradle/conventions/CheckstyleConventions.java @@ -0,0 +1,59 @@ +/* + * Copyright 2005-2025 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.ws.gradle.conventions; + +import io.spring.javaformat.gradle.SpringJavaFormatPlugin; +import org.gradle.api.Plugin; +import org.gradle.api.Project; +import org.gradle.api.artifacts.DependencySet; +import org.gradle.api.plugins.JavaPlugin; +import org.gradle.api.plugins.quality.Checkstyle; +import org.gradle.api.plugins.quality.CheckstyleExtension; +import org.gradle.api.plugins.quality.CheckstylePlugin; + +/** + * {@link Plugin} that applies conventions for checkstyle. + * + * @author Brian Clozel + * @author Stephane Nicoll + */ +public class CheckstyleConventions { + + /** + * Applies the Spring Java Format and Checkstyle plugins with the project conventions. + * @param project the current project + */ + public void apply(Project project) { + project.getPlugins().withType(JavaPlugin.class, (java) -> { + project.getPlugins().apply(CheckstylePlugin.class); + project.getTasks().withType(Checkstyle.class).forEach(checkstyle -> checkstyle.getMaxHeapSize().set("1g")); + project.getTasks().named("checkstyleTest").configure(task -> task.setEnabled(false)); + CheckstyleExtension checkstyle = project.getExtensions().getByType(CheckstyleExtension.class); + checkstyle.setToolVersion("10.21.1"); + checkstyle.getConfigDirectory().set(project.getRootProject().file("src/checkstyle")); + String version = SpringJavaFormatPlugin.class.getPackage().getImplementationVersion(); + DependencySet checkstyleDependencies = project.getConfigurations() + .getByName("checkstyle") + .getDependencies(); + checkstyleDependencies.add( + project.getDependencies().create("com.puppycrawl.tools:checkstyle:" + checkstyle.getToolVersion())); + checkstyleDependencies + .add(project.getDependencies().create("io.spring.javaformat:spring-javaformat-checkstyle:" + version)); + }); + } + +} diff --git a/gradle/plugins/conventions-plugin/src/main/java/org/springframework/ws/gradle/conventions/ConventionsPlugin.java b/gradle/plugins/conventions-plugin/src/main/java/org/springframework/ws/gradle/conventions/ConventionsPlugin.java index 61bcb471..435ed0a4 100644 --- a/gradle/plugins/conventions-plugin/src/main/java/org/springframework/ws/gradle/conventions/ConventionsPlugin.java +++ b/gradle/plugins/conventions-plugin/src/main/java/org/springframework/ws/gradle/conventions/ConventionsPlugin.java @@ -33,9 +33,10 @@ public class ConventionsPlugin implements Plugin { @Override public void apply(Project project) { project.setGroup("org.springframework.ws"); - project.getPlugins() - .withType(JavaBasePlugin.class) - .all((plugin) -> new JavaBasePluginConventions().apply(project)); + project.getPlugins().withType(JavaBasePlugin.class).all((plugin) -> { + new JavaBasePluginConventions().apply(project); + new CheckstyleConventions().apply(project); + }); project.getPlugins().withType(JavaPlugin.class).all((plugin) -> new JavaPluginConventions().apply(project)); project.getPlugins() .withType(MavenPublishPlugin.class) diff --git a/src/checkstyle/checkstyle-suppressions.xml b/src/checkstyle/checkstyle-suppressions.xml new file mode 100644 index 00000000..4d199e80 --- /dev/null +++ b/src/checkstyle/checkstyle-suppressions.xml @@ -0,0 +1,9 @@ + + + + + + + \ No newline at end of file diff --git a/src/checkstyle/checkstyle.xml b/src/checkstyle/checkstyle.xml new file mode 100644 index 00000000..791600ae --- /dev/null +++ b/src/checkstyle/checkstyle.xml @@ -0,0 +1,9 @@ + + + + + + + +