From 13b829d222122ceec556dbe10702ad0377c239cc Mon Sep 17 00:00:00 2001 From: peter Date: Mon, 15 Apr 2019 20:02:23 +0200 Subject: [PATCH] MissingOverrideAnnotationInspection: don't run for non-overrideable methods, filter candidates by parameter count --- .../ig/inheritance/MissingOverrideAnnotationInspection.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/inheritance/MissingOverrideAnnotationInspection.java b/plugins/InspectionGadgets/src/com/siyeh/ig/inheritance/MissingOverrideAnnotationInspection.java index fb61eecc5193..c3dfca197d3e 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/ig/inheritance/MissingOverrideAnnotationInspection.java +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/inheritance/MissingOverrideAnnotationInspection.java @@ -156,12 +156,16 @@ public class MissingOverrideAnnotationInspection extends AbstractBaseJavaLocalIn // 3) only one annotation with short name 'Override' exists: it's 'java.lang.Override' private void checkMissingOverrideInOverriders(@NotNull PsiMethod method, @NotNull InspectionResult result) { + if (!PsiUtil.canBeOverridden(method)) return; + Project project = method.getProject(); LanguageLevel minimal = Objects.requireNonNull(method.getContainingClass()).isInterface() ? LanguageLevel.JDK_1_6 : LanguageLevel.JDK_1_5; GlobalSearchScope scope = getLanguageLevelScope(minimal, project); if (scope == null) return; - Predicate preFilter = m -> !JavaOverridingMethodUtil.containsAnnotationWithName(m, OVERRIDE_SHORT_NAME); + int paramCount = method.getParameterList().getParametersCount(); + Predicate preFilter = m -> m.getParameterList().getParametersCount() == paramCount && + !JavaOverridingMethodUtil.containsAnnotationWithName(m, OVERRIDE_SHORT_NAME); Stream overridingMethods = JavaOverridingMethodUtil.getOverridingMethodsIfCheapEnough(method, scope, preFilter); if (overridingMethods == null) return; result.hierarchyAnnotated = ThreeState.fromBoolean(!overridingMethods.findAny().isPresent());