From 668ce10128cbbf983222a11a61a81d7a163235b2 Mon Sep 17 00:00:00 2001 From: Paul Merlin Date: Sat, 22 Mar 2025 03:53:20 +0100 Subject: [PATCH 1/2] Enable :gradle-plugin strict validation Enable Gradle Plugin types strict validation by the :gradle-plugin:validatePlugins task. The task now applies more rules for plugin types. Add missing mandatory cacheability annotations on SpotlessTask, SpotlessApply, SpotlessCheck and SpotlessDiagnoseTask. --- plugin-gradle/build.gradle | 3 +++ .../main/java/com/diffplug/gradle/spotless/SpotlessApply.java | 4 +++- .../main/java/com/diffplug/gradle/spotless/SpotlessCheck.java | 4 +++- .../com/diffplug/gradle/spotless/SpotlessDiagnoseTask.java | 4 +++- .../main/java/com/diffplug/gradle/spotless/SpotlessTask.java | 4 +++- 5 files changed, 15 insertions(+), 4 deletions(-) diff --git a/plugin-gradle/build.gradle b/plugin-gradle/build.gradle index 4f82f713bf..5211428f8b 100644 --- a/plugin-gradle/build.gradle +++ b/plugin-gradle/build.gradle @@ -33,6 +33,9 @@ apply from: rootProject.file('gradle/special-tests.gradle') tasks.withType(Test).configureEach { testLogging.showStandardStreams = true } +tasks.validatePlugins { + enableStricterValidation = true +} ////////////////////////// // GRADLE PLUGIN PORTAL // diff --git a/plugin-gradle/src/main/java/com/diffplug/gradle/spotless/SpotlessApply.java b/plugin-gradle/src/main/java/com/diffplug/gradle/spotless/SpotlessApply.java index f38745a6b0..c623669ab1 100644 --- a/plugin-gradle/src/main/java/com/diffplug/gradle/spotless/SpotlessApply.java +++ b/plugin-gradle/src/main/java/com/diffplug/gradle/spotless/SpotlessApply.java @@ -1,5 +1,5 @@ /* - * Copyright 2016-2024 DiffPlug + * Copyright 2016-2025 DiffPlug * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -25,7 +25,9 @@ import org.gradle.api.file.FileVisitDetails; import org.gradle.api.file.FileVisitor; import org.gradle.api.tasks.TaskAction; +import org.gradle.work.DisableCachingByDefault; +@DisableCachingByDefault(because = "not worth caching") public abstract class SpotlessApply extends SpotlessTaskService.ClientTask { @TaskAction public void performAction() { diff --git a/plugin-gradle/src/main/java/com/diffplug/gradle/spotless/SpotlessCheck.java b/plugin-gradle/src/main/java/com/diffplug/gradle/spotless/SpotlessCheck.java index dba219ff06..175a828a66 100644 --- a/plugin-gradle/src/main/java/com/diffplug/gradle/spotless/SpotlessCheck.java +++ b/plugin-gradle/src/main/java/com/diffplug/gradle/spotless/SpotlessCheck.java @@ -1,5 +1,5 @@ /* - * Copyright 2016-2024 DiffPlug + * Copyright 2016-2025 DiffPlug * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -32,12 +32,14 @@ import org.gradle.api.tasks.Input; import org.gradle.api.tasks.Internal; import org.gradle.api.tasks.TaskAction; +import org.gradle.work.DisableCachingByDefault; import org.jetbrains.annotations.NotNull; import com.diffplug.spotless.FileSignature; import com.diffplug.spotless.ThrowingEx; import com.diffplug.spotless.extra.integration.DiffMessageFormatter; +@DisableCachingByDefault(because = "not worth caching") public abstract class SpotlessCheck extends SpotlessTaskService.ClientTask { @Internal public abstract Property getEncoding(); diff --git a/plugin-gradle/src/main/java/com/diffplug/gradle/spotless/SpotlessDiagnoseTask.java b/plugin-gradle/src/main/java/com/diffplug/gradle/spotless/SpotlessDiagnoseTask.java index 6dcba72864..68f6e63e75 100644 --- a/plugin-gradle/src/main/java/com/diffplug/gradle/spotless/SpotlessDiagnoseTask.java +++ b/plugin-gradle/src/main/java/com/diffplug/gradle/spotless/SpotlessDiagnoseTask.java @@ -1,5 +1,5 @@ /* - * Copyright 2016-2023 DiffPlug + * Copyright 2016-2025 DiffPlug * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -25,12 +25,14 @@ import org.gradle.api.DefaultTask; import org.gradle.api.tasks.Internal; import org.gradle.api.tasks.TaskAction; +import org.gradle.api.tasks.UntrackedTask; import com.diffplug.spotless.Formatter; import com.diffplug.spotless.PaddedCell; import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; +@UntrackedTask(because = "undeclared inputs/outputs") public class SpotlessDiagnoseTask extends DefaultTask { SpotlessTask source; diff --git a/plugin-gradle/src/main/java/com/diffplug/gradle/spotless/SpotlessTask.java b/plugin-gradle/src/main/java/com/diffplug/gradle/spotless/SpotlessTask.java index e31be63143..713c9a2e86 100644 --- a/plugin-gradle/src/main/java/com/diffplug/gradle/spotless/SpotlessTask.java +++ b/plugin-gradle/src/main/java/com/diffplug/gradle/spotless/SpotlessTask.java @@ -1,5 +1,5 @@ /* - * Copyright 2020-2024 DiffPlug + * Copyright 2020-2025 DiffPlug * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -34,6 +34,7 @@ import org.gradle.api.tasks.OutputDirectory; import org.gradle.api.tasks.PathSensitive; import org.gradle.api.tasks.PathSensitivity; +import org.gradle.work.DisableCachingByDefault; import org.gradle.work.Incremental; import com.diffplug.spotless.ConfigurationCacheHackList; @@ -43,6 +44,7 @@ import com.diffplug.spotless.LintSuppression; import com.diffplug.spotless.extra.GitRatchet; +@DisableCachingByDefault(because = "abstract definition") public abstract class SpotlessTask extends DefaultTask { @Internal abstract Property getTaskService(); From fc0ec004f0b52ca33e5030efc0b2ddfb8e1b4990 Mon Sep 17 00:00:00 2001 From: Paul Merlin Date: Sat, 22 Mar 2025 04:46:28 +0100 Subject: [PATCH 2/2] Update CHANGES.md for enabling Gradle's stricter plugin types validation --- plugin-gradle/CHANGES.md | 1 + 1 file changed, 1 insertion(+) diff --git a/plugin-gradle/CHANGES.md b/plugin-gradle/CHANGES.md index b40b63b4c8..5d2cb19742 100644 --- a/plugin-gradle/CHANGES.md +++ b/plugin-gradle/CHANGES.md @@ -6,6 +6,7 @@ We adhere to the [keepachangelog](https://keepachangelog.com/en/1.0.0/) format ( ### Changed * Use palantir-java-format 2.57.0 on Java 21. ([#2447](https://github.com/diffplug/spotless/pull/2447)) * Re-try `npm install` with `--prefer-online` after `ERESOLVE` error. ([#2448](https://github.com/diffplug/spotless/pull/2448)) +* Apply Gradle's strict plugin types validation to the Spotless plugin. ([#2454](https://github.com/diffplug/spotless/pull/2454)) ## [7.0.2] - 2025-01-14 ### Fixed