diff --git a/lib/src/main/java/com/diffplug/spotless/java/CleanthatJavaStep.java b/lib/src/main/java/com/diffplug/spotless/java/CleanthatJavaStep.java index b5cc5452d1..2ef68f4f85 100644 --- a/lib/src/main/java/com/diffplug/spotless/java/CleanthatJavaStep.java +++ b/lib/src/main/java/com/diffplug/spotless/java/CleanthatJavaStep.java @@ -40,7 +40,7 @@ public final class CleanthatJavaStep { private static final String MAVEN_COORDINATE = "io.github.solven-eu.cleanthat:java"; // CleanThat changelog is available at https://github.com/solven-eu/cleanthat/blob/master/CHANGES.MD - private static final Jvm.Support JVM_SUPPORT = Jvm. support(NAME).add(11, "2.1"); + private static final Jvm.Support JVM_SUPPORT = Jvm. support(NAME).add(11, "2.2"); // prevent direct instantiation private CleanthatJavaStep() {} @@ -71,8 +71,7 @@ public static List defaultExcludedMutators() { * @return */ public static List defaultMutators() { - // see JavaRefactorerProperties.WILDCARD - return List.of("*"); + return List.of("eu.solven.cleanthat.engine.java.refactorer.mutators.composite.SafeAndConsensualMutators"); } /** Creates a step which apply selected CleanThat mutators. */ diff --git a/plugin-gradle/CHANGES.md b/plugin-gradle/CHANGES.md index 087c1ade89..afba5abdc7 100644 --- a/plugin-gradle/CHANGES.md +++ b/plugin-gradle/CHANGES.md @@ -3,6 +3,7 @@ We adhere to the [keepachangelog](https://keepachangelog.com/en/1.0.0/) format (starting after version `3.27.0`). ## [Unreleased] +* Bump default `cleanthat` version to latest `2.1` -> `2.2` ([#1569](https://github.com/diffplug/spotless/pull/1569)) ## [6.15.0] - 2023-02-10 ### Added diff --git a/plugin-gradle/src/main/java/com/diffplug/gradle/spotless/JavaExtension.java b/plugin-gradle/src/main/java/com/diffplug/gradle/spotless/JavaExtension.java index 6e9f6de005..7ab94ba7e4 100644 --- a/plugin-gradle/src/main/java/com/diffplug/gradle/spotless/JavaExtension.java +++ b/plugin-gradle/src/main/java/com/diffplug/gradle/spotless/JavaExtension.java @@ -19,6 +19,7 @@ import java.io.File; import java.util.ArrayList; +import java.util.Collection; import java.util.List; import java.util.Objects; @@ -283,9 +284,9 @@ public class CleanthatJavaConfig { private String sourceJdk = CleanthatJavaStep.defaultSourceJdk(); - private List mutators = CleanthatJavaStep.defaultMutators(); + private List mutators = new ArrayList<>(CleanthatJavaStep.defaultMutators()); - private List excludedMutators = CleanthatJavaStep.defaultExcludedMutators(); + private List excludedMutators = new ArrayList<>(CleanthatJavaStep.defaultExcludedMutators()); CleanthatJavaConfig() { addStep(createStep()); @@ -319,14 +320,20 @@ public CleanthatJavaConfig clearMutators() { return this; } - // The fully qualified name of a class implementing eu.solven.cleanthat.engine.java.refactorer.meta.IMutator - // or '*' to include all default mutators + // An id of a mutator (see IMutator.getIds()) or + // tThe fully qualified name of a class implementing eu.solven.cleanthat.engine.java.refactorer.meta.IMutator public CleanthatJavaConfig addMutator(String mutator) { this.mutators.add(mutator); replaceStep(createStep()); return this; } + public CleanthatJavaConfig addMutators(Collection mutators) { + this.mutators.addAll(mutators); + replaceStep(createStep()); + return this; + } + // useful to exclude a mutator amongst the default list of mutators public CleanthatJavaConfig excludeMutator(String mutator) { this.excludedMutators.add(mutator); diff --git a/plugin-gradle/src/test/java/com/diffplug/gradle/spotless/CleanthatJavaIntegrationTest.java b/plugin-gradle/src/test/java/com/diffplug/gradle/spotless/CleanthatJavaIntegrationTest.java index a754b963f2..581bfe89b2 100644 --- a/plugin-gradle/src/test/java/com/diffplug/gradle/spotless/CleanthatJavaIntegrationTest.java +++ b/plugin-gradle/src/test/java/com/diffplug/gradle/spotless/CleanthatJavaIntegrationTest.java @@ -31,7 +31,9 @@ void integration() throws IOException { "spotless {", " java {", " target file('test.java')", - " cleanthat().sourceCompatibility('11')", + " cleanthat()", + " .sourceCompatibility('11')", + " .addMutators(['LiteralsFirstInComparisons', 'OptionalNotEmpty'])", " }", "}"); diff --git a/plugin-maven/CHANGES.md b/plugin-maven/CHANGES.md index 74c6a0299a..8d4c67a9b6 100644 --- a/plugin-maven/CHANGES.md +++ b/plugin-maven/CHANGES.md @@ -3,6 +3,8 @@ We adhere to the [keepachangelog](https://keepachangelog.com/en/1.0.0/) format (starting after version `1.27.0`). ## [Unreleased] +### Changes +* Bump default `cleanthat` version to latest `2.1` -> `2.2` ([#1569](https://github.com/diffplug/spotless/pull/1569)) ## [2.33.0] - 2023-02-10 ### Added diff --git a/plugin-maven/src/test/java/com/diffplug/spotless/maven/java/CleanthatJavaRefactorerTest.java b/plugin-maven/src/test/java/com/diffplug/spotless/maven/java/CleanthatJavaRefactorerTest.java index edb7a69cd5..a32ac337e4 100644 --- a/plugin-maven/src/test/java/com/diffplug/spotless/maven/java/CleanthatJavaRefactorerTest.java +++ b/plugin-maven/src/test/java/com/diffplug/spotless/maven/java/CleanthatJavaRefactorerTest.java @@ -29,6 +29,9 @@ class CleanthatJavaRefactorerTest extends MavenIntegrationHarness { void testLiteralsFirstInComparisons() throws Exception { writePomWithJavaSteps( "", + " ", + " LiteralsFirstInComparisons", + " ", ""); runTest("LiteralsFirstInComparisons.dirty.java", "LiteralsFirstInComparisons.clean.java"); @@ -36,8 +39,13 @@ void testLiteralsFirstInComparisons() throws Exception { @Test void testMultipleMutators_defaultIsJdk7() throws Exception { + // OptionalNotEmpty will be excluded as it is not compatible with JDK7 writePomWithJavaSteps( "", + " ", + " LiteralsFirstInComparisons", + " OptionalNotEmpty", + " ", ""); runTest("MultipleMutators.dirty.java", "MultipleMutators.clean.onlyLiteralsFirst.java"); @@ -47,7 +55,11 @@ void testMultipleMutators_defaultIsJdk7() throws Exception { void testMultipleMutators_Jdk11IntroducedOptionalisPresent() throws Exception { writePomWithJavaSteps( "", - "11", + " 11", + " ", + " LiteralsFirstInComparisons", + " OptionalNotEmpty", + " ", ""); runTest("MultipleMutators.dirty.java", "MultipleMutators.clean.java"); @@ -57,6 +69,10 @@ void testMultipleMutators_Jdk11IntroducedOptionalisPresent() throws Exception { void testExcludeOptionalNotEmpty() throws Exception { writePomWithJavaSteps( "", + " ", + " LiteralsFirstInComparisons", + " OptionalNotEmpty", + " ", " ", " OptionalNotEmpty", " ",