IG: introduce utility method
authorBas Leijdekkers <basleijdekkers@gmail.com>
Tue, 9 Aug 2016 20:14:27 +0000 (22:14 +0200)
committerBas Leijdekkers <basleijdekkers@gmail.com>
Tue, 9 Aug 2016 20:18:48 +0000 (22:18 +0200)
plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/finalization/FinalizeInspection.java
plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/finalization/FinalizeNotProtectedInspection.java
plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/finalization/NoExplicitFinalizeCallsInspection.java
plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/psiutils/MethodUtils.java

index 7d13fbbe1142bb223c4d8e742fb3c0c4003b36ef..9d269344bd8b8864033099a51387dbad6f320857 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright 2003-2015 Dave Griffith, Bas Leijdekkers
+ * Copyright 2003-2016 Dave Griffith, Bas Leijdekkers
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -16,8 +16,7 @@
 package com.siyeh.ig.finalization;
 
 import com.intellij.codeInspection.ui.SingleCheckboxOptionsPanel;
-import com.intellij.psi.*;
-import com.siyeh.HardcodedMethodConstants;
+import com.intellij.psi.PsiMethod;
 import com.siyeh.InspectionGadgetsBundle;
 import com.siyeh.ig.BaseInspection;
 import com.siyeh.ig.BaseInspectionVisitor;
@@ -67,13 +66,7 @@ public class FinalizeInspection extends BaseInspection {
 
     @Override
     public void visitMethod(@NotNull PsiMethod method) {
-      //note: no call to super;
-      final String methodName = method.getName();
-      if (!HardcodedMethodConstants.FINALIZE.equals(methodName)) {
-        return;
-      }
-      final PsiParameterList parameterList = method.getParameterList();
-      if (parameterList.getParametersCount() != 0) {
+      if (!MethodUtils.isFinalize(method)) {
         return;
       }
       if (ignoreTrivialFinalizers && MethodUtils.isTrivial(method, false)) {
index 1a740ce0dde3809ee09a3605e4b6b7761600a4f5..5596f09d698fbece705f64d46bc32985632bd7ab 100644 (file)
@@ -18,11 +18,11 @@ package com.siyeh.ig.finalization;
 import com.intellij.codeInspection.ProblemDescriptor;
 import com.intellij.openapi.project.Project;
 import com.intellij.psi.*;
-import com.siyeh.HardcodedMethodConstants;
 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.NotNull;
 
 public class FinalizeNotProtectedInspection extends BaseInspection {
@@ -80,12 +80,7 @@ public class FinalizeNotProtectedInspection extends BaseInspection {
 
     @Override
     public void visitMethod(@NotNull PsiMethod method) {
-      final String methodName = method.getName();
-      if (!HardcodedMethodConstants.FINALIZE.equals(methodName)) {
-        return;
-      }
-      final PsiParameterList parameterList = method.getParameterList();
-      if (parameterList.getParametersCount() != 0) {
+      if (!MethodUtils.isFinalize(method)) {
         return;
       }
       if (method.hasModifierProperty(PsiModifier.PROTECTED)) {
index 0f726cca3bd4860a040b0708cc581718bdd34384..67a59a9a758f8b6b47e59428b890248acf31fa0e 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright 2003-2007 Dave Griffith, Bas Leijdekkers
+ * Copyright 2003-2016 Dave Griffith, Bas Leijdekkers
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -59,24 +59,16 @@ public class NoExplicitFinalizeCallsInspection extends BaseInspection {
     return new NoExplicitFinalizeCallsVisitor();
   }
 
-  private static class NoExplicitFinalizeCallsVisitor
-    extends BaseInspectionVisitor {
+  private static class NoExplicitFinalizeCallsVisitor extends BaseInspectionVisitor {
 
     @Override
-    public void visitMethodCallExpression(
-      @NotNull PsiMethodCallExpression expression) {
+    public void visitMethodCallExpression(@NotNull PsiMethodCallExpression expression) {
       super.visitMethodCallExpression(expression);
-      if (!MethodCallUtils.isCallToMethod(expression, null, PsiType.VOID,
-                                          HardcodedMethodConstants.FINALIZE)) {
+      if (!MethodCallUtils.isCallToMethod(expression, null, PsiType.VOID, HardcodedMethodConstants.FINALIZE)) {
         return;
       }
-      final PsiMethod containingMethod =
-        PsiTreeUtil.getParentOfType(expression, PsiMethod.class);
-      if (containingMethod == null) {
-        return;
-      }
-      if (MethodUtils.methodMatches(containingMethod, null, PsiType.VOID,
-                                    HardcodedMethodConstants.FINALIZE)) {
+      final PsiMethod containingMethod = PsiTreeUtil.getParentOfType(expression, PsiMethod.class);
+      if (containingMethod == null || MethodUtils.isFinalize(containingMethod)) {
         return;
       }
       registerMethodCallError(expression);
index b0e21eeee8357c814c27419bcc69e8f222136b64..f6214cc30f7cd28ee46ebd1d35858e96cb0be6f2 100644 (file)
@@ -49,6 +49,10 @@ public class MethodUtils {
     return method != null && methodMatches(method, null, PsiType.INT, HardcodedMethodConstants.HASH_CODE);
   }
 
+  public static boolean isFinalize(@Nullable PsiMethod method) {
+    return method != null && methodMatches(method, null, PsiType.VOID, HardcodedMethodConstants.FINALIZE);
+  }
+
   public static boolean isToString(@Nullable PsiMethod method) {
     if (method == null) {
       return false;