From 06b796df364345ef7cf05df39a3ba4ab193b741d Mon Sep 17 00:00:00 2001 From: Bas Leijdekkers Date: Fri, 27 Nov 2015 17:01:06 +0100 Subject: [PATCH] IG: introduce utility method --- ...oneDeclaresCloneNotSupportedInspection.java | 10 ++-------- .../RedundantMethodOverrideInspection.java | 18 +++++++----------- .../RefusedBequestInspectionBase.java | 10 ++-------- .../UnnecessaryInheritDocInspection.java | 7 ++----- ...sFromOverriddenParameterInspectionBase.java | 18 +++++------------- .../src/com/siyeh/ig/psiutils/MethodUtils.java | 14 ++++++++++++-- 6 files changed, 30 insertions(+), 47 deletions(-) diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/cloneable/CloneDeclaresCloneNotSupportedInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/cloneable/CloneDeclaresCloneNotSupportedInspection.java index c12b793b7f3e..9bf28d537da3 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/cloneable/CloneDeclaresCloneNotSupportedInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/cloneable/CloneDeclaresCloneNotSupportedInspection.java @@ -23,8 +23,6 @@ import com.intellij.psi.PsiClass; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiMethod; import com.intellij.psi.PsiModifier; -import com.intellij.psi.search.searches.SuperMethodsSearch; -import com.intellij.psi.util.MethodSignatureBackedByPsiMethod; import com.intellij.psi.util.PsiUtil; import com.intellij.util.IncorrectOperationException; import com.siyeh.InspectionGadgetsBundle; @@ -133,12 +131,8 @@ public class CloneDeclaresCloneNotSupportedInspection extends BaseInspection { if (MethodUtils.hasInThrows(method, "java.lang.CloneNotSupportedException")) { return; } - final MethodSignatureBackedByPsiMethod signature = SuperMethodsSearch.search(method, null, true, false).findFirst(); - if (signature == null) { - return; - } - final PsiMethod superMethod = signature.getMethod(); - if (!MethodUtils.hasInThrows(superMethod, "java.lang.CloneNotSupportedException")) { + final PsiMethod superMethod = MethodUtils.getSuper(method); + if (superMethod != null && !MethodUtils.hasInThrows(superMethod, "java.lang.CloneNotSupportedException")) { return; } registerMethodError(method); diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/inheritance/RedundantMethodOverrideInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/inheritance/RedundantMethodOverrideInspection.java index 9694d347aff8..c9454e0bfcbd 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/inheritance/RedundantMethodOverrideInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/inheritance/RedundantMethodOverrideInspection.java @@ -1,5 +1,5 @@ /* - * Copyright 2005-2014 Bas Leijdekkers + * Copyright 2005-2015 Bas Leijdekkers * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -18,19 +18,19 @@ package com.siyeh.ig.inheritance; import com.intellij.codeInspection.ProblemDescriptor; import com.intellij.openapi.project.Project; import com.intellij.psi.*; -import com.intellij.psi.search.searches.SuperMethodsSearch; -import com.intellij.psi.util.MethodSignatureBackedByPsiMethod; import com.intellij.util.IncorrectOperationException; -import com.intellij.util.Query; import com.siyeh.InspectionGadgetsBundle; import com.siyeh.ig.BaseInspection; import com.siyeh.ig.BaseInspectionVisitor; import com.siyeh.ig.InspectionGadgetsFix; import com.siyeh.ig.psiutils.EquivalenceChecker; +import com.siyeh.ig.psiutils.MethodUtils; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -import java.util.*; +import java.util.Collection; +import java.util.HashSet; +import java.util.Set; public class RedundantMethodOverrideInspection extends BaseInspection { @@ -97,14 +97,10 @@ public class RedundantMethodOverrideInspection extends BaseInspection { if (method.getNameIdentifier() == null) { return; } - final Query superMethodQuery = - SuperMethodsSearch.search(method, null, true, false); - final MethodSignatureBackedByPsiMethod signature = - superMethodQuery.findFirst(); - if (signature == null) { + final PsiMethod superMethod = MethodUtils.getSuper(method); + if (superMethod == null) { return; } - final PsiMethod superMethod = signature.getMethod(); final PsiCodeBlock superBody = superMethod.getBody(); if (superBody == null) { return; diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/inheritance/RefusedBequestInspectionBase.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/inheritance/RefusedBequestInspectionBase.java index 27a8b471da19..983105274e5f 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/inheritance/RefusedBequestInspectionBase.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/inheritance/RefusedBequestInspectionBase.java @@ -19,8 +19,6 @@ import com.intellij.codeInsight.AnnotationUtil; import com.intellij.openapi.util.InvalidDataException; import com.intellij.openapi.util.WriteExternalException; import com.intellij.psi.*; -import com.intellij.psi.search.searches.SuperMethodsSearch; -import com.intellij.psi.util.MethodSignatureBackedByPsiMethod; import com.siyeh.InspectionGadgetsBundle; import com.siyeh.ig.BaseInspection; import com.siyeh.ig.BaseInspectionVisitor; @@ -130,12 +128,8 @@ public class RefusedBequestInspectionBase extends BaseInspection { @Nullable private PsiMethod getDirectSuperMethod(PsiMethod method) { - final MethodSignatureBackedByPsiMethod superSignature = SuperMethodsSearch.search(method, null, true, false).findFirst(); - if (superSignature == null) { - return null; - } - final PsiMethod superMethod = superSignature.getMethod(); - if (superMethod.hasModifierProperty(PsiModifier.ABSTRACT)) { + final PsiMethod superMethod = MethodUtils.getSuper(method); + if (superMethod == null || superMethod.hasModifierProperty(PsiModifier.ABSTRACT)) { return null; } final PsiClass containingClass = superMethod.getContainingClass(); diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/javadoc/UnnecessaryInheritDocInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/javadoc/UnnecessaryInheritDocInspection.java index 986d9a1d0193..901e70f256af 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/javadoc/UnnecessaryInheritDocInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/javadoc/UnnecessaryInheritDocInspection.java @@ -20,16 +20,15 @@ import com.intellij.openapi.project.Project; import com.intellij.openapi.util.text.StringUtil; import com.intellij.psi.*; import com.intellij.psi.javadoc.*; -import com.intellij.psi.search.searches.SuperMethodsSearch; import com.intellij.psi.tree.IElementType; import com.intellij.psi.util.InheritanceUtil; -import com.intellij.psi.util.MethodSignatureBackedByPsiMethod; import com.intellij.psi.util.PsiTreeUtil; import com.intellij.util.IncorrectOperationException; import com.siyeh.InspectionGadgetsBundle; import com.siyeh.ig.BaseInspection; import com.siyeh.ig.BaseInspectionVisitor; import com.siyeh.ig.InspectionGadgetsFix; +import com.siyeh.ig.psiutils.MethodUtils; import org.jetbrains.annotations.Nls; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; @@ -149,9 +148,7 @@ public class UnnecessaryInheritDocInspection extends BaseInspection { registerError(tag, WarningType.CONSTRUCTOR); return; } - final MethodSignatureBackedByPsiMethod superMethod = - SuperMethodsSearch.search(method, method.getContainingClass(), true, false).findFirst(); - if (superMethod == null) { + if (!MethodUtils.hasSuper(method)) { registerError(tag, WarningType.NO_SUPER); return; } diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/naming/ParameterNameDiffersFromOverriddenParameterInspectionBase.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/naming/ParameterNameDiffersFromOverriddenParameterInspectionBase.java index 6464e0efcd27..41f4857e72ea 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/naming/ParameterNameDiffersFromOverriddenParameterInspectionBase.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/naming/ParameterNameDiffersFromOverriddenParameterInspectionBase.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2013 JetBrains s.r.o. + * Copyright 2000-2015 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -19,13 +19,11 @@ import com.intellij.psi.PsiClass; import com.intellij.psi.PsiMethod; import com.intellij.psi.PsiParameter; import com.intellij.psi.PsiParameterList; -import com.intellij.psi.search.searches.SuperMethodsSearch; -import com.intellij.psi.util.MethodSignatureBackedByPsiMethod; -import com.intellij.util.Query; import com.siyeh.InspectionGadgetsBundle; import com.siyeh.ig.BaseInspection; import com.siyeh.ig.BaseInspectionVisitor; import com.siyeh.ig.psiutils.LibraryUtil; +import com.siyeh.ig.psiutils.MethodUtils; import org.jetbrains.annotations.NotNull; public class ParameterNameDiffersFromOverriddenParameterInspectionBase extends BaseInspection { @@ -67,21 +65,15 @@ public class ParameterNameDiffersFromOverriddenParameterInspectionBase extends B if (parameterList.getParametersCount() == 0) { return; } - final Query query = - SuperMethodsSearch.search( - method, method.getContainingClass(), true, false); - final MethodSignatureBackedByPsiMethod methodSignature = - query.findFirst(); - if (methodSignature == null) { + final PsiMethod superMethod = MethodUtils.getSuper(method); + if (superMethod == null) { return; } - final PsiMethod superMethod = methodSignature.getMethod(); final PsiParameter[] parameters = parameterList.getParameters(); checkParameters(superMethod, parameters); } - private void checkParameters(PsiMethod superMethod, - PsiParameter[] parameters) { + private void checkParameters(@NotNull PsiMethod superMethod, PsiParameter[] parameters) { if (m_ignoreOverridesOfLibraryMethods) { final PsiClass containingClass = superMethod.getContainingClass(); diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/psiutils/MethodUtils.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/psiutils/MethodUtils.java index 5b1ffdc2a84f..688c84070fc6 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/psiutils/MethodUtils.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/psiutils/MethodUtils.java @@ -21,6 +21,7 @@ import com.intellij.psi.search.searches.ClassInheritorsSearch; import com.intellij.psi.search.searches.OverridingMethodsSearch; import com.intellij.psi.search.searches.SuperMethodsSearch; import com.intellij.psi.util.InheritanceUtil; +import com.intellij.psi.util.MethodSignatureBackedByPsiMethod; import com.intellij.util.IncorrectOperationException; import com.intellij.util.Query; import com.siyeh.HardcodedMethodConstants; @@ -191,10 +192,19 @@ public class MethodUtils { } public static boolean hasSuper(@NotNull PsiMethod method) { + return getSuper(method) != null; + } + + @Nullable + public static PsiMethod getSuper(@NotNull PsiMethod method) { if (method.isConstructor() || method.hasModifierProperty(PsiModifier.STATIC) || method.hasModifierProperty(PsiModifier.PRIVATE)) { - return false; + return null; } - return SuperMethodsSearch.search(method, null, true, false).findFirst() != null; + final MethodSignatureBackedByPsiMethod signature = SuperMethodsSearch.search(method, null, true, false).findFirst(); + if (signature == null) { + return null; + } + return signature.getMethod(); } public static boolean isOverridden(PsiMethod method) {