--- a/pom.xml +++ b/pom.xml @@ -368,6 +368,12 @@ 1.4.4 test + + org.assertj + assertj-core + 3.27.0 + test + nl.jqno.equalsverifier equalsverifier @@ -2421,9 +2427,13 @@ -Xpkginfo:always -XDcompilePolicy=simple + + --should-stop=ifError=FLOW -Xplugin:ErrorProne ${error-prone.configuration-args} + -Xmaxwarns + 1000000 @@ -2436,6 +2446,11 @@ error-prone-contrib ${error-prone-support.version} + + tech.picnic.error-prone-support + refaster-runner + ${error-prone-support.version} + @@ -2476,11 +2491,14 @@ -Xpkginfo:always -XDcompilePolicy=simple + + --should-stop=ifError=FLOW -Xplugin:ErrorProne \ - -XepExcludedPaths:.*[\\/]resources[\\/].* \ ${error-prone.configuration-args} + -Xmaxwarns + 1000000 @@ -2493,6 +2511,11 @@ error-prone-contrib ${error-prone-support.version} + + tech.picnic.error-prone-support + refaster-runner + ${error-prone-support.version} + --- a/src/it/java/com/google/checkstyle/test/chapter2filebasic/rule21filename/FileNameTest.java +++ b/src/it/java/com/google/checkstyle/test/chapter2filebasic/rule21filename/FileNameTest.java @@ -23,6 +23,8 @@ import org.junit.jupiter.api.Test; import com.google.checkstyle.test.base.AbstractGoogleModuleTestSupport; +// This class is referenced from another package. +@SuppressWarnings("JUnitClassModifiers") public class FileNameTest extends AbstractGoogleModuleTestSupport { @Override --- a/src/it/java/com/google/checkstyle/test/chapter3filestructure/rule3sourcefile/SourceFileStructureTest.java +++ b/src/it/java/com/google/checkstyle/test/chapter3filestructure/rule3sourcefile/SourceFileStructureTest.java @@ -23,6 +23,8 @@ import org.junit.jupiter.api.Test; import com.google.checkstyle.test.base.AbstractGoogleModuleTestSupport; +// This class is referenced from another package. +@SuppressWarnings("JUnitClassModifiers") public class SourceFileStructureTest extends AbstractGoogleModuleTestSupport { @Override --- a/src/it/java/com/google/checkstyle/test/chapter3filestructure/toolongpackagetotestcoveragegooglesjavastylerule/PackageStatementTest.java +++ b/src/it/java/com/google/checkstyle/test/chapter3filestructure/toolongpackagetotestcoveragegooglesjavastylerule/PackageStatementTest.java @@ -23,6 +23,8 @@ import org.junit.jupiter.api.Test; import com.google.checkstyle.test.base.AbstractGoogleModuleTestSupport; +// This class is referenced from another package. +@SuppressWarnings("JUnitClassModifiers") public class PackageStatementTest extends AbstractGoogleModuleTestSupport { @Override --- a/src/main/java/com/puppycrawl/tools/checkstyle/DetailNodeTreeStringPrinter.java +++ b/src/main/java/com/puppycrawl/tools/checkstyle/DetailNodeTreeStringPrinter.java @@ -63,6 +63,8 @@ public final class DetailNodeTreeStringPrinter { * @return DetailNode tree * @throws IllegalArgumentException if there is an error parsing the Javadoc. */ + // Invoking `getParseErrorMessage` requires that `status.getParseErrorMessage()` is `null`. + @SuppressWarnings("CheckArgumentWithMessage") public static DetailNode parseJavadocAsDetailNode(DetailAST blockComment) { final JavadocDetailNodeParser parser = new JavadocDetailNodeParser(); final ParseStatus status = parser.parseJavadocAsDetailNode(blockComment); --- a/src/main/java/com/puppycrawl/tools/checkstyle/SarifLogger.java +++ b/src/main/java/com/puppycrawl/tools/checkstyle/SarifLogger.java @@ -157,6 +157,9 @@ public class SarifLogger extends AbstractAutomaticBean implements AuditListener @Override public void auditFinished(AuditEvent event) { final String version = SarifLogger.class.getPackage().getImplementationVersion(); + // Here `version` may be `null`, while `String#replace` requires non-`null` arguments. + // XXX: Investigate better nullness handling by `IdentityConversion`. + @SuppressWarnings("IdentityConversion") final String rendered = report .replace(VERSION_PLACEHOLDER, String.valueOf(version)) .replace(RESULTS_PLACEHOLDER, String.join(",\n", results)); --- a/src/test/java/com/puppycrawl/tools/checkstyle/CheckerTest.java +++ b/src/test/java/com/puppycrawl/tools/checkstyle/CheckerTest.java @@ -97,6 +97,8 @@ import de.thetaphi.forbiddenapis.SuppressForbidden; * @noinspectionreason ClassWithTooManyDependencies - complex tests require a large number * of imports */ +// This class is referenced from another package. +@SuppressWarnings("JUnitClassModifiers") public class CheckerTest extends AbstractModuleTestSupport { @TempDir --- a/src/test/java/com/puppycrawl/tools/checkstyle/ConfigurationLoaderTest.java +++ b/src/test/java/com/puppycrawl/tools/checkstyle/ConfigurationLoaderTest.java @@ -47,6 +47,8 @@ import com.puppycrawl.tools.checkstyle.internal.utils.TestUtil; /** * Unit test for ConfigurationLoader. */ +// This class is referenced from another package. +@SuppressWarnings("JUnitClassModifiers") public class ConfigurationLoaderTest extends AbstractPathTestSupport { @Override --- a/src/test/java/com/puppycrawl/tools/checkstyle/PackageObjectFactoryTest.java +++ b/src/test/java/com/puppycrawl/tools/checkstyle/PackageObjectFactoryTest.java @@ -98,6 +98,8 @@ public class PackageObjectFactoryTest { public void testCtorNullPackageException1() { final ClassLoader classLoader = Thread.currentThread().getContextClassLoader(); try { + // XXX: Don't suggest `ImmutableSet.of(elem)` for nullable `elem`. + @SuppressWarnings("ImmutableSetOf1") final Object test = new PackageObjectFactory(Collections.singleton(null), classLoader); assertWithMessage("Exception is expected but got " + test).fail(); } @@ -126,6 +128,8 @@ public class PackageObjectFactoryTest { public void testCtorNullPackageException3() { final ClassLoader classLoader = Thread.currentThread().getContextClassLoader(); try { + // XXX: Don't suggest `ImmutableSet.of(elem)` for nullable `elem`. + @SuppressWarnings("ImmutableSetOf1") final Object test = new PackageObjectFactory(Collections.singleton(null), classLoader, TRY_IN_ALL_REGISTERED_PACKAGES); assertWithMessage("Exception is expected but got " + test).fail(); --- a/src/test/java/com/puppycrawl/tools/checkstyle/TreeWalkerTest.java +++ b/src/test/java/com/puppycrawl/tools/checkstyle/TreeWalkerTest.java @@ -84,6 +84,8 @@ import com.puppycrawl.tools.checkstyle.utils.CommonUtil; * @noinspectionreason ClassWithTooManyDependencies - complex tests require a * large number of imports */ +// This class is referenced from another package. +@SuppressWarnings("JUnitClassModifiers") public class TreeWalkerTest extends AbstractModuleTestSupport { @TempDir --- a/src/test/java/com/puppycrawl/tools/checkstyle/utils/CheckUtilTest.java +++ b/src/test/java/com/puppycrawl/tools/checkstyle/utils/CheckUtilTest.java @@ -47,6 +47,8 @@ import com.puppycrawl.tools.checkstyle.checks.coding.NestedIfDepthCheck; import com.puppycrawl.tools.checkstyle.checks.javadoc.JavadocMethodCheck; import com.puppycrawl.tools.checkstyle.checks.naming.AccessModifierOption; +// This class is referenced from another package. +@SuppressWarnings("JUnitClassModifiers") public class CheckUtilTest extends AbstractModuleTestSupport { @Override