From 82454f6044606b86af56b954b2df97eb1c0798fc Mon Sep 17 00:00:00 2001 From: Bas Leijdekkers Date: Thu, 28 Jan 2010 15:37:07 +0100 Subject: [PATCH] =?UTF-8?q?IDEA-26944=20(Refused=20bequest=20inspection=20?= =?UTF-8?q?should=20be=20JUnit=E2=80=8B-=E2=80=8B4=E2=80=8B.=E2=80=8B5=20a?= =?UTF-8?q?ware)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../inheritance/RefusedBequestInspection.java | 27 +++++++++++++------ 1 file changed, 19 insertions(+), 8 deletions(-) diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/inheritance/RefusedBequestInspection.java b/plugins/InspectionGadgets/src/com/siyeh/ig/inheritance/RefusedBequestInspection.java index 575eaa7c49c9..441b0b44a8ea 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/ig/inheritance/RefusedBequestInspection.java +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/inheritance/RefusedBequestInspection.java @@ -1,5 +1,5 @@ /* - * Copyright 2003-2007 Dave Griffith, Bas Leijdekkers + * Copyright 2003-2010 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. @@ -15,33 +15,37 @@ */ package com.siyeh.ig.inheritance; +import com.intellij.codeInspection.ui.SingleCheckboxOptionsPanel; import com.intellij.psi.*; import com.siyeh.InspectionGadgetsBundle; import com.siyeh.ig.BaseInspection; import com.siyeh.ig.BaseInspectionVisitor; import com.siyeh.ig.psiutils.MethodUtils; -import com.intellij.codeInspection.ui.SingleCheckboxOptionsPanel; +import com.siyeh.ig.psiutils.TestUtils; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -import javax.swing.*; +import javax.swing.JComponent; public class RefusedBequestInspection extends BaseInspection { /** @noinspection PublicField*/ public boolean ignoreEmptySuperMethods = false; + @Override @NotNull public String getDisplayName(){ return InspectionGadgetsBundle.message("refused.bequest.display.name"); } + @Override @NotNull public String buildErrorString(Object... infos){ return InspectionGadgetsBundle.message( "refused.bequest.problem.descriptor"); } + @Override public JComponent createOptionsPanel() { //noinspection HardCodedStringLiteral return new SingleCheckboxOptionsPanel( @@ -50,6 +54,7 @@ public class RefusedBequestInspection extends BaseInspection { "", this, "ignoreEmptySuperMethods"); } + @Override public BaseInspectionVisitor buildVisitor(){ return new RefusedBequestVisitor(); } @@ -57,7 +62,6 @@ public class RefusedBequestInspection extends BaseInspection { private class RefusedBequestVisitor extends BaseInspectionVisitor{ @Override public void visitMethod(@NotNull PsiMethod method){ - super.visitMethod(method); final PsiCodeBlock body = method.getBody(); if(body == null){ return; @@ -72,6 +76,9 @@ public class RefusedBequestInspection extends BaseInspection { } final PsiClass containingClass = leastConcreteSuperMethod.getContainingClass(); + if (containingClass == null) { + return; + } final String className = containingClass.getQualifiedName(); if("java.lang.Object".equals(className)){ return; @@ -83,6 +90,9 @@ public class RefusedBequestInspection extends BaseInspection { return; } } + if (TestUtils.isJUnit4BeforeOrAfterMethod(method)) { + return; + } if(containsSuperCall(body, leastConcreteSuperMethod)){ return; } @@ -96,7 +106,8 @@ public class RefusedBequestInspection extends BaseInspection { for(final PsiMethod superMethod : superMethods){ final PsiClass containingClass = superMethod.getContainingClass(); - if(!superMethod.hasModifierProperty(PsiModifier.ABSTRACT) && + if(containingClass != null && + !superMethod.hasModifierProperty(PsiModifier.ABSTRACT) && !containingClass.isInterface()){ leastConcreteSuperMethod = superMethod; return leastConcreteSuperMethod; @@ -105,10 +116,10 @@ public class RefusedBequestInspection extends BaseInspection { return leastConcreteSuperMethod; } - private boolean containsSuperCall(PsiCodeBlock body, - PsiMethod method){ + private boolean containsSuperCall(@NotNull PsiElement context, + @NotNull PsiMethod method){ final SuperCallVisitor visitor = new SuperCallVisitor(method); - body.accept(visitor); + context.accept(visitor); return visitor.hasSuperCall(); } }