diff --git a/core/src/main/java/com/google/errorprone/bugpatterns/UnnecessaryQualifier.java b/core/src/main/java/com/google/errorprone/bugpatterns/UnnecessaryQualifier.java index ed61eb5c596..4008b261497 100644 --- a/core/src/main/java/com/google/errorprone/bugpatterns/UnnecessaryQualifier.java +++ b/core/src/main/java/com/google/errorprone/bugpatterns/UnnecessaryQualifier.java @@ -93,7 +93,13 @@ public Description matchVariable(VariableTree tree, VisitorState state) { var symbol = getSymbol(tree); switch (symbol.getKind()) { case FIELD -> { - if (INJECTION_FIELDS.stream().anyMatch(ip -> hasAnnotation(tree, ip, state))) { + if (INJECTION_FIELDS.stream().anyMatch(ip -> hasAnnotation(tree, ip, state)) + || tree.getModifiers().getAnnotations().stream() + .anyMatch( + anno -> + INJECTION_PREFIXES.stream() + .anyMatch( + p -> getSymbol(anno).getSimpleName().toString().startsWith(p)))) { return NO_MATCH; } if (isRecord(symbol)) { @@ -222,22 +228,12 @@ private static ImmutableList getQualifiers( private static final ImmutableSet INJECTION_FIELDS = ImmutableSet.of( // keep-sorted start - "com.google.inject.Inject", - "dagger.Binds", - "dagger.BindsInstance", - "dagger.hilt.android.testing.BindElementsIntoSet", - "dagger.hilt.android.testing.BindValue", - "dagger.hilt.android.testing.BindValueIntoMap", - "dagger.hilt.android.testing.BindValueIntoSet", - "dagger.hilt.testing.BindElementsIntoSet", - "dagger.hilt.testing.BindValue", - "dagger.hilt.testing.BindValueIntoMap", - "dagger.hilt.testing.BindValueIntoSet", - "jakarta.inject.Inject", - "javax.inject.Inject" // keep-sorted end ); + /** Prefixes for annotations on variables which can have qualifiers. */ + private static final ImmutableSet INJECTION_PREFIXES = ImmutableSet.of("Bind", "Inject"); + private static final ImmutableSet CLASS_ANNOTATIONS_EXEMPTING_METHODS = ImmutableSet.of( // keep-sorted start