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
This commit is contained in:
Stéphane Nicoll
2025-03-05 10:28:13 +01:00
parent 34583e2837
commit b70e291906
4 changed files with 81 additions and 3 deletions

View File

@@ -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));
});
}
}

View File

@@ -33,9 +33,10 @@ public class ConventionsPlugin implements Plugin<Project> {
@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)

View File

@@ -0,0 +1,9 @@
<?xml version="1.0"?>
<!DOCTYPE suppressions PUBLIC
"-//Checkstyle//DTD SuppressionFilter Configuration 1.2//EN"
"https://checkstyle.org/dtds/suppressions_1_2.dtd">
<suppressions>
<suppress files="." checks="JavadocMethod"/>
<suppress files="." checks="SpringLambdaCheck"/>
<suppress files="." checks="SpringMethodVisibility"/>
</suppressions>

View File

@@ -0,0 +1,9 @@
<?xml version="1.0"?>
<!DOCTYPE module PUBLIC "-//Puppy Crawl//DTD Check Configuration 1.3//EN"
"https://checkstyle.org/dtds/configuration_1_3.dtd">
<module name="com.puppycrawl.tools.checkstyle.Checker">
<module name="SuppressionFilter">
<property name="file" value="${config_loc}/checkstyle-suppressions.xml"/>
</module>
<module name="io.spring.javaformat.checkstyle.SpringChecks"/>
</module>