diff --git a/build.gradle b/build.gradle index 9e4f07c75a..9baa47df27 100644 --- a/build.gradle +++ b/build.gradle @@ -12,6 +12,7 @@ repositories { apply from: rootProject.file('gradle/java-publish.gradle') apply from: rootProject.file('gradle/changelog.gradle') allprojects { + apply from: rootProject.file('gradle/error-prone.gradle') apply from: rootProject.file('gradle/rewrite.gradle') apply from: rootProject.file('gradle/spotless.gradle') } diff --git a/gradle/error-prone.gradle b/gradle/error-prone.gradle new file mode 100644 index 0000000000..af47645f85 --- /dev/null +++ b/gradle/error-prone.gradle @@ -0,0 +1,30 @@ +import static java.lang.System.getenv + +apply plugin: 'net.ltgt.errorprone' + +dependencies { + errorprone('com.google.errorprone:error_prone_core:2.42.0') + errorprone('tech.picnic.error-prone-support:error-prone-contrib:0.25.0') + constraints { + errorprone('com.google.guava:guava') { + version { + require('33.4.8-jre') + } + because('Older versions use deprecated methods in sun.misc.Unsafe') + // https://github.com/junit-team/junit-framework/pull/5039#discussion_r2414490581 + } + } +} + +tasks.withType(JavaCompile).configureEach { + options.errorprone { + disableAllChecks = true // consider removal to avoid error prone error“s, following convention over configuration. + error('RedundantStringConversion') + if (!getenv().containsKey('CI') && getenv('IN_PLACE')?.toBoolean()) { + errorproneArgs.addAll( + '-XepPatchLocation:IN_PLACE', + '-XepPatchChecks:RedundantStringConversion' + ) + } + } +} diff --git a/lib/src/main/java/com/diffplug/spotless/ForeignExe.java b/lib/src/main/java/com/diffplug/spotless/ForeignExe.java index d205e14039..8697ca68c3 100644 --- a/lib/src/main/java/com/diffplug/spotless/ForeignExe.java +++ b/lib/src/main/java/com/diffplug/spotless/ForeignExe.java @@ -134,7 +134,7 @@ private RuntimeException exceptionFmt(String msgPrimary, ProcessRunner.Result cm errorMsg.append(msgFix); errorMsg.append('\n'); } - errorMsg.append(cmd.toString()); + errorMsg.append(cmd); return new RuntimeException(errorMsg.toString()); } } diff --git a/lib/src/main/java/com/diffplug/spotless/biome/BiomeExecutableDownloader.java b/lib/src/main/java/com/diffplug/spotless/biome/BiomeExecutableDownloader.java index 8a9c6923c0..ae090d3e4a 100644 --- a/lib/src/main/java/com/diffplug/spotless/biome/BiomeExecutableDownloader.java +++ b/lib/src/main/java/com/diffplug/spotless/biome/BiomeExecutableDownloader.java @@ -261,7 +261,7 @@ private Path getChecksumPath(Path file) { var parent = file.getParent(); var base = parent != null ? parent : file; var fileName = file.getFileName(); - var checksumName = fileName != null ? fileName.toString() + ".sha256" : "checksum.sha256"; + var checksumName = fileName != null ? fileName + ".sha256" : "checksum.sha256"; return base.resolve(checksumName); } diff --git a/lib/src/main/java/com/diffplug/spotless/sql/dbeaver/SQLTokensParser.java b/lib/src/main/java/com/diffplug/spotless/sql/dbeaver/SQLTokensParser.java index f80b084c91..de692a5e4e 100644 --- a/lib/src/main/java/com/diffplug/spotless/sql/dbeaver/SQLTokensParser.java +++ b/lib/src/main/java/com/diffplug/spotless/sql/dbeaver/SQLTokensParser.java @@ -186,7 +186,7 @@ else if (contains(singleLineCommentStart, fChar)) { s.append(fChar); } } - return new FormatterToken(TokenType.COMMAND, word + s.toString(), start_pos); + return new FormatterToken(TokenType.COMMAND, word + s, start_pos); } if (sqlDialect.getKeywordType(word) != null) { return new FormatterToken(TokenType.KEYWORD, word, start_pos); diff --git a/plugin-maven/src/test/java/com/diffplug/spotless/maven/java/LintSuppressionTest.java b/plugin-maven/src/test/java/com/diffplug/spotless/maven/java/LintSuppressionTest.java index 3f97b63f5d..e1975de5da 100644 --- a/plugin-maven/src/test/java/com/diffplug/spotless/maven/java/LintSuppressionTest.java +++ b/plugin-maven/src/test/java/com/diffplug/spotless/maven/java/LintSuppressionTest.java @@ -161,8 +161,8 @@ private void writePomWithLintSuppressions(String... stepsAndSuppressions) throws } // Create the configuration - String javaGroup = "" + javaSteps.toString() + ""; - String fullConfiguration = javaGroup + globalConfig.toString(); + String javaGroup = "" + javaSteps + ""; + String fullConfiguration = javaGroup + globalConfig; writePom(fullConfiguration); } diff --git a/settings.gradle b/settings.gradle index d4d047af6a..6bda8e28dc 100644 --- a/settings.gradle +++ b/settings.gradle @@ -24,6 +24,7 @@ plugins { // https://github.com/equodev/equo-ide/blob/main/plugin-gradle/CHANGELOG.md id 'dev.equo.ide' version '1.7.8' apply false id 'org.openrewrite.rewrite' version '7.18.0' apply false + id 'net.ltgt.errorprone' version '4.3.0' apply false } dependencyResolutionManagement { diff --git a/testlib/src/main/java/com/diffplug/spotless/ReflectionUtil.java b/testlib/src/main/java/com/diffplug/spotless/ReflectionUtil.java index 4d0a340f42..1590b08311 100644 --- a/testlib/src/main/java/com/diffplug/spotless/ReflectionUtil.java +++ b/testlib/src/main/java/com/diffplug/spotless/ReflectionUtil.java @@ -1,5 +1,5 @@ /* - * Copyright 2016 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. @@ -37,7 +37,7 @@ public static void dumpAllInfo(String name, Object obj) { public static void dumpMethod(Method method) { System.out.print(Modifier.toString(method.getModifiers())); - System.out.print(" " + method.getReturnType().toString()); + System.out.print(" " + method.getReturnType()); System.out.print(" " + method.getName() + "("); Iterator paramIter = Arrays.asList(method.getParameters()).iterator(); while (paramIter.hasNext()) {