From 567c81a93d143dfef6a7a4e34b64b559eb4139e7 Mon Sep 17 00:00:00 2001 From: Stephan Schroevers Date: Sun, 28 Mar 2021 15:06:34 +0200 Subject: [PATCH] Upgrade to Error Prone 2.6.0 --- .../RedundantStringConversionCheck.java | 5 +++-- .../errorprone/bugpatterns/RefasterCheck.java | 21 +++++++++---------- .../bugpatterns/RefasterCheckTest.java | 16 +++----------- pom.xml | 16 +++----------- 4 files changed, 19 insertions(+), 39 deletions(-) diff --git a/error-prone-contrib/src/main/java/tech/picnic/errorprone/bugpatterns/RedundantStringConversionCheck.java b/error-prone-contrib/src/main/java/tech/picnic/errorprone/bugpatterns/RedundantStringConversionCheck.java index e4441b9f..0847ab05 100644 --- a/error-prone-contrib/src/main/java/tech/picnic/errorprone/bugpatterns/RedundantStringConversionCheck.java +++ b/error-prone-contrib/src/main/java/tech/picnic/errorprone/bugpatterns/RedundantStringConversionCheck.java @@ -2,7 +2,7 @@ package tech.picnic.errorprone.bugpatterns; import static com.google.errorprone.matchers.Matchers.allOf; import static com.google.errorprone.matchers.Matchers.anyOf; -import static com.google.errorprone.matchers.Matchers.isNonNull; +import static com.google.errorprone.matchers.Matchers.isNonNullUsingDataflow; import static com.google.errorprone.matchers.Matchers.isSameType; import static com.google.errorprone.matchers.Matchers.isSubtypeOf; import static com.google.errorprone.matchers.Matchers.not; @@ -64,7 +64,8 @@ public final class RedundantStringConversionCheck extends BugChecker private static final Matcher MARKER = isSubtypeOf("org.slf4j.Marker"); private static final Matcher STRING = isSameType(String.class); private static final Matcher THROWABLE = isSubtypeOf(Throwable.class); - private static final Matcher NON_NULL_STRING = allOf(STRING, isNonNull()); + private static final Matcher NON_NULL_STRING = + allOf(STRING, isNonNullUsingDataflow()); private static final Matcher NOT_FORMATTABLE = not(isSubtypeOf(Formattable.class)); private static final Matcher WELL_KNOWN_STRING_CONVERSION_METHODS = diff --git a/error-prone-contrib/src/main/java/tech/picnic/errorprone/bugpatterns/RefasterCheck.java b/error-prone-contrib/src/main/java/tech/picnic/errorprone/bugpatterns/RefasterCheck.java index 7a956955..e326c17a 100644 --- a/error-prone-contrib/src/main/java/tech/picnic/errorprone/bugpatterns/RefasterCheck.java +++ b/error-prone-contrib/src/main/java/tech/picnic/errorprone/bugpatterns/RefasterCheck.java @@ -6,6 +6,7 @@ import static java.util.function.Predicate.not; import com.google.auto.service.AutoService; import com.google.common.annotations.VisibleForTesting; +import com.google.common.base.Suppliers; import com.google.common.collect.ImmutableCollection; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableListMultimap; @@ -43,6 +44,7 @@ import java.util.Map; import java.util.NoSuchElementException; import java.util.Objects; import java.util.Optional; +import java.util.function.Supplier; import java.util.regex.Pattern; import java.util.stream.Stream; @@ -66,6 +68,10 @@ public final class RefasterCheck extends BugChecker implements CompilationUnitTr private static final String REFASTER_TEMPLATE_SUFFIX = ".refaster"; private static final String INCLUDED_TEMPLATES_PATTERN_FLAG = "Refaster:NamePattern"; + @VisibleForTesting + static final Supplier> ALL_CODE_TRANSFORMERS = + Suppliers.memoize(RefasterCheck::loadAllCodeTransformers); + private final CodeTransformer codeTransformer; /** Instantiates the default {@link RefasterCheck}. */ @@ -79,13 +85,7 @@ public final class RefasterCheck extends BugChecker implements CompilationUnitTr * @param flags Any provided command line flags. */ public RefasterCheck(ErrorProneFlags flags) { - codeTransformer = createCompositeCodeTransformer(flags, loadAllCodeTransformers()); - } - - @VisibleForTesting - RefasterCheck( - ErrorProneFlags flags, ImmutableListMultimap allTransformers) { - codeTransformer = createCompositeCodeTransformer(flags, allTransformers); + codeTransformer = createCompositeCodeTransformer(flags); } @Override @@ -152,8 +152,8 @@ public final class RefasterCheck extends BugChecker implements CompilationUnitTr return description.fixes.stream().flatMap(fix -> fix.getReplacements(endPositions).stream()); } - private static CodeTransformer createCompositeCodeTransformer( - ErrorProneFlags flags, ImmutableListMultimap allTransformers) { + private static CodeTransformer createCompositeCodeTransformer(ErrorProneFlags flags) { + ImmutableListMultimap allTransformers = ALL_CODE_TRANSFORMERS.get(); return CompositeCodeTransformer.compose( flags .get(INCLUDED_TEMPLATES_PATTERN_FLAG) @@ -170,8 +170,7 @@ public final class RefasterCheck extends BugChecker implements CompilationUnitTr .collect(toImmutableList()); } - @VisibleForTesting - static ImmutableListMultimap loadAllCodeTransformers() { + private static ImmutableListMultimap loadAllCodeTransformers() { ImmutableListMultimap.Builder transformers = ImmutableListMultimap.builder(); diff --git a/error-prone-contrib/src/test/java/tech/picnic/errorprone/bugpatterns/RefasterCheckTest.java b/error-prone-contrib/src/test/java/tech/picnic/errorprone/bugpatterns/RefasterCheckTest.java index c14f3d19..1ac88a3f 100644 --- a/error-prone-contrib/src/test/java/tech/picnic/errorprone/bugpatterns/RefasterCheckTest.java +++ b/error-prone-contrib/src/test/java/tech/picnic/errorprone/bugpatterns/RefasterCheckTest.java @@ -6,14 +6,10 @@ import static java.util.function.Predicate.not; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatCode; -import com.google.common.collect.ImmutableListMultimap; -import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableSet; import com.google.common.collect.ImmutableSetMultimap; import com.google.errorprone.BugCheckerRefactoringTestHelper; import com.google.errorprone.BugCheckerRefactoringTestHelper.TestMode; -import com.google.errorprone.CodeTransformer; -import com.google.errorprone.ErrorProneFlags; import java.util.regex.Pattern; import java.util.stream.Stream; import org.junit.jupiter.api.Test; @@ -77,9 +73,6 @@ public final class RefasterCheckTest { */ private static final Pattern TEMPLATE_FQCN_TRIM_FOR_GROUP_NAME = Pattern.compile(".*\\.|Templates\\$.*"); - /** All Refaster templates on the classpath, indexed by their name. */ - private static final ImmutableListMultimap ALL_CODE_TRANSFORMERS = - RefasterCheck.loadAllCodeTransformers(); /** * A mapping from template group names to associated template names. * @@ -87,7 +80,7 @@ public final class RefasterCheckTest { * templates, while the keys correspond to the associated top-level "aggregator" classes. */ private static final ImmutableSetMultimap TEMPLATES_BY_GROUP = - indexTemplateNamesByGroup(ALL_CODE_TRANSFORMERS.keySet()); + indexTemplateNamesByGroup(RefasterCheck.ALL_CODE_TRANSFORMERS.get().keySet()); /** Returns every known template group name as a parameterized test argument. */ @SuppressWarnings("UnusedMethod" /* Used as a `@MethodSource`. */) @@ -171,10 +164,7 @@ public final class RefasterCheckTest { private BugCheckerRefactoringTestHelper createRestrictedRefactoringTestHelper( String namePattern) { - return BugCheckerRefactoringTestHelper.newInstance( - new RefasterCheck( - ErrorProneFlags.fromMap(ImmutableMap.of("Refaster:NamePattern", namePattern)), - ALL_CODE_TRANSFORMERS), - getClass()); + return BugCheckerRefactoringTestHelper.newInstance(RefasterCheck.class, getClass()) + .setArgs("-XepOpt:Refaster:NamePattern=" + namePattern); } } diff --git a/pom.xml b/pom.xml index e780d730..8c55f857 100644 --- a/pom.xml +++ b/pom.xml @@ -109,10 +109,9 @@ one place. We use these to keep dependencies in sync. Version numbers that need to be referenced only once should *not* be listed here. --> 1.0 - 2.5.1 + 2.6.0 0.1.4 3.0.0 - 30.1.1-jre 1.0 11 3.6.3 @@ -203,7 +202,7 @@ com.google.guava guava-bom - ${version.guava} + 30.1.1-jre pom import @@ -1090,7 +1089,7 @@ error-prone-fork com.github.PicnicSupermarket.error-prone - v2.5.1-picnic-1 + v2.6.0-picnic-1 - - com.google.guava - guava - ${version.guava} - com.google.guava guava-beta-checker