diff --git a/plugins/InspectionGadgets/src/com/siyeh/InspectionGadgetsBundle.properties b/plugins/InspectionGadgets/src/com/siyeh/InspectionGadgetsBundle.properties index 4df0b02e1574..8948f9e10095 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/InspectionGadgetsBundle.properties +++ b/plugins/InspectionGadgets/src/com/siyeh/InspectionGadgetsBundle.properties @@ -628,7 +628,7 @@ manual.array.copy.display.name=Manual array copy manual.array.to.collection.copy.display.name=Manual array to collection copy long.literals.ending.with.lowercase.l.display.name='long' literal ending with 'l' instead of 'L' overly.complex.arithmetic.expression.display.name=Overly complex arithmetic expression -j.unit.abstract.test.class.naming.convention.display.name=JUnit abstract test class naming convention +junit.abstract.test.class.naming.convention.display.name=JUnit abstract test class naming convention unnecessary.parentheses.display.name=Unnecessary parentheses test.case.in.product.code.display.name=JUnit TestCase in product source test.method.in.product.code.display.name=JUnit test method in product source @@ -805,7 +805,7 @@ class.in.top.level.package.display.name=Class without package statement confusing.else.display.name=Confusing 'else' branch public.field.accessed.in.synchronized.context.display.name=Non-private field accessed in synchronized context string.replaceable.by.string.buffer.display.name=Non-constant String should be StringBuilder -j.unit.test.class.naming.convention.display.name=JUnit test class naming convention +junit.test.class.naming.convention.display.name=JUnit test class naming convention method.coupling.display.name=Overly coupled method collections.must.have.initial.capacity.display.name=Collection without initial capacity anonymous.inner.class.display.name=Anonymous inner class @@ -1131,12 +1131,12 @@ instance.variable.name.convention.problem.descriptor.regex.mismatch=Instance fie interface.name.convention.problem.descriptor.short=Interface name #ref is too short #loc interface.name.convention.problem.descriptor.long=Interface name #ref is too long #loc interface.name.convention.problem.descriptor.regex.mismatch=Interface name #ref doesn''t match regex ''{0}'' #loc -j.unit.abstract.test.class.naming.convention.problem.descriptor.short=Abstract JUnit test class name #ref is too short #loc -j.unit.abstract.test.class.naming.convention.problem.descriptor.long=Abstract JUnit test class name #ref is too long #loc -j.unit.abstract.test.class.naming.convention.problem.descriptor.regex.mismatch=Abstract JUnit test class name #ref doesn''t match regex ''{0}'' #loc -j.unit.test.class.naming.convention.problem.descriptor.short=JUnit test class name #ref is too short #loc -j.unit.test.class.naming.convention.problem.descriptor.long=JUnit test class name #ref is too long #loc -j.unit.test.class.naming.convention.problem.descriptor.regex.mismatch=JUnit test class name #ref doesn''t match regex ''{0}'' #loc +junit.abstract.test.class.naming.convention.problem.descriptor.short=Abstract JUnit test class name #ref is too short #loc +junit.abstract.test.class.naming.convention.problem.descriptor.long=Abstract JUnit test class name #ref is too long #loc +junit.abstract.test.class.naming.convention.problem.descriptor.regex.mismatch=Abstract JUnit test class name #ref doesn''t match regex ''{0}'' #loc +junit.test.class.naming.convention.problem.descriptor.short=JUnit test class name #ref is too short #loc +junit.test.class.naming.convention.problem.descriptor.long=JUnit test class name #ref is too long #loc +junit.test.class.naming.convention.problem.descriptor.regex.mismatch=JUnit test class name #ref doesn''t match regex ''{0}'' #loc local.variable.naming.convention.problem.descriptor.short=Local variable name #ref is too short #loc local.variable.naming.convention.problem.descriptor.long=Local variable name #ref is too long #loc local.variable.naming.convention.problem.descriptor.regex.mismatch=Local variable name #ref doesn''t match regex ''{0}'' #loc @@ -1182,7 +1182,7 @@ unnecessary.boxing.remove.quickfix=Remove boxing unnecessary.unboxing.remove.quickfix=Remove unboxing misordered.assert.equals.parameters.flip.quickfix=Flip compared parameters setup.calls.super.setup.add.quickfix=Add call to 'super.setUp()' -simplify.j.unit.assertion.simplify.quickfix=Simplify assertion +simplify.junit.assertion.simplify.quickfix=Simplify assertion teardown.calls.super.teardown.add.quickfix=Add call to 'super.tearDown()' test.method.is.public.void.no.arg.problem.descriptor1=Test method #ref() should probably not have parameters #loc test.method.is.public.void.no.arg.problem.descriptor2=Test method #ref() is not declared 'public void' #loc @@ -1831,4 +1831,7 @@ shift.out.of.range.quickfix=Replace ''{0}'' with ''{1}'' boxing.boxed.value.display.name=Boxing of already boxed value boxing.boxed.value.problem.descriptor=Boxing of already boxed #ref boxing.boxed.value.quickfix=Remove unnecessary boxing -unnecessary.javadoc.link.option=Ignore inline links to super methods \ No newline at end of file +unnecessary.javadoc.link.option=Ignore inline links to super methods +constant.junit.assert.argument.display.name=Constant JUnit assert argument +constant.junit.assert.argument.problem.descriptor=Argument #ref is constant +test.case.with.no.test.methods.option=Ignore test cases which have super classes with test methods \ No newline at end of file diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/BaseInspectionVisitor.java b/plugins/InspectionGadgets/src/com/siyeh/ig/BaseInspectionVisitor.java index 09cb9f13dea3..c365f9e72c54 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/ig/BaseInspectionVisitor.java +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/BaseInspectionVisitor.java @@ -1,5 +1,5 @@ /* - * Copyright 2003-2008 Dave Griffith, Bas Leijdekkers + * Copyright 2003-2011 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. @@ -17,6 +17,7 @@ package com.siyeh.ig; import com.intellij.codeInspection.ProblemsHolder; import com.intellij.psi.*; +import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; public abstract class BaseInspectionVisitor extends JavaElementVisitor{ @@ -49,7 +50,8 @@ public abstract class BaseInspectionVisitor extends JavaElementVisitor{ } protected final void registerMethodCallError( - @NotNull PsiMethodCallExpression expression, Object... infos) { + @NotNull PsiMethodCallExpression expression, + @NonNls Object... infos) { final PsiReferenceExpression methodExpression = expression.getMethodExpression(); final PsiElement nameToken = methodExpression.getReferenceNameElement(); diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/bugs/CollectionAddedToSelfInspection.java b/plugins/InspectionGadgets/src/com/siyeh/ig/bugs/CollectionAddedToSelfInspection.java index dc5ff5783f1f..aab48ff11ff4 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/ig/bugs/CollectionAddedToSelfInspection.java +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/bugs/CollectionAddedToSelfInspection.java @@ -1,5 +1,5 @@ /* - * Copyright 2003-2010 Dave Griffith, Bas Leijdekkers + * Copyright 2003-2011 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,10 +16,10 @@ package com.siyeh.ig.bugs; import com.intellij.psi.*; +import com.intellij.psi.util.InheritanceUtil; import com.siyeh.InspectionGadgetsBundle; import com.siyeh.ig.BaseInspection; import com.siyeh.ig.BaseInspectionVisitor; -import com.siyeh.ig.psiutils.ClassUtils; import com.siyeh.ig.psiutils.EquivalenceChecker; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; @@ -91,9 +91,9 @@ public class CollectionAddedToSelfInspection extends BaseInspection { if(qualifierClass == null){ return; } - if(!ClassUtils.isSubclass(qualifierClass, + if(!InheritanceUtil.isInheritor(qualifierClass, CommonClassNames.JAVA_UTIL_COLLECTION) && - !ClassUtils.isSubclass(qualifierClass, + !InheritanceUtil.isInheritor(qualifierClass, CommonClassNames.JAVA_UTIL_MAP)) { return; } diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/bugs/IgnoreResultOfCallInspection.java b/plugins/InspectionGadgets/src/com/siyeh/ig/bugs/IgnoreResultOfCallInspection.java index 77b68fe582cb..8b1f23cdcccb 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/ig/bugs/IgnoreResultOfCallInspection.java +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/bugs/IgnoreResultOfCallInspection.java @@ -1,5 +1,5 @@ /* - * Copyright 2003-2007 Dave Griffith, Bas Leijdekkers + * Copyright 2003-2011 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. @@ -22,12 +22,12 @@ import com.intellij.codeInspection.ui.RemoveAction; import com.intellij.openapi.util.InvalidDataException; import com.intellij.openapi.util.WriteExternalException; import com.intellij.psi.*; +import com.intellij.psi.util.InheritanceUtil; import com.siyeh.InspectionGadgetsBundle; import com.siyeh.ig.BaseInspection; import com.siyeh.ig.BaseInspectionVisitor; -import com.siyeh.ig.psiutils.ClassUtils; import com.siyeh.ig.psiutils.LibraryUtil; -import com.siyeh.ig.ui.*; +import com.siyeh.ig.ui.ToggleAction; import org.jdom.Element; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; @@ -154,7 +154,7 @@ public class IgnoreResultOfCallInspection extends BaseInspection { continue; } final String className = classNames.get(i); - if (!ClassUtils.isSubclass(aClass, className)) { + if (!InheritanceUtil.isInheritor(aClass, className)) { continue; } registerMethodCallError(call, aClass); @@ -198,7 +198,6 @@ public class IgnoreResultOfCallInspection extends BaseInspection { JCheckBox nonLibraryCheckbox; Form(){ - super(); addButton.setAction(new AddAction(table)); removeButton.setAction(new RemoveAction(table)); nonLibraryCheckbox.setAction(new ToggleAction( diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/bugs/NewStringBufferWithCharArgumentInspection.java b/plugins/InspectionGadgets/src/com/siyeh/ig/bugs/NewStringBufferWithCharArgumentInspection.java index e0934e695584..f46502d5c2b6 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/ig/bugs/NewStringBufferWithCharArgumentInspection.java +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/bugs/NewStringBufferWithCharArgumentInspection.java @@ -1,5 +1,5 @@ /* - * Copyright 2007-2010 Bas Leijdekkers + * Copyright 2007-2011 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,12 +18,12 @@ package com.siyeh.ig.bugs; import com.intellij.codeInspection.ProblemDescriptor; import com.intellij.openapi.project.Project; import com.intellij.psi.*; +import com.intellij.psi.util.InheritanceUtil; 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.ClassUtils; import org.jetbrains.annotations.Nls; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -120,7 +120,7 @@ public class NewStringBufferWithCharArgumentInspection extends BaseInspection { return; } final PsiClass aClass = constructor.getContainingClass(); - if (!ClassUtils.isSubclass(aClass, + if (!InheritanceUtil.isInheritor(aClass, CommonClassNames.JAVA_LANG_ABSTRACT_STRING_BUILDER)) { return; } diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/bugs/StringConcatenationInMessageFormatCallInspection.java b/plugins/InspectionGadgets/src/com/siyeh/ig/bugs/StringConcatenationInMessageFormatCallInspection.java index f30e49d16092..0d6a94accf16 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/ig/bugs/StringConcatenationInMessageFormatCallInspection.java +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/bugs/StringConcatenationInMessageFormatCallInspection.java @@ -18,13 +18,13 @@ package com.siyeh.ig.bugs; import com.intellij.codeInspection.ProblemDescriptor; import com.intellij.openapi.project.Project; import com.intellij.psi.*; +import com.intellij.psi.util.InheritanceUtil; import com.intellij.psi.util.PsiUtil; 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.ClassUtils; import com.siyeh.ig.psiutils.ExpressionUtils; import org.jetbrains.annotations.Nls; import org.jetbrains.annotations.NonNls; @@ -224,7 +224,8 @@ public class StringConcatenationInMessageFormatCallInspection return false; } final PsiClass aClass = (PsiClass) target; - return ClassUtils.isSubclass(aClass, "java.text.MessageFormat"); + return InheritanceUtil.isInheritor(aClass, + "java.text.MessageFormat"); } } } diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/bugs/SuspiciousToArrayCallInspection.java b/plugins/InspectionGadgets/src/com/siyeh/ig/bugs/SuspiciousToArrayCallInspection.java index 8410adc1703a..bc97a8b76689 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/ig/bugs/SuspiciousToArrayCallInspection.java +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/bugs/SuspiciousToArrayCallInspection.java @@ -1,5 +1,5 @@ /* - * Copyright 2005-2010 Bas Leijdekkers + * Copyright 2005-2011 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,10 +16,10 @@ package com.siyeh.ig.bugs; import com.intellij.psi.*; +import com.intellij.psi.util.InheritanceUtil; import com.siyeh.InspectionGadgetsBundle; import com.siyeh.ig.BaseInspection; import com.siyeh.ig.BaseInspectionVisitor; -import com.siyeh.ig.psiutils.ClassUtils; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; @@ -76,7 +76,7 @@ public class SuspiciousToArrayCallInspection extends BaseInspection { final PsiClassType classType = (PsiClassType)type; final PsiClass aClass = classType.resolve(); if (aClass == null || - !ClassUtils.isSubclass(aClass, + !InheritanceUtil.isInheritor(aClass, CommonClassNames.JAVA_UTIL_COLLECTION)) { return; } diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/bugs/ThrowableResultOfMethodCallIgnoredInspection.java b/plugins/InspectionGadgets/src/com/siyeh/ig/bugs/ThrowableResultOfMethodCallIgnoredInspection.java index fc98f3ed36f7..3c83d5286c68 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/ig/bugs/ThrowableResultOfMethodCallIgnoredInspection.java +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/bugs/ThrowableResultOfMethodCallIgnoredInspection.java @@ -1,5 +1,5 @@ /* - * Copyright 2008 Bas Leijdekkers + * Copyright 2008-2011 Bas Leijdekkers * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -17,24 +17,26 @@ package com.siyeh.ig.bugs; import com.intellij.psi.*; import com.intellij.psi.search.searches.ReferencesSearch; +import com.intellij.psi.util.InheritanceUtil; import com.intellij.psi.util.PsiTreeUtil; import com.intellij.util.Query; +import com.siyeh.InspectionGadgetsBundle; import com.siyeh.ig.BaseInspection; import com.siyeh.ig.BaseInspectionVisitor; import com.siyeh.ig.psiutils.TypeUtils; -import com.siyeh.ig.psiutils.ClassUtils; -import com.siyeh.InspectionGadgetsBundle; import org.jetbrains.annotations.NotNull; public class ThrowableResultOfMethodCallIgnoredInspection extends BaseInspection { + @Override @NotNull public String getDisplayName() { return InspectionGadgetsBundle.message( "throwable.result.of.method.call.ignored.display.name"); } + @Override @NotNull protected String buildErrorString(Object... infos) { return InspectionGadgetsBundle.message( @@ -46,6 +48,7 @@ public class ThrowableResultOfMethodCallIgnoredInspection return true; } + @Override public BaseInspectionVisitor buildVisitor() { return new ThrowableResultOfMethodCallIgnoredVisitor(); } @@ -75,7 +78,7 @@ public class ThrowableResultOfMethodCallIgnoredInspection } if (!method.hasModifierProperty(PsiModifier.STATIC)) { final PsiClass containingClass = method.getContainingClass(); - if (ClassUtils.isSubclass(containingClass, + if (InheritanceUtil.isInheritor(containingClass, CommonClassNames.JAVA_LANG_THROWABLE)) { return; } @@ -117,11 +120,9 @@ public class ThrowableResultOfMethodCallIgnoredInspection while (usageParent instanceof PsiParenthesizedExpression) { usageParent = usageParent.getParent(); } - if (usageParent instanceof PsiThrowStatement) { - return; - } else if (usageParent instanceof PsiReturnStatement) { - return; - } else if (usageParent instanceof PsiExpressionList) { + if (usageParent instanceof PsiThrowStatement || + usageParent instanceof PsiReturnStatement || + usageParent instanceof PsiExpressionList) { return; } } diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/bugs/UseOfPropertiesAsHashtableInspection.java b/plugins/InspectionGadgets/src/com/siyeh/ig/bugs/UseOfPropertiesAsHashtableInspection.java index 37dc74eb8c17..f9db480acbd3 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/ig/bugs/UseOfPropertiesAsHashtableInspection.java +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/bugs/UseOfPropertiesAsHashtableInspection.java @@ -1,5 +1,5 @@ /* - * Copyright 2003-2007 Dave Griffith, Bas Leijdekkers + * Copyright 2003-2011 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,11 +16,11 @@ package com.siyeh.ig.bugs; import com.intellij.psi.*; +import com.intellij.psi.util.InheritanceUtil; import com.siyeh.HardcodedMethodConstants; import com.siyeh.InspectionGadgetsBundle; import com.siyeh.ig.BaseInspection; import com.siyeh.ig.BaseInspectionVisitor; -import com.siyeh.ig.psiutils.ClassUtils; import com.siyeh.ig.psiutils.TypeUtils; import org.jetbrains.annotations.NotNull; @@ -65,7 +65,8 @@ public class UseOfPropertiesAsHashtableInspection extends BaseInspection { if(containingClass == null){ return; } - if(!ClassUtils.isSubclass(containingClass, "java.util.Hashtable")){ + if(!InheritanceUtil.isInheritor(containingClass, + "java.util.Hashtable")){ return; } final PsiExpression qualifier = diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/classlayout/MissingOverrideAnnotationInspection.java b/plugins/InspectionGadgets/src/com/siyeh/ig/classlayout/MissingOverrideAnnotationInspection.java index 449827a75c3f..190adb30e6bd 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/ig/classlayout/MissingOverrideAnnotationInspection.java +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/classlayout/MissingOverrideAnnotationInspection.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2009 JetBrains s.r.o. + * Copyright 2000-2011 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. @@ -218,8 +218,8 @@ public class MissingOverrideAnnotationInspection extends BaseInspection { final List toExclude = new SmartList(); for (PsiMethod superMethod : superMethods) { final PsiClass superClass = superMethod.getContainingClass(); - if (!InheritanceUtil.isCorrectDescendant(methodClass, - superClass, true)) { + if (!InheritanceUtil.isInheritorOrSelf(methodClass, superClass, + true)) { toExclude.add(superMethod); } } diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/controlflow/ForLoopWithMissingComponentInspection.java b/plugins/InspectionGadgets/src/com/siyeh/ig/controlflow/ForLoopWithMissingComponentInspection.java index 0c5997151f1d..1651cb9eeffe 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/ig/controlflow/ForLoopWithMissingComponentInspection.java +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/controlflow/ForLoopWithMissingComponentInspection.java @@ -1,5 +1,5 @@ /* - * Copyright 2003-2010 Dave Griffith, Bas Leijdekkers + * Copyright 2003-2011 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,13 +15,13 @@ */ package com.siyeh.ig.controlflow; +import com.intellij.codeInspection.ui.SingleCheckboxOptionsPanel; import com.intellij.psi.*; +import com.intellij.psi.util.InheritanceUtil; import com.siyeh.HardcodedMethodConstants; import com.siyeh.InspectionGadgetsBundle; import com.siyeh.ig.BaseInspection; import com.siyeh.ig.BaseInspectionVisitor; -import com.siyeh.ig.psiutils.ClassUtils; -import com.intellij.codeInspection.ui.SingleCheckboxOptionsPanel; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -144,7 +144,7 @@ public class ForLoopWithMissingComponentInspection extends BaseInspection { if(declaredClass == null){ continue; } - if(!ClassUtils.isSubclass(declaredClass, + if(!InheritanceUtil.isInheritor(declaredClass, CommonClassNames.JAVA_UTIL_ITERATOR)){ continue; } diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/errorhandling/CheckedExceptionClassInspection.java b/plugins/InspectionGadgets/src/com/siyeh/ig/errorhandling/CheckedExceptionClassInspection.java index 7cd6b3e43d57..669577fcb923 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/ig/errorhandling/CheckedExceptionClassInspection.java +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/errorhandling/CheckedExceptionClassInspection.java @@ -1,5 +1,5 @@ /* - * Copyright 2003-2010 Dave Griffith, Bas Leijdekkers + * Copyright 2003-2011 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. @@ -17,10 +17,10 @@ package com.siyeh.ig.errorhandling; import com.intellij.psi.CommonClassNames; import com.intellij.psi.PsiClass; +import com.intellij.psi.util.InheritanceUtil; import com.siyeh.InspectionGadgetsBundle; import com.siyeh.ig.BaseInspection; import com.siyeh.ig.BaseInspectionVisitor; -import com.siyeh.ig.psiutils.ClassUtils; import org.jetbrains.annotations.NotNull; public class CheckedExceptionClassInspection extends BaseInspection { @@ -47,11 +47,11 @@ public class CheckedExceptionClassInspection extends BaseInspection { private static class CheckedExceptionClassVisitor extends BaseInspectionVisitor { @Override public void visitClass(@NotNull PsiClass aClass) { - if (!ClassUtils.isSubclass(aClass, + if (!InheritanceUtil.isInheritor(aClass, CommonClassNames.JAVA_LANG_THROWABLE)) { return; } - if (ClassUtils.isSubclass(aClass, + if (InheritanceUtil.isInheritor(aClass, CommonClassNames.JAVA_LANG_RUNTIME_EXCEPTION)) { return; } diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/errorhandling/ErrorRethrownInspection.java b/plugins/InspectionGadgets/src/com/siyeh/ig/errorhandling/ErrorRethrownInspection.java index 79377f6cb729..57c58eccd991 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/ig/errorhandling/ErrorRethrownInspection.java +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/errorhandling/ErrorRethrownInspection.java @@ -1,5 +1,5 @@ /* - * Copyright 2003-2010 Dave Griffith, Bas Leijdekkers + * Copyright 2003-2011 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,11 +16,11 @@ package com.siyeh.ig.errorhandling; import com.intellij.psi.*; +import com.intellij.psi.util.InheritanceUtil; import com.intellij.psi.util.PsiUtil; import com.siyeh.InspectionGadgetsBundle; import com.siyeh.ig.BaseInspection; import com.siyeh.ig.BaseInspectionVisitor; -import com.siyeh.ig.psiutils.ClassUtils; import com.siyeh.ig.psiutils.TypeUtils; import org.jetbrains.annotations.NotNull; @@ -73,7 +73,7 @@ public class ErrorRethrownInspection extends BaseInspection { if (aClass == null) { return; } - if (!ClassUtils.isSubclass(aClass, + if (!InheritanceUtil.isInheritor(aClass, CommonClassNames.JAVA_LANG_ERROR)) { return; } diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/errorhandling/NonFinalFieldOfExceptionInspection.java b/plugins/InspectionGadgets/src/com/siyeh/ig/errorhandling/NonFinalFieldOfExceptionInspection.java index 3cbe78119b15..cf5598164f7d 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/ig/errorhandling/NonFinalFieldOfExceptionInspection.java +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/errorhandling/NonFinalFieldOfExceptionInspection.java @@ -1,5 +1,5 @@ /* - * Copyright 2003-2010 Dave Griffith, Bas Leijdekkers + * Copyright 2003-2011 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. @@ -19,12 +19,12 @@ import com.intellij.psi.CommonClassNames; import com.intellij.psi.PsiClass; import com.intellij.psi.PsiField; import com.intellij.psi.PsiModifier; +import com.intellij.psi.util.InheritanceUtil; import com.siyeh.InspectionGadgetsBundle; import com.siyeh.ig.BaseInspection; import com.siyeh.ig.BaseInspectionVisitor; import com.siyeh.ig.InspectionGadgetsFix; import com.siyeh.ig.fixes.MakeFieldFinalFix; -import com.siyeh.ig.psiutils.ClassUtils; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -69,7 +69,7 @@ public class NonFinalFieldOfExceptionInspection extends BaseInspection { if (containingClass == null) { return; } - if (!ClassUtils.isSubclass(containingClass, + if (!InheritanceUtil.isInheritor(containingClass, CommonClassNames.JAVA_LANG_EXCEPTION)) { return; } diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/errorhandling/UncheckedExceptionClassInspection.java b/plugins/InspectionGadgets/src/com/siyeh/ig/errorhandling/UncheckedExceptionClassInspection.java index b6469ffe0b1b..07e1de3eb35c 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/ig/errorhandling/UncheckedExceptionClassInspection.java +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/errorhandling/UncheckedExceptionClassInspection.java @@ -1,5 +1,5 @@ /* - * Copyright 2003-2010 Dave Griffith, Bas Leijdekkers + * Copyright 2003-2011 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. @@ -17,10 +17,10 @@ package com.siyeh.ig.errorhandling; import com.intellij.psi.CommonClassNames; import com.intellij.psi.PsiClass; +import com.intellij.psi.util.InheritanceUtil; import com.siyeh.InspectionGadgetsBundle; import com.siyeh.ig.BaseInspection; import com.siyeh.ig.BaseInspectionVisitor; -import com.siyeh.ig.psiutils.ClassUtils; import org.jetbrains.annotations.NotNull; public class UncheckedExceptionClassInspection extends BaseInspection { @@ -48,13 +48,13 @@ public class UncheckedExceptionClassInspection extends BaseInspection { extends BaseInspectionVisitor { @Override public void visitClass(@NotNull PsiClass aClass) { - if (!ClassUtils.isSubclass(aClass, + if (!InheritanceUtil.isInheritor(aClass, CommonClassNames.JAVA_LANG_THROWABLE)) { return; } - if (ClassUtils.isSubclass(aClass, + if (InheritanceUtil.isInheritor(aClass, CommonClassNames.JAVA_LANG_EXCEPTION) && - !ClassUtils.isSubclass(aClass, + !InheritanceUtil.isInheritor(aClass, CommonClassNames.JAVA_LANG_RUNTIME_EXCEPTION)) { return; } diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/fixes/ExtractParameterAsLocalVariableFix.java b/plugins/InspectionGadgets/src/com/siyeh/ig/fixes/ExtractParameterAsLocalVariableFix.java index d0b8b8623e65..91989e14ac8c 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/ig/fixes/ExtractParameterAsLocalVariableFix.java +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/fixes/ExtractParameterAsLocalVariableFix.java @@ -1,5 +1,5 @@ /* - * Copyright 2008-2009 Bas Leijdekkers + * Copyright 2008-2011 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,11 +18,11 @@ package com.siyeh.ig.fixes; import com.intellij.codeInspection.ProblemDescriptor; import com.intellij.openapi.project.Project; import com.intellij.psi.*; -import com.intellij.psi.tree.IElementType; import com.intellij.psi.codeStyle.CodeStyleManager; import com.intellij.psi.codeStyle.JavaCodeStyleManager; import com.intellij.psi.search.SearchScope; import com.intellij.psi.search.searches.ReferencesSearch; +import com.intellij.psi.tree.IElementType; import com.intellij.util.IncorrectOperationException; import com.intellij.util.Query; import com.siyeh.InspectionGadgetsBundle; @@ -74,9 +74,8 @@ public class ExtractParameterAsLocalVariableFix if (body == null) { return; } - final PsiManager manager = PsiManager.getInstance(project); final CodeStyleManager codeStyleManager = - manager.getCodeStyleManager(); + CodeStyleManager.getInstance(project); final String parameterName = parameterReference.getText(); final JavaCodeStyleManager javaCodeStyleManager = JavaCodeStyleManager.getInstance(project); @@ -192,7 +191,7 @@ public class ExtractParameterAsLocalVariableFix (PsiAssignmentExpression)parent; final IElementType tokenType = assignmentExpression.getOperationTokenType(); - if (tokenType != JavaTokenType.EQ) { + if (!JavaTokenType.EQ.equals(tokenType)) { return false; } final PsiExpression lExpression = diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/initialization/OverriddenMethodCallDuringObjectConstructionInspection.java b/plugins/InspectionGadgets/src/com/siyeh/ig/initialization/OverriddenMethodCallDuringObjectConstructionInspection.java index 453cd1143070..4cf19a897d62 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/ig/initialization/OverriddenMethodCallDuringObjectConstructionInspection.java +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/initialization/OverriddenMethodCallDuringObjectConstructionInspection.java @@ -1,5 +1,5 @@ /* - * Copyright 2003-2007 Dave Griffith, Bas Leijdekkers + * Copyright 2003-2011 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. @@ -29,18 +29,21 @@ import org.jetbrains.annotations.NotNull; public class OverriddenMethodCallDuringObjectConstructionInspection extends BaseInspection{ + @Override @NotNull public String getDisplayName(){ return InspectionGadgetsBundle.message( "overridden.method.call.in.constructor.display.name"); } + @Override @NotNull public String buildErrorString(Object... infos){ return InspectionGadgetsBundle.message( "overridden.method.call.in.constructor.problem.descriptor"); } + @Override public BaseInspectionVisitor buildVisitor(){ return new OverriddenMethodCallInConstructorVisitor(); } @@ -90,7 +93,7 @@ public class OverriddenMethodCallDuringObjectConstructionInspection } final PsiClass calledMethodClass = calledMethod.getContainingClass(); - if(!InheritanceUtil.isCorrectDescendant(containingClass, + if(!InheritanceUtil.isInheritorOrSelf(containingClass, calledMethodClass, true)){ return; } diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/javabeans/ClassWithoutConstructorInspection.java b/plugins/InspectionGadgets/src/com/siyeh/ig/javabeans/ClassWithoutConstructorInspection.java index fbd9866a28e4..2abb541aecdb 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/ig/javabeans/ClassWithoutConstructorInspection.java +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/javabeans/ClassWithoutConstructorInspection.java @@ -1,5 +1,5 @@ /* - * Copyright 2003-2007 Dave Griffith, Bas Leijdekkers + * Copyright 2003-2011 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. @@ -28,18 +28,21 @@ import org.jetbrains.annotations.NotNull; public class ClassWithoutConstructorInspection extends BaseInspection { + @Override @NotNull public String getDisplayName() { return InspectionGadgetsBundle.message( "class.without.constructor.display.name"); } + @Override @NotNull protected String buildErrorString(Object... infos) { return InspectionGadgetsBundle.message( "class.without.constructor.problem.descriptor"); } + @Override protected InspectionGadgetsFix buildFix(Object... infos) { return new ClassWithoutConstructorFix(); } @@ -53,12 +56,13 @@ public class ClassWithoutConstructorInspection extends BaseInspection { "class.without.constructor.create.quickfix"); } + @Override public void doFix(Project project, ProblemDescriptor descriptor) throws IncorrectOperationException { final PsiElement classIdentifier = descriptor.getPsiElement(); final PsiClass aClass = (PsiClass)classIdentifier.getParent(); - final PsiManager psiManager = PsiManager.getInstance(project); - final PsiElementFactory factory = JavaPsiFacade.getInstance(psiManager.getProject()).getElementFactory(); + final PsiElementFactory factory = + JavaPsiFacade.getElementFactory(project); final PsiMethod constructor = factory.createConstructor(); final PsiModifierList modifierList = constructor.getModifierList(); if (aClass == null) { @@ -78,11 +82,12 @@ public class ClassWithoutConstructorInspection extends BaseInspection { } aClass.add(constructor); final CodeStyleManager styleManager = - psiManager.getCodeStyleManager(); + CodeStyleManager.getInstance(project); styleManager.reformat(constructor); } } + @Override public BaseInspectionVisitor buildVisitor() { return new ClassWithoutConstructorVisitor(); } diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/jdk/EnumerationCanBeIterationInspection.java b/plugins/InspectionGadgets/src/com/siyeh/ig/jdk/EnumerationCanBeIterationInspection.java index 19a715a24013..057ce0509bf3 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/ig/jdk/EnumerationCanBeIterationInspection.java +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/jdk/EnumerationCanBeIterationInspection.java @@ -1,5 +1,5 @@ /* - * Copyright 2007 Bas Leijdekkers + * Copyright 2007-2011 Bas Leijdekkers * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -21,6 +21,7 @@ import com.intellij.psi.*; import com.intellij.psi.codeStyle.*; import com.intellij.psi.search.GlobalSearchScope; import com.intellij.psi.search.searches.ReferencesSearch; +import com.intellij.psi.util.InheritanceUtil; import com.intellij.psi.util.PsiTreeUtil; import com.intellij.util.IncorrectOperationException; import com.intellij.util.Query; @@ -28,7 +29,6 @@ import com.siyeh.InspectionGadgetsBundle; import com.siyeh.ig.BaseInspection; import com.siyeh.ig.BaseInspectionVisitor; import com.siyeh.ig.InspectionGadgetsFix; -import com.siyeh.ig.psiutils.ClassUtils; import com.siyeh.ig.psiutils.PsiElementOrderComparator; import com.siyeh.ig.psiutils.TypeUtils; import org.jetbrains.annotations.NonNls; @@ -179,8 +179,7 @@ public class EnumerationCanBeIterationInspection extends BaseInspection { PsiMethodCallExpression methodCallExpression, String variableName, PsiType parameterType) throws IncorrectOperationException { - final StringBuilder newStatementText = - new StringBuilder(); + @NonNls final StringBuilder newStatementText = new StringBuilder(); final Project project = methodCallExpression.getProject(); final CodeStyleSettings codeStyleSettings = CodeStyleSettingsManager.getSettings(project); @@ -231,12 +230,13 @@ public class EnumerationCanBeIterationInspection extends BaseInspection { return null; } newStatementText.append(';'); - final PsiManager manager = methodCallExpression.getManager(); - final PsiElementFactory factory = JavaPsiFacade.getInstance(manager.getProject()).getElementFactory(); + final PsiElementFactory factory = + JavaPsiFacade.getElementFactory(project); final PsiStatement statement = factory.createStatementFromText(newStatementText.toString(), methodExpression); - final JavaCodeStyleManager styleManager = JavaCodeStyleManager.getInstance(project); + final JavaCodeStyleManager styleManager = + JavaCodeStyleManager.getInstance(project); styleManager.shortenClassReferences(statement); return statement; } @@ -293,9 +293,9 @@ public class EnumerationCanBeIterationInspection extends BaseInspection { (PsiMethodCallExpression) referenceGrandParent; final PsiReferenceExpression foundReferenceExpression = callExpression.getMethodExpression(); - final String foundName = + @NonNls final String foundName = foundReferenceExpression.getReferenceName(); - final String newExpressionText; + @NonNls final String newExpressionText; if ("hasMoreElements".equals(foundName)) { newExpressionText = newVariableName + ".hasNext()"; } else if ("nextElement".equals(foundName)) { @@ -312,6 +312,7 @@ public class EnumerationCanBeIterationInspection extends BaseInspection { return result; } + @NonNls private static String createVariableName(PsiElement context) { final Project project = context.getProject(); final JavaPsiFacade facade = JavaPsiFacade.getInstance(project); @@ -339,6 +340,7 @@ public class EnumerationCanBeIterationInspection extends BaseInspection { } } + @Override public BaseInspectionVisitor buildVisitor() { return new EnumerationCanBeIterationVisitor(); } @@ -400,10 +402,10 @@ public class EnumerationCanBeIterationInspection extends BaseInspection { return; } final PsiClass containingClass = method.getContainingClass(); - if (ClassUtils.isSubclass(containingClass, + if (InheritanceUtil.isInheritor(containingClass, "java.util.Vector")) { registerMethodCallError(expression, ITERATOR_TEXT); - } else if (ClassUtils.isSubclass(containingClass, + } else if (InheritanceUtil.isInheritor(containingClass, "java.util.Hashtable")) { registerMethodCallError(expression, VALUES_ITERATOR_TEXT); } @@ -413,7 +415,7 @@ public class EnumerationCanBeIterationInspection extends BaseInspection { return; } final PsiClass containingClass = method.getContainingClass(); - if (ClassUtils.isSubclass(containingClass, + if (InheritanceUtil.isInheritor(containingClass, "java.util.Hashtable")) { registerMethodCallError(expression, KEY_SET_ITERATOR_TEXT); } @@ -446,7 +448,8 @@ public class EnumerationCanBeIterationInspection extends BaseInspection { super.visitMethodCallExpression(expression); final PsiReferenceExpression methodExpression = expression.getMethodExpression(); - final String methodName = methodExpression.getReferenceName(); + @NonNls final String methodName = + methodExpression.getReferenceName(); if (!"hasMoreElements".equals(methodName) && !"nextElement".equals(methodName)) { return; diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/jdk/VarargParameterInspection.java b/plugins/InspectionGadgets/src/com/siyeh/ig/jdk/VarargParameterInspection.java index 4ce271fd5929..1bde06bdb43c 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/ig/jdk/VarargParameterInspection.java +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/jdk/VarargParameterInspection.java @@ -1,5 +1,5 @@ /* - * Copyright 2003-2007 Dave Griffith, Bas Leijdekkers + * Copyright 2003-2011 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. @@ -35,23 +35,27 @@ import java.util.Collection; public class VarargParameterInspection extends BaseInspection { + @Override @NotNull public String getID(){ return "VariableArgumentMethod"; } + @Override @NotNull public String getDisplayName() { return InspectionGadgetsBundle.message( "variable.argument.method.display.name"); } + @Override @NotNull public String buildErrorString(Object... infos) { return InspectionGadgetsBundle.message( "variable.argument.method.problem.descriptor"); } + @Override @Nullable protected InspectionGadgetsFix buildFix(Object... infos) { return new VarargParameterFix(); @@ -65,6 +69,7 @@ public class VarargParameterInspection extends BaseInspection { "variable.argument.method.quickfix"); } + @Override protected void doFix(Project project, ProblemDescriptor descriptor) throws IncorrectOperationException { final PsiElement element = descriptor.getPsiElement(); @@ -121,8 +126,9 @@ public class VarargParameterInspection extends BaseInspection { } } builder.append('}'); - final PsiManager manager = referenceExpression.getManager(); - final PsiElementFactory factory = JavaPsiFacade.getInstance(manager.getProject()).getElementFactory(); + final Project project = referenceExpression.getProject(); + final PsiElementFactory factory = + JavaPsiFacade.getElementFactory(project); final PsiExpression arrayExpression = factory.createExpressionFromText(builder.toString(), referenceExpression); @@ -136,12 +142,15 @@ public class VarargParameterInspection extends BaseInspection { argumentList.add(arrayExpression); } final CodeStyleManager codeStyleManager = - manager.getCodeStyleManager(); - JavaCodeStyleManager.getInstance(manager.getProject()).shortenClassReferences(argumentList); + CodeStyleManager.getInstance(project); + final JavaCodeStyleManager javaCodeStyleManager = + JavaCodeStyleManager.getInstance(project); + javaCodeStyleManager.shortenClassReferences(argumentList); codeStyleManager.reformat(argumentList); } } + @Override public BaseInspectionVisitor buildVisitor() { return new VarargParameterVisitor(); } diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/jdk15/ForCanBeForeachInspection.java b/plugins/InspectionGadgets/src/com/siyeh/ig/jdk15/ForCanBeForeachInspection.java index 4add13d05f19..f8f3b37f7a87 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/ig/jdk15/ForCanBeForeachInspection.java +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/jdk15/ForCanBeForeachInspection.java @@ -1,5 +1,5 @@ /* - * Copyright 2003-2010 Dave Griffith, Bas Leijdekkers + * Copyright 2003-2011 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. @@ -1066,7 +1066,7 @@ public class ForCanBeForeachInspection extends BaseInspection{ if(declaredClass == null){ return false; } - if(!ClassUtils.isSubclass(declaredClass, + if(!InheritanceUtil.isInheritor(declaredClass, CommonClassNames.JAVA_UTIL_ITERATOR)){ return false; } @@ -1107,9 +1107,9 @@ public class ForCanBeForeachInspection extends BaseInspection{ if(qualifierClass == null){ return false; } - if(!ClassUtils.isSubclass(qualifierClass, + if(!InheritanceUtil.isInheritor(qualifierClass, CommonClassNames.JAVA_LANG_ITERABLE) && - !ClassUtils.isSubclass(qualifierClass, + !InheritanceUtil.isInheritor(qualifierClass, CommonClassNames.JAVA_UTIL_COLLECTION)){ return false; } @@ -1288,7 +1288,8 @@ public class ForCanBeForeachInspection extends BaseInspection{ return false; } final PsiClass aClass = method.getContainingClass(); - return ClassUtils.isSubclass(aClass, CommonClassNames.JAVA_UTIL_LIST); + return InheritanceUtil.isInheritor(aClass, + CommonClassNames.JAVA_UTIL_LIST); } private static Holder getCollectionFromListMethodCall( @@ -1319,7 +1320,7 @@ public class ForCanBeForeachInspection extends BaseInspection{ return null; } final PsiClass containingClass = method.getContainingClass(); - if (!ClassUtils.isSubclass(containingClass, + if (!InheritanceUtil.isInheritor(containingClass, CommonClassNames.JAVA_UTIL_LIST)) { return null; } diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/jdk15/WhileCanBeForeachInspection.java b/plugins/InspectionGadgets/src/com/siyeh/ig/jdk15/WhileCanBeForeachInspection.java index de4d5b3e6670..3472dff50aba 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/ig/jdk15/WhileCanBeForeachInspection.java +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/jdk15/WhileCanBeForeachInspection.java @@ -1,5 +1,5 @@ /* - * Copyright 2003-2010 Dave Griffith, Bas Leijdekkers + * Copyright 2003-2011 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. @@ -21,6 +21,7 @@ import com.intellij.psi.*; import com.intellij.psi.codeStyle.*; import com.intellij.psi.search.GlobalSearchScope; import com.intellij.psi.search.searches.ReferencesSearch; +import com.intellij.psi.util.InheritanceUtil; import com.intellij.psi.util.PsiTreeUtil; import com.intellij.psi.util.PsiUtil; import com.intellij.psi.util.TypeConversionUtil; @@ -31,7 +32,6 @@ import com.siyeh.InspectionGadgetsBundle; import com.siyeh.ig.BaseInspection; import com.siyeh.ig.BaseInspectionVisitor; import com.siyeh.ig.InspectionGadgetsFix; -import com.siyeh.ig.psiutils.ClassUtils; import com.siyeh.ig.psiutils.StringUtils; import com.siyeh.ig.psiutils.TypeUtils; import com.siyeh.ig.psiutils.VariableAccessUtils; @@ -467,9 +467,9 @@ public class WhileCanBeForeachInspection extends BaseInspection { if (qualifierClass == null) { return false; } - if (!ClassUtils.isSubclass(qualifierClass, + if (!InheritanceUtil.isInheritor(qualifierClass, CommonClassNames.JAVA_LANG_ITERABLE) && - !ClassUtils.isSubclass(qualifierClass, + !InheritanceUtil.isInheritor(qualifierClass, CommonClassNames.JAVA_UTIL_COLLECTION)) { return false; } @@ -586,7 +586,6 @@ public class WhileCanBeForeachInspection extends BaseInspection { private final PsiVariable iterator; private NumCallsToIteratorNextVisitor(PsiVariable iterator) { - super(); this.iterator = iterator; } @@ -626,7 +625,6 @@ public class WhileCanBeForeachInspection extends BaseInspection { private final PsiVariable iterator; private IteratorRemoveVisitor(@NotNull PsiVariable iterator) { - super(); this.iterator = iterator; } @@ -670,7 +668,6 @@ public class WhileCanBeForeachInspection extends BaseInspection { private final PsiVariable iterator; private IteratorHasNextVisitor(PsiVariable iterator) { - super(); this.iterator = iterator; } diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/junit/AssertEqualsBetweenInconvertibleTypesInspection.java b/plugins/InspectionGadgets/src/com/siyeh/ig/junit/AssertEqualsBetweenInconvertibleTypesInspection.java index 808e63ceceb5..bab32cc29680 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/ig/junit/AssertEqualsBetweenInconvertibleTypesInspection.java +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/junit/AssertEqualsBetweenInconvertibleTypesInspection.java @@ -1,5 +1,5 @@ /* - * Copyright 2007-2010 Bas Leijdekkers + * Copyright 2007-2011 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,14 +15,14 @@ */ package com.siyeh.ig.junit; +import com.intellij.openapi.util.text.StringUtil; import com.intellij.psi.*; import com.intellij.psi.search.GlobalSearchScope; +import com.intellij.psi.util.InheritanceUtil; import com.intellij.psi.util.TypeConversionUtil; -import com.intellij.openapi.util.text.StringUtil; import com.siyeh.InspectionGadgetsBundle; import com.siyeh.ig.BaseInspection; import com.siyeh.ig.BaseInspectionVisitor; -import com.siyeh.ig.psiutils.ClassUtils; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; @@ -77,8 +77,10 @@ public class AssertEqualsBetweenInconvertibleTypesInspection return; } final PsiClass containingClass = method.getContainingClass(); - if (!ClassUtils.isSubclass(containingClass, "junit.framework.Assert") && - !ClassUtils.isSubclass(containingClass, "org.junit.Assert")) { + if (!InheritanceUtil.isInheritor(containingClass, + "junit.framework.Assert") && + !InheritanceUtil.isInheritor(containingClass, + "org.junit.Assert")) { return; } final PsiParameterList parameterList = method.getParameterList(); diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/junit/AssertsWithoutMessagesInspection.java b/plugins/InspectionGadgets/src/com/siyeh/ig/junit/AssertsWithoutMessagesInspection.java index 2249f0dede0e..1e2398cd9170 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/ig/junit/AssertsWithoutMessagesInspection.java +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/junit/AssertsWithoutMessagesInspection.java @@ -1,5 +1,5 @@ /* - * Copyright 2003-2007 Dave Griffith, Bas Leijdekkers + * Copyright 2003-2011 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. @@ -18,10 +18,10 @@ package com.siyeh.ig.junit; import com.intellij.openapi.project.Project; import com.intellij.psi.*; import com.intellij.psi.search.GlobalSearchScope; +import com.intellij.psi.util.InheritanceUtil; import com.siyeh.InspectionGadgetsBundle; import com.siyeh.ig.BaseInspection; import com.siyeh.ig.BaseInspectionVisitor; -import com.siyeh.ig.psiutils.ClassUtils; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; @@ -30,23 +30,27 @@ import java.util.Set; public class AssertsWithoutMessagesInspection extends BaseInspection { + @Override @NotNull public String getDisplayName() { return InspectionGadgetsBundle.message( "asserts.without.messages.display.name"); } + @Override @NotNull public String getID() { return "MessageMissingOnJUnitAssertion"; } + @Override @NotNull protected String buildErrorString(Object... infos) { return InspectionGadgetsBundle.message( "asserts.without.messages.problem.descriptor"); } + @Override public BaseInspectionVisitor buildVisitor() { return new AssertionsWithoutMessagesVisitor(); } @@ -123,9 +127,10 @@ public class AssertsWithoutMessagesInspection extends BaseInspection { return false; } final PsiClass targetClass = method.getContainingClass(); - return targetClass != null && - (ClassUtils.isSubclass(targetClass, "junit.framework.Assert") || - ClassUtils.isSubclass(targetClass, "org.junit.Assert")); + return InheritanceUtil.isInheritor(targetClass, + "junit.framework.Assert") || + InheritanceUtil.isInheritor(targetClass, + "org.junit.Assert"); } } } \ No newline at end of file diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/junit/ConstantJUnitAssertArgumentInspection.java b/plugins/InspectionGadgets/src/com/siyeh/ig/junit/ConstantJUnitAssertArgumentInspection.java index 9d48846b082a..19eb4d8e936e 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/ig/junit/ConstantJUnitAssertArgumentInspection.java +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/junit/ConstantJUnitAssertArgumentInspection.java @@ -1,5 +1,5 @@ /* - * Copyright 2009 Bas Leijdekkers + * Copyright 2009-2011 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,20 +15,22 @@ */ package com.siyeh.ig.junit; +import com.intellij.psi.*; +import com.intellij.psi.util.InheritanceUtil; +import com.intellij.psi.util.PsiUtil; +import com.siyeh.InspectionGadgetsBundle; import com.siyeh.ig.BaseInspection; import com.siyeh.ig.BaseInspectionVisitor; -import com.siyeh.ig.psiutils.ClassUtils; -import com.intellij.psi.*; -import com.intellij.psi.util.PsiUtil; import org.jetbrains.annotations.Nls; -import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NonNls; +import org.jetbrains.annotations.NotNull; -import java.util.Set; import java.util.HashSet; +import java.util.Set; public class ConstantJUnitAssertArgumentInspection extends BaseInspection { + @NonNls private static final Set ASSERT_METHODS = new HashSet(); static { @@ -42,21 +44,23 @@ public class ConstantJUnitAssertArgumentInspection extends BaseInspection { @Nls @NotNull public String getDisplayName() { - return "Constant JUnit assert argument"; + return InspectionGadgetsBundle.message( + "constant.junit.assert.argument.display.name"); } @Override @NotNull protected String buildErrorString(Object... infos) { - return "Argument #ref is constant"; + return InspectionGadgetsBundle.message( + "constant.junit.assert.argument.problem.descriptor"); } @Override public BaseInspectionVisitor buildVisitor() { - return new ConstantJUnitAssertArugmentVisitor(); + return new ConstantJUnitAssertArgumentVisitor(); } - private static class ConstantJUnitAssertArugmentVisitor + private static class ConstantJUnitAssertArgumentVisitor extends BaseInspectionVisitor { @Override @@ -74,8 +78,10 @@ public class ConstantJUnitAssertArgumentInspection extends BaseInspection { return; } final PsiClass containingClass = method.getContainingClass(); - if (!ClassUtils.isSubclass(containingClass, "junit.framework.Assert") && - !ClassUtils.isSubclass(containingClass, "org.junit.Assert")) { + if (!InheritanceUtil.isInheritor(containingClass, + "junit.framework.Assert") && + !InheritanceUtil.isInheritor(containingClass, + "org.junit.Assert")) { return; } final PsiExpressionList argumentList = expression.getArgumentList(); diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/junit/ExpectedExceptionNeverThrownInspection.java b/plugins/InspectionGadgets/src/com/siyeh/ig/junit/ExpectedExceptionNeverThrownInspection.java index 9e4a87d1a1c6..fc370c35a49e 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/ig/junit/ExpectedExceptionNeverThrownInspection.java +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/junit/ExpectedExceptionNeverThrownInspection.java @@ -1,5 +1,5 @@ /* - * Copyright 2010 Bas Leijdekkers + * Copyright 2010-2011 Bas Leijdekkers * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -17,10 +17,10 @@ package com.siyeh.ig.junit; import com.intellij.codeInsight.AnnotationUtil; import com.intellij.psi.*; +import com.intellij.psi.util.InheritanceUtil; import com.siyeh.InspectionGadgetsBundle; import com.siyeh.ig.BaseInspection; import com.siyeh.ig.BaseInspectionVisitor; -import com.siyeh.ig.psiutils.ClassUtils; import com.siyeh.ig.psiutils.ExceptionUtils; import org.jetbrains.annotations.Nls; import org.jetbrains.annotations.NotNull; @@ -89,7 +89,7 @@ public class ExpectedExceptionNeverThrownInspection } final PsiClassType classType = (PsiClassType) type; final PsiClass aClass = classType.resolve(); - if (ClassUtils.isSubclass(aClass, + if (InheritanceUtil.isInheritor(aClass, CommonClassNames.JAVA_LANG_RUNTIME_EXCEPTION)) { return; } diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/junit/JUnitAbstractTestClassNamingConventionInspection.java b/plugins/InspectionGadgets/src/com/siyeh/ig/junit/JUnitAbstractTestClassNamingConventionInspection.java index 0837e6773b75..502b44a68634 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/ig/junit/JUnitAbstractTestClassNamingConventionInspection.java +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/junit/JUnitAbstractTestClassNamingConventionInspection.java @@ -1,5 +1,5 @@ /* - * Copyright 2003-2007 Dave Griffith, Bas Leijdekkers + * Copyright 2003-2011 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. @@ -18,12 +18,12 @@ package com.siyeh.ig.junit; import com.intellij.psi.PsiClass; import com.intellij.psi.PsiModifier; import com.intellij.psi.PsiTypeParameter; +import com.intellij.psi.util.InheritanceUtil; import com.siyeh.InspectionGadgetsBundle; import com.siyeh.ig.BaseInspectionVisitor; import com.siyeh.ig.InspectionGadgetsFix; import com.siyeh.ig.fixes.RenameFix; import com.siyeh.ig.naming.ConventionInspection; -import com.siyeh.ig.psiutils.ClassUtils; import org.jetbrains.annotations.NotNull; public class JUnitAbstractTestClassNamingConventionInspection @@ -32,47 +32,55 @@ public class JUnitAbstractTestClassNamingConventionInspection private static final int DEFAULT_MIN_LENGTH = 12; private static final int DEFAULT_MAX_LENGTH = 64; + @Override @NotNull public String getDisplayName() { return InspectionGadgetsBundle.message( - "j.unit.abstract.test.class.naming.convention.display.name"); + "junit.abstract.test.class.naming.convention.display.name"); } + @Override protected InspectionGadgetsFix buildFix(Object... infos) { return new RenameFix(); } + @Override protected boolean buildQuickFixesOnlyForOnTheFlyErrors() { return true; } + @Override @NotNull public String buildErrorString(Object... infos) { final String className = (String)infos[0]; if (className.length() < getMinLength()) { return InspectionGadgetsBundle.message( - "j.unit.abstract.test.class.naming.convention.problem.descriptor.short"); + "junit.abstract.test.class.naming.convention.problem.descriptor.short"); } else if (className.length() > getMaxLength()) { return InspectionGadgetsBundle.message( - "j.unit.abstract.test.class.naming.convention.problem.descriptor.long"); + "junit.abstract.test.class.naming.convention.problem.descriptor.long"); } return InspectionGadgetsBundle.message( - "j.unit.abstract.test.class.naming.convention.problem.descriptor.regex.mismatch", + "junit.abstract.test.class.naming.convention.problem.descriptor.regex.mismatch", getRegex()); } + @Override protected String getDefaultRegex() { return "[A-Z][A-Za-z\\d]*TestCase"; } + @Override protected int getDefaultMinLength() { return DEFAULT_MIN_LENGTH; } + @Override protected int getDefaultMaxLength() { return DEFAULT_MAX_LENGTH; } + @Override public BaseInspectionVisitor buildVisitor() { return new NamingConventionsVisitor(); } @@ -90,7 +98,8 @@ public class JUnitAbstractTestClassNamingConventionInspection if(!aClass.hasModifierProperty(PsiModifier.ABSTRACT)) { return; } - if(!ClassUtils.isSubclass(aClass, "junit.framework.TestCase")) { + if(!InheritanceUtil.isInheritor(aClass, + "junit.framework.TestCase")) { return; } final String name = aClass.getName(); diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/junit/JUnitTestClassNamingConventionInspection.java b/plugins/InspectionGadgets/src/com/siyeh/ig/junit/JUnitTestClassNamingConventionInspection.java index fc84b0dc47ae..31131daaef03 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/ig/junit/JUnitTestClassNamingConventionInspection.java +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/junit/JUnitTestClassNamingConventionInspection.java @@ -1,5 +1,5 @@ /* - * Copyright 2003-2010 Dave Griffith, Bas Leijdekkers + * Copyright 2003-2011 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. @@ -19,12 +19,12 @@ import com.intellij.psi.PsiClass; import com.intellij.psi.PsiMethod; import com.intellij.psi.PsiModifier; import com.intellij.psi.PsiTypeParameter; +import com.intellij.psi.util.InheritanceUtil; import com.siyeh.InspectionGadgetsBundle; import com.siyeh.ig.BaseInspectionVisitor; import com.siyeh.ig.InspectionGadgetsFix; import com.siyeh.ig.fixes.RenameFix; import com.siyeh.ig.naming.ConventionInspection; -import com.siyeh.ig.psiutils.ClassUtils; import com.siyeh.ig.psiutils.TestUtils; import org.jetbrains.annotations.NotNull; @@ -38,7 +38,7 @@ public class JUnitTestClassNamingConventionInspection @NotNull public String getDisplayName() { return InspectionGadgetsBundle.message( - "j.unit.test.class.naming.convention.display.name"); + "junit.test.class.naming.convention.display.name"); } @Override @@ -57,13 +57,13 @@ public class JUnitTestClassNamingConventionInspection final String className = (String)infos[0]; if (className.length() < getMinLength()) { return InspectionGadgetsBundle.message( - "j.unit.test.class.naming.convention.problem.descriptor.short"); + "junit.test.class.naming.convention.problem.descriptor.short"); } else if (className.length() > getMaxLength()) { return InspectionGadgetsBundle.message( - "j.unit.test.class.naming.convention.problem.descriptor.long"); + "junit.test.class.naming.convention.problem.descriptor.long"); } return InspectionGadgetsBundle.message( - "j.unit.test.class.naming.convention.problem.descriptor.regex.mismatch", + "junit.test.class.naming.convention.problem.descriptor.regex.mismatch", getRegex()); } @@ -100,7 +100,8 @@ public class JUnitTestClassNamingConventionInspection if(aClass.hasModifierProperty(PsiModifier.ABSTRACT)) { return; } - if(!ClassUtils.isSubclass(aClass, "junit.framework.TestCase")) { + if(!InheritanceUtil.isInheritor(aClass, + "junit.framework.TestCase")) { if (!hasJUnit4TestMethods(aClass)) { return; } diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/junit/MisorderedAssertEqualsParametersInspection.java b/plugins/InspectionGadgets/src/com/siyeh/ig/junit/MisorderedAssertEqualsParametersInspection.java index 3cdc336c67c0..34efb304e567 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/ig/junit/MisorderedAssertEqualsParametersInspection.java +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/junit/MisorderedAssertEqualsParametersInspection.java @@ -1,5 +1,5 @@ /* - * Copyright 2003-2007 Dave Griffith, Bas Leijdekkers + * Copyright 2003-2011 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. @@ -19,30 +19,33 @@ import com.intellij.codeInspection.ProblemDescriptor; import com.intellij.openapi.project.Project; import com.intellij.psi.*; import com.intellij.psi.search.GlobalSearchScope; +import com.intellij.psi.util.InheritanceUtil; 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.ClassUtils; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; public class MisorderedAssertEqualsParametersInspection extends BaseInspection { + @Override @NotNull public String getDisplayName() { return InspectionGadgetsBundle.message( "misordered.assert.equals.parameters.display.name"); } + @Override @NotNull protected String buildErrorString(Object... infos) { return InspectionGadgetsBundle.message( "misordered.assert.equals.parameters.problem.descriptor"); } + @Override public InspectionGadgetsFix buildFix(Object... infos) { return new FlipParametersFix(); } @@ -55,6 +58,7 @@ public class MisorderedAssertEqualsParametersInspection "misordered.assert.equals.parameters.flip.quickfix"); } + @Override public void doFix(Project project, ProblemDescriptor descriptor) throws IncorrectOperationException { final PsiElement methodNameIdentifier = descriptor.getPsiElement(); @@ -95,6 +99,7 @@ public class MisorderedAssertEqualsParametersInspection } } + @Override public BaseInspectionVisitor buildVisitor() { return new MisorderedAssertEqualsParametersVisitor(); } @@ -167,8 +172,8 @@ public class MisorderedAssertEqualsParametersInspection return false; } final PsiField field = (PsiField) target; - return !(!field.hasModifierProperty(PsiModifier.STATIC) || - !field.hasModifierProperty(PsiModifier.FINAL)); + return field.hasModifierProperty(PsiModifier.STATIC) && + field.hasModifierProperty(PsiModifier.FINAL); } private static boolean isAssertEquals( @@ -185,11 +190,10 @@ public class MisorderedAssertEqualsParametersInspection return false; } final PsiClass targetClass = method.getContainingClass(); - if (targetClass == null) { - return false; - } - return ClassUtils.isSubclass(targetClass, "junit.framework.Assert") - || ClassUtils.isSubclass(targetClass, "org.junit.Assert"); + return InheritanceUtil.isInheritor(targetClass, + "junit.framework.Assert") || + InheritanceUtil.isInheritor(targetClass, + "org.junit.Assert"); } } } \ No newline at end of file diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/junit/MisspelledSetUpInspection.java b/plugins/InspectionGadgets/src/com/siyeh/ig/junit/MisspelledSetUpInspection.java index d49baa10a2ae..9383be30dff0 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/ig/junit/MisspelledSetUpInspection.java +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/junit/MisspelledSetUpInspection.java @@ -1,5 +1,5 @@ /* - * Copyright 2003-2007 Dave Griffith, Bas Leijdekkers + * Copyright 2003-2011 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. @@ -17,37 +17,42 @@ package com.siyeh.ig.junit; import com.intellij.psi.PsiClass; import com.intellij.psi.PsiMethod; +import com.intellij.psi.util.InheritanceUtil; import com.siyeh.InspectionGadgetsBundle; import com.siyeh.ig.BaseInspection; import com.siyeh.ig.BaseInspectionVisitor; import com.siyeh.ig.InspectionGadgetsFix; import com.siyeh.ig.fixes.RenameFix; -import com.siyeh.ig.psiutils.ClassUtils; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; public class MisspelledSetUpInspection extends BaseInspection { + @Override @NotNull public String getDisplayName() { return InspectionGadgetsBundle.message( "misspelled.set.up.display.name"); } + @Override @NotNull protected String buildErrorString(Object... infos) { return InspectionGadgetsBundle.message( "misspelled.set.up.problem.descriptor"); } + @Override protected InspectionGadgetsFix buildFix(Object... infos) { return new RenameFix("setUp"); } + @Override public BaseInspectionVisitor buildVisitor() { return new MisspelledSetUpVisitor(); } + @Override protected boolean buildQuickFixesOnlyForOnTheFlyErrors() { return true; } @@ -64,7 +69,8 @@ public class MisspelledSetUpInspection extends BaseInspection { if (aClass == null) { return; } - if (!ClassUtils.isSubclass(aClass, "junit.framework.TestCase")) { + if (!InheritanceUtil.isInheritor(aClass, + "junit.framework.TestCase")) { return; } registerMethodError(method); diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/junit/MisspelledTearDownInspection.java b/plugins/InspectionGadgets/src/com/siyeh/ig/junit/MisspelledTearDownInspection.java index 9e8b5da63f9e..97a556b12d60 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/ig/junit/MisspelledTearDownInspection.java +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/junit/MisspelledTearDownInspection.java @@ -1,5 +1,5 @@ /* - * Copyright 2003-2007 Dave Griffith, Bas Leijdekkers + * Copyright 2003-2011 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. @@ -17,37 +17,42 @@ package com.siyeh.ig.junit; import com.intellij.psi.PsiClass; import com.intellij.psi.PsiMethod; +import com.intellij.psi.util.InheritanceUtil; import com.siyeh.InspectionGadgetsBundle; import com.siyeh.ig.BaseInspection; import com.siyeh.ig.BaseInspectionVisitor; import com.siyeh.ig.InspectionGadgetsFix; import com.siyeh.ig.fixes.RenameFix; -import com.siyeh.ig.psiutils.ClassUtils; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; public class MisspelledTearDownInspection extends BaseInspection { + @Override @NotNull public String getDisplayName() { return InspectionGadgetsBundle.message( "misspelled.tear.down.display.name"); } + @Override @NotNull protected String buildErrorString(Object... infos) { return InspectionGadgetsBundle.message( "misspelled.tear.down.problem.descriptor"); } + @Override protected InspectionGadgetsFix buildFix(Object... infos) { return new RenameFix("tearDown"); } + @Override public BaseInspectionVisitor buildVisitor() { return new MisspelledSetUpVisitor(); } + @Override protected boolean buildQuickFixesOnlyForOnTheFlyErrors() { return true; } @@ -64,7 +69,8 @@ public class MisspelledTearDownInspection extends BaseInspection { if (aClass == null) { return; } - if (!ClassUtils.isSubclass(aClass, "junit.framework.TestCase")) { + if (!InheritanceUtil.isInheritor(aClass, + "junit.framework.TestCase")) { return; } registerMethodError(method); diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/junit/SetupCallsSuperSetupInspection.java b/plugins/InspectionGadgets/src/com/siyeh/ig/junit/SetupCallsSuperSetupInspection.java index 6fdcf5f74067..5bdbb661369c 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/ig/junit/SetupCallsSuperSetupInspection.java +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/junit/SetupCallsSuperSetupInspection.java @@ -1,5 +1,5 @@ /* - * Copyright 2003-2007 Dave Griffith, Bas Leijdekkers + * Copyright 2003-2011 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. @@ -19,28 +19,31 @@ import com.intellij.codeInspection.ProblemDescriptor; import com.intellij.openapi.project.Project; import com.intellij.psi.*; import com.intellij.psi.codeStyle.CodeStyleManager; +import com.intellij.psi.util.InheritanceUtil; 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.ClassUtils; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; public class SetupCallsSuperSetupInspection extends BaseInspection { + @Override @NotNull public String getID() { return "SetUpDoesntCallSuperSetUp"; } + @Override @NotNull public String getDisplayName() { return InspectionGadgetsBundle.message( "setup.calls.super.setup.display.name"); } + @Override @NotNull protected String buildErrorString(Object... infos) { return InspectionGadgetsBundle.message( @@ -55,6 +58,7 @@ public class SetupCallsSuperSetupInspection extends BaseInspection { "setup.calls.super.setup.add.quickfix"); } + @Override public void doFix(Project project, ProblemDescriptor descriptor) throws IncorrectOperationException { final PsiElement methodName = descriptor.getPsiElement(); @@ -64,22 +68,24 @@ public class SetupCallsSuperSetupInspection extends BaseInspection { if (body == null) { return; } - final PsiManager psiManager = PsiManager.getInstance(project); - final PsiElementFactory factory = JavaPsiFacade.getInstance(psiManager.getProject()).getElementFactory(); + final PsiElementFactory factory = + JavaPsiFacade.getElementFactory(project); final PsiStatement newStatement = factory.createStatementFromText("super.setUp();", null); final CodeStyleManager styleManager = - psiManager.getCodeStyleManager(); + CodeStyleManager.getInstance(project); final PsiJavaToken brace = body.getLBrace(); body.addAfter(newStatement, brace); styleManager.reformat(body); } } + @Override protected InspectionGadgetsFix buildFix(Object... infos) { return new AddSuperSetUpCall(); } + @Override public BaseInspectionVisitor buildVisitor() { return new SetupCallsSuperSetupVisitor(); } @@ -107,7 +113,7 @@ public class SetupCallsSuperSetupInspection extends BaseInspection { if (targetClass == null) { return; } - if (!ClassUtils.isSubclass(targetClass, + if (!InheritanceUtil.isInheritor(targetClass, "junit.framework.TestCase")) { return; } diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/junit/SetupIsPublicVoidNoArgInspection.java b/plugins/InspectionGadgets/src/com/siyeh/ig/junit/SetupIsPublicVoidNoArgInspection.java index fffe3808727d..9526e3cb5d59 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/ig/junit/SetupIsPublicVoidNoArgInspection.java +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/junit/SetupIsPublicVoidNoArgInspection.java @@ -1,5 +1,5 @@ /* - * Copyright 2003-2007 Dave Griffith, Bas Leijdekkers + * Copyright 2003-2011 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,32 +16,36 @@ package com.siyeh.ig.junit; import com.intellij.psi.*; +import com.intellij.psi.util.InheritanceUtil; import com.siyeh.InspectionGadgetsBundle; import com.siyeh.ig.BaseInspection; import com.siyeh.ig.BaseInspectionVisitor; -import com.siyeh.ig.psiutils.ClassUtils; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; public class SetupIsPublicVoidNoArgInspection extends BaseInspection { + @Override @NotNull public String getID() { return "SetUpWithIncorrectSignature"; } + @Override @NotNull public String getDisplayName() { return InspectionGadgetsBundle.message( "setup.is.public.void.no.arg.display.name"); } + @Override @NotNull protected String buildErrorString(Object... infos) { return InspectionGadgetsBundle.message( "setup.is.public.void.no.arg.problem.descriptor"); } + @Override public BaseInspectionVisitor buildVisitor() { return new SetupIsPublicVoidNoArgVisitor(); } @@ -63,16 +67,14 @@ public class SetupIsPublicVoidNoArgInspection extends BaseInspection { if (targetClass == null) { return; } - if (!ClassUtils.isSubclass(targetClass, + if (!InheritanceUtil.isInheritor(targetClass, "junit.framework.TestCase")) { return; } final PsiParameterList parameterList = method.getParameterList(); - if (parameterList.getParametersCount() != 0) { - registerMethodError(method); - } else if (!returnType.equals(PsiType.VOID)) { - registerMethodError(method); - } else if (!method.hasModifierProperty(PsiModifier.PUBLIC) && + if (parameterList.getParametersCount() != 0 || + !returnType.equals(PsiType.VOID) || + !method.hasModifierProperty(PsiModifier.PUBLIC) && !method.hasModifierProperty(PsiModifier.PROTECTED)) { registerMethodError(method); } diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/junit/SimplifiableJUnitAssertionInspection.java b/plugins/InspectionGadgets/src/com/siyeh/ig/junit/SimplifiableJUnitAssertionInspection.java index 71ce06fe07a8..1feb199cc7d7 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/ig/junit/SimplifiableJUnitAssertionInspection.java +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/junit/SimplifiableJUnitAssertionInspection.java @@ -1,5 +1,5 @@ /* - * Copyright 2003-2009 Dave Griffith, Bas Leijdekkers + * Copyright 2003-2011 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. @@ -54,7 +54,7 @@ public class SimplifiableJUnitAssertionInspection extends BaseInspection { @NotNull public String getName() { return InspectionGadgetsBundle.message( - "simplify.j.unit.assertion.simplify.quickfix"); + "simplify.junit.assertion.simplify.quickfix"); } @Override @@ -163,7 +163,8 @@ public class SimplifiableJUnitAssertionInspection extends BaseInspection { return; } @NonNls final StringBuilder newExpression = new StringBuilder(); - addStaticImportIfPossible(callExpression, "assertEquals", newExpression); + addStaticImportIfPossible(callExpression, "assertEquals", + newExpression); newExpression.append("assertEquals("); if (message != null) { newExpression.append(message.getText()); @@ -222,9 +223,11 @@ public class SimplifiableJUnitAssertionInspection extends BaseInspection { @NonNls final StringBuilder newExpression = new StringBuilder(); final PsiReferenceExpression methodExpression = callExpression.getMethodExpression(); - final String methodName = methodExpression.getReferenceName(); - final String memberName; - if ("assertFalse".equals(methodName) ^ tokenType.equals(JavaTokenType.NE)) { + @NonNls final String methodName = + methodExpression.getReferenceName(); + @NonNls final String memberName; + if ("assertFalse".equals(methodName) ^ + tokenType.equals(JavaTokenType.NE)) { memberName = "assertNotNull"; } else { memberName = "assertNull"; @@ -286,8 +289,9 @@ public class SimplifiableJUnitAssertionInspection extends BaseInspection { @NonNls final StringBuilder newExpression = new StringBuilder(); final PsiReferenceExpression methodExpression = callExpression.getMethodExpression(); - final String methodName = methodExpression.getReferenceName(); - final String memberName; + @NonNls final String methodName = + methodExpression.getReferenceName(); + @NonNls final String memberName; if ("assertFalse".equals(methodName) ^ tokenType.equals(JavaTokenType.NE)) { memberName = "assertNotSame"; @@ -338,8 +342,10 @@ public class SimplifiableJUnitAssertionInspection extends BaseInspection { secondTestPosition = 1; message = null; } - final PsiExpression firstTestArgument = arguments[firstTestPosition]; - final PsiExpression secondTestArgument = arguments[secondTestPosition]; + final PsiExpression firstTestArgument = + arguments[firstTestPosition]; + final PsiExpression secondTestArgument = + arguments[secondTestPosition]; final String literalValue; final String compareValue; if (isSimpleLiteral(firstTestArgument, secondTestArgument)) { @@ -353,7 +359,7 @@ public class SimplifiableJUnitAssertionInspection extends BaseInspection { Character.toUpperCase(literalValue.charAt(0)) + literalValue.substring(1); @NonNls final StringBuilder newExpression = new StringBuilder(); - final String methodName = "assert" + uppercaseLiteralValue; + @NonNls final String methodName = "assert" + uppercaseLiteralValue; addStaticImportIfPossible(callExpression, methodName, newExpression); newExpression.append(methodName); newExpression.append('('); @@ -367,8 +373,9 @@ public class SimplifiableJUnitAssertionInspection extends BaseInspection { newExpression.toString()); } - private static void addStaticImportIfPossible(PsiMethodCallExpression context, - String memberName, StringBuilder out) { + private static void addStaticImportIfPossible( + PsiMethodCallExpression context, @NonNls String memberName, + @NonNls StringBuilder out) { final PsiMethod containingMethod = PsiTreeUtil.getParentOfType( context, PsiMethod.class); if (TestUtils.isJUnit4TestMethod(containingMethod)) { @@ -470,7 +477,7 @@ public class SimplifiableJUnitAssertionInspection extends BaseInspection { (PsiBinaryExpression) argument; final IElementType tokenType = binaryExpression.getOperationTokenType(); - return tokenType == JavaTokenType.EQEQ; + return JavaTokenType.EQEQ.equals(tokenType); } } @@ -768,7 +775,7 @@ public class SimplifiableJUnitAssertionInspection extends BaseInspection { private static boolean isAssertMethodCall( @NotNull PsiMethodCallExpression expression, - @NotNull String assertMethodName) { + @NonNls @NotNull String assertMethodName) { final PsiReferenceExpression methodExpression = expression.getMethodExpression(); @NonNls final String methodName = methodExpression.getReferenceName(); diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/junit/StaticSuiteInspection.java b/plugins/InspectionGadgets/src/com/siyeh/ig/junit/StaticSuiteInspection.java index c5c888851988..f2c2b036d52c 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/ig/junit/StaticSuiteInspection.java +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/junit/StaticSuiteInspection.java @@ -1,5 +1,5 @@ /* - * Copyright 2003-2007 Dave Griffith, Bas Leijdekkers + * Copyright 2003-2011 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. @@ -19,31 +19,35 @@ import com.intellij.psi.PsiClass; import com.intellij.psi.PsiMethod; import com.intellij.psi.PsiModifier; import com.intellij.psi.PsiParameterList; +import com.intellij.psi.util.InheritanceUtil; import com.siyeh.InspectionGadgetsBundle; import com.siyeh.ig.BaseInspection; import com.siyeh.ig.BaseInspectionVisitor; -import com.siyeh.ig.psiutils.ClassUtils; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; public class StaticSuiteInspection extends BaseInspection { + @Override @NotNull public String getID() { return "SuiteNotDeclaredStatic"; } + @Override @NotNull public String getDisplayName() { return InspectionGadgetsBundle.message("static.suite.display.name"); } + @Override @NotNull protected String buildErrorString(Object... infos) { return InspectionGadgetsBundle.message( "static.suite.problem.descriptor"); } + @Override public BaseInspectionVisitor buildVisitor() { return new StaticSuiteVisitor(); } @@ -60,7 +64,8 @@ public class StaticSuiteInspection extends BaseInspection { if (aClass == null) { return; } - if (!ClassUtils.isSubclass(aClass, "junit.framework.TestCase")) { + if (!InheritanceUtil.isInheritor(aClass, + "junit.framework.TestCase")) { return; } final PsiParameterList parameterList = method.getParameterList(); diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/junit/TeardownCallsSuperTeardownInspection.java b/plugins/InspectionGadgets/src/com/siyeh/ig/junit/TeardownCallsSuperTeardownInspection.java index 5fdb4575e98a..520908a3e6d4 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/ig/junit/TeardownCallsSuperTeardownInspection.java +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/junit/TeardownCallsSuperTeardownInspection.java @@ -1,5 +1,5 @@ /* - * Copyright 2003-2007 Dave Griffith, Bas Leijdekkers + * Copyright 2003-2011 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. @@ -19,34 +19,42 @@ import com.intellij.codeInspection.ProblemDescriptor; import com.intellij.openapi.project.Project; import com.intellij.psi.*; import com.intellij.psi.codeStyle.CodeStyleManager; +import com.intellij.psi.util.InheritanceUtil; 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.ClassUtils; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; public class TeardownCallsSuperTeardownInspection extends BaseInspection { + @Override @NotNull public String getID() { return "TearDownDoesntCallSuperTearDown"; } + @Override @NotNull public String getDisplayName() { return InspectionGadgetsBundle.message( "teardown.calls.super.teardown.display.name"); } + @Override @NotNull protected String buildErrorString(Object... infos) { return InspectionGadgetsBundle.message( "teardown.calls.super.teardown.problem.descriptor"); } + @Override + protected InspectionGadgetsFix buildFix(Object... infos) { + return new AddSuperTearDownCall(); + } + private static class AddSuperTearDownCall extends InspectionGadgetsFix { @NotNull @@ -54,7 +62,7 @@ public class TeardownCallsSuperTeardownInspection extends BaseInspection { return InspectionGadgetsBundle.message( "teardown.calls.super.teardown.add.quickfix"); } - + @Override public void doFix(Project project, ProblemDescriptor descriptor) throws IncorrectOperationException { final PsiElement methodName = descriptor.getPsiElement(); @@ -66,22 +74,19 @@ public class TeardownCallsSuperTeardownInspection extends BaseInspection { if (body == null) { return; } - final PsiManager psiManager = PsiManager.getInstance(project); - final PsiElementFactory factory = JavaPsiFacade.getInstance(psiManager.getProject()).getElementFactory(); + final PsiElementFactory factory = + JavaPsiFacade.getElementFactory(project); final PsiStatement newStatement = factory.createStatementFromText("super.tearDown();", null); final CodeStyleManager styleManager = - psiManager.getCodeStyleManager(); + CodeStyleManager.getInstance(project); final PsiJavaToken brace = body.getRBrace(); body.addBefore(newStatement, brace); styleManager.reformat(body); } } - protected InspectionGadgetsFix buildFix(Object... infos) { - return new AddSuperTearDownCall(); - } - + @Override public BaseInspectionVisitor buildVisitor() { return new TeardownCallsSuperTeardownVisitor(); } @@ -109,7 +114,7 @@ public class TeardownCallsSuperTeardownInspection extends BaseInspection { if (targetClass == null) { return; } - if (!ClassUtils.isSubclass(targetClass, + if (!InheritanceUtil.isInheritor(targetClass, "junit.framework.TestCase")) { return; } diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/junit/TeardownIsPublicVoidNoArgInspection.java b/plugins/InspectionGadgets/src/com/siyeh/ig/junit/TeardownIsPublicVoidNoArgInspection.java index 04f72d2dd5dd..e1939c49a48a 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/ig/junit/TeardownIsPublicVoidNoArgInspection.java +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/junit/TeardownIsPublicVoidNoArgInspection.java @@ -1,5 +1,5 @@ /* - * Copyright 2003-2007 Dave Griffith, Bas Leijdekkers + * Copyright 2003-2011 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,32 +16,36 @@ package com.siyeh.ig.junit; import com.intellij.psi.*; +import com.intellij.psi.util.InheritanceUtil; import com.siyeh.InspectionGadgetsBundle; import com.siyeh.ig.BaseInspection; import com.siyeh.ig.BaseInspectionVisitor; -import com.siyeh.ig.psiutils.ClassUtils; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; public class TeardownIsPublicVoidNoArgInspection extends BaseInspection { + @Override @NotNull public String getID() { return "TearDownWithIncorrectSignature"; } + @Override @NotNull public String getDisplayName() { return InspectionGadgetsBundle.message( "teardown.is.public.void.no.arg.display.name"); } + @Override @NotNull protected String buildErrorString(Object... infos) { return InspectionGadgetsBundle.message( "teardown.is.public.void.no.arg.problem.descriptor"); } + @Override public BaseInspectionVisitor buildVisitor() { return new TeardownIsPublicVoidNoArgVisitor(); } @@ -63,18 +67,14 @@ public class TeardownIsPublicVoidNoArgInspection extends BaseInspection { if (targetClass == null) { return; } - if (!ClassUtils.isSubclass(targetClass, + if (!InheritanceUtil.isInheritor(targetClass, "junit.framework.TestCase")) { return; } final PsiParameterList parameterList = method.getParameterList(); - if (parameterList.getParametersCount() != 0) { - registerMethodError(method); - } - else if (!returnType.equals(PsiType.VOID)) { - registerMethodError(method); - } - else if (!method.hasModifierProperty(PsiModifier.PUBLIC) && + if (parameterList.getParametersCount() != 0 || + !returnType.equals(PsiType.VOID) || + !method.hasModifierProperty(PsiModifier.PUBLIC) && !method.hasModifierProperty(PsiModifier.PROTECTED)) { registerMethodError(method); } diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/junit/TestCaseInProductCodeInspection.java b/plugins/InspectionGadgets/src/com/siyeh/ig/junit/TestCaseInProductCodeInspection.java index 3418c02921a5..874dc12f4e31 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/ig/junit/TestCaseInProductCodeInspection.java +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/junit/TestCaseInProductCodeInspection.java @@ -1,5 +1,5 @@ /* - * Copyright 2003-2007 Dave Griffith, Bas Leijdekkers + * Copyright 2003-2011 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,42 +16,48 @@ package com.siyeh.ig.junit; import com.intellij.psi.PsiClass; +import com.intellij.psi.util.InheritanceUtil; import com.siyeh.InspectionGadgetsBundle; import com.siyeh.ig.BaseInspection; import com.siyeh.ig.BaseInspectionVisitor; import com.siyeh.ig.InspectionGadgetsFix; import com.siyeh.ig.fixes.MoveClassFix; -import com.siyeh.ig.psiutils.ClassUtils; import com.siyeh.ig.psiutils.TestUtils; import org.jetbrains.annotations.NotNull; public class TestCaseInProductCodeInspection extends BaseInspection { + @Override @NotNull public String getDisplayName() { return InspectionGadgetsBundle.message( "test.case.in.product.code.display.name"); } + @Override @NotNull public String getID() { return "JUnitTestCaseInProductSource"; } + @Override @NotNull protected String buildErrorString(Object... infos) { return InspectionGadgetsBundle.message( "test.case.in.product.code.problem.descriptor"); } + @Override protected InspectionGadgetsFix buildFix(Object... infos) { return new MoveClassFix(); } + @Override protected boolean buildQuickFixesOnlyForOnTheFlyErrors() { return true; } + @Override public BaseInspectionVisitor buildVisitor() { return new TestCaseInProductCodeVisitor(); } @@ -63,7 +69,8 @@ public class TestCaseInProductCodeInspection extends BaseInspection { if (TestUtils.isTest(aClass)) { return; } - if (!ClassUtils.isSubclass(aClass, "junit.framework.TestCase")) { + if (!InheritanceUtil.isInheritor(aClass, + "junit.framework.TestCase")) { return; } registerClassError(aClass); diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/junit/TestCaseWithNoTestMethodsInspection.java b/plugins/InspectionGadgets/src/com/siyeh/ig/junit/TestCaseWithNoTestMethodsInspection.java index 9f16b6d4f3ca..74b12e135e43 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/ig/junit/TestCaseWithNoTestMethodsInspection.java +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/junit/TestCaseWithNoTestMethodsInspection.java @@ -1,5 +1,5 @@ /* - * Copyright 2003-2007 Dave Griffith, Bas Leijdekkers + * Copyright 2003-2011 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,15 +15,15 @@ */ package com.siyeh.ig.junit; +import com.intellij.codeInspection.ui.SingleCheckboxOptionsPanel; import com.intellij.psi.PsiClass; import com.intellij.psi.PsiMethod; import com.intellij.psi.PsiModifier; import com.intellij.psi.PsiTypeParameter; -import com.intellij.codeInspection.ui.SingleCheckboxOptionsPanel; +import com.intellij.psi.util.InheritanceUtil; import com.siyeh.InspectionGadgetsBundle; import com.siyeh.ig.BaseInspection; import com.siyeh.ig.BaseInspectionVisitor; -import com.siyeh.ig.psiutils.ClassUtils; import com.siyeh.ig.psiutils.TestUtils; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -35,28 +35,36 @@ public class TestCaseWithNoTestMethodsInspection extends BaseInspection { @SuppressWarnings({"PublicField"}) public boolean ignoreSupers = false; + @Override @NotNull public String getID() { return "JUnitTestCaseWithNoTests"; } + @Override @NotNull public String getDisplayName() { return InspectionGadgetsBundle.message( "test.case.with.no.test.methods.display.name"); } + @Override @NotNull protected String buildErrorString(Object... infos) { return InspectionGadgetsBundle.message( "test.case.with.no.test.methods.problem.descriptor"); } + @Override @Nullable public JComponent createOptionsPanel() { - return new SingleCheckboxOptionsPanel("Ignore test cases which have super classes with test methods", this, "ignoreSupers"); + return new SingleCheckboxOptionsPanel( + InspectionGadgetsBundle.message( + "test.case.with.no.test.methods.option"), this, + "ignoreSupers"); } + @Override public BaseInspectionVisitor buildVisitor() { return new TestCaseWithNoTestMethodsVisitor(); } @@ -74,7 +82,8 @@ public class TestCaseWithNoTestMethodsInspection extends BaseInspection { if (aClass instanceof PsiTypeParameter) { return; } - if (!ClassUtils.isSubclass(aClass, "junit.framework.TestCase")) { + if (!InheritanceUtil.isInheritor(aClass, + "junit.framework.TestCase")) { return; } final PsiMethod[] methods = aClass.getMethods(); diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/junit/TestMethodIsPublicVoidNoArgInspection.java b/plugins/InspectionGadgets/src/com/siyeh/ig/junit/TestMethodIsPublicVoidNoArgInspection.java index 2a1e669a6aa0..d7d0e27e8f13 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/ig/junit/TestMethodIsPublicVoidNoArgInspection.java +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/junit/TestMethodIsPublicVoidNoArgInspection.java @@ -1,5 +1,5 @@ /* - * Copyright 2003-2009 Dave Griffith, Bas Leijdekkers + * Copyright 2003-2011 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. @@ -17,10 +17,10 @@ package com.siyeh.ig.junit; import com.intellij.codeInsight.AnnotationUtil; import com.intellij.psi.*; +import com.intellij.psi.util.InheritanceUtil; import com.siyeh.InspectionGadgetsBundle; import com.siyeh.ig.BaseInspection; import com.siyeh.ig.BaseInspectionVisitor; -import com.siyeh.ig.psiutils.ClassUtils; import com.siyeh.ig.psiutils.TestUtils; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; @@ -94,7 +94,7 @@ public class TestMethodIsPublicVoidNoArgInspection extends BaseInspection { final PsiClass targetClass = method.getContainingClass(); if (!AnnotationUtil.isAnnotated(method, "org.junit.Test", true)) { if (targetClass == null || - !ClassUtils.isSubclass(targetClass, + !InheritanceUtil.isInheritor(targetClass, "junit.framework.TestCase")) { return; } diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/junit/TestMethodWithoutAssertionInspection.java b/plugins/InspectionGadgets/src/com/siyeh/ig/junit/TestMethodWithoutAssertionInspection.java index 34f9037f511d..aa810246d46c 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/ig/junit/TestMethodWithoutAssertionInspection.java +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/junit/TestMethodWithoutAssertionInspection.java @@ -1,5 +1,5 @@ /* - * Copyright 2003-2010 Dave Griffith, Bas Leijdekkers + * Copyright 2003-2011 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,17 +16,17 @@ package com.siyeh.ig.junit; import com.intellij.codeInspection.ui.ListTable; +import com.intellij.codeInspection.ui.ListWrappingTableModel; import com.intellij.openapi.actionSystem.ActionToolbar; import com.intellij.openapi.util.InvalidDataException; import com.intellij.openapi.util.WriteExternalException; import com.intellij.psi.*; +import com.intellij.psi.util.InheritanceUtil; import com.intellij.ui.ScrollPaneFactory; import com.siyeh.InspectionGadgetsBundle; import com.siyeh.ig.BaseInspection; import com.siyeh.ig.BaseInspectionVisitor; -import com.siyeh.ig.psiutils.ClassUtils; import com.siyeh.ig.psiutils.TestUtils; -import com.intellij.codeInspection.ui.ListWrappingTableModel; import com.siyeh.ig.ui.CheckBox; import com.siyeh.ig.ui.UiUtils; import org.jdom.Element; @@ -53,6 +53,7 @@ public class TestMethodWithoutAssertionInspection extends BaseInspection { private final List classNames = new ArrayList(); private Map patternCache = null; + @SuppressWarnings({"PublicField"}) public boolean assertKeywordIsAssertion = false; public TestMethodWithoutAssertionInspection() { @@ -197,8 +198,8 @@ public class TestMethodWithoutAssertionInspection extends BaseInspection { if (methodName == null) { return; } - for (int i = 0, methodNamesSize = methodNamePatterns.size(); - i < methodNamesSize; i++) { + final int methodNamesSize = methodNamePatterns.size(); + for (int i = 0; i < methodNamesSize; i++) { final String pattern = methodNamePatterns.get(i); if (!methodNamesMatch(methodName, pattern)) { continue; @@ -208,7 +209,7 @@ public class TestMethodWithoutAssertionInspection extends BaseInspection { continue; } final PsiClass aClass = method.getContainingClass(); - if (!ClassUtils.isSubclass(aClass, classNames.get(i))) { + if (!InheritanceUtil.isInheritor(aClass, classNames.get(i))) { continue; } containsAssertion = true; diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/junit/UnconstructableTestCaseInspection.java b/plugins/InspectionGadgets/src/com/siyeh/ig/junit/UnconstructableTestCaseInspection.java index f7cd60625381..f02031dba664 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/ig/junit/UnconstructableTestCaseInspection.java +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/junit/UnconstructableTestCaseInspection.java @@ -1,5 +1,5 @@ /* - * Copyright 2003-2010 Dave Griffith, Bas Leijdekkers + * Copyright 2003-2011 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,10 +16,10 @@ package com.siyeh.ig.junit; import com.intellij.psi.*; +import com.intellij.psi.util.InheritanceUtil; import com.siyeh.InspectionGadgetsBundle; import com.siyeh.ig.BaseInspection; import com.siyeh.ig.BaseInspectionVisitor; -import com.siyeh.ig.psiutils.ClassUtils; import com.siyeh.ig.psiutils.TypeUtils; import org.jetbrains.annotations.NotNull; @@ -62,7 +62,8 @@ public class UnconstructableTestCaseInspection extends BaseInspection { if (aClass instanceof PsiTypeParameter) { return; } - if (!ClassUtils.isSubclass(aClass, "junit.framework.TestCase")) { + if (!InheritanceUtil.isInheritor(aClass, + "junit.framework.TestCase")) { return; } final PsiMethod[] constructors = aClass.getConstructors(); @@ -81,7 +82,8 @@ public class UnconstructableTestCaseInspection extends BaseInspection { hasNoArgConstructor = true; } if (parametersCount == 1) { - final PsiParameter[] parameters = parameterList.getParameters(); + final PsiParameter[] parameters = + parameterList.getParameters(); final PsiType type = parameters[0].getType(); if (TypeUtils.typeEquals(CommonClassNames.JAVA_LANG_STRING, type)) { diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/naming/ExceptionNameDoesntEndWithExceptionInspection.java b/plugins/InspectionGadgets/src/com/siyeh/ig/naming/ExceptionNameDoesntEndWithExceptionInspection.java index 161ed2333a67..5476cd868d2a 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/ig/naming/ExceptionNameDoesntEndWithExceptionInspection.java +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/naming/ExceptionNameDoesntEndWithExceptionInspection.java @@ -1,5 +1,5 @@ /* - * Copyright 2003-2010 Dave Griffith, Bas Leijdekkers + * Copyright 2003-2011 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. @@ -18,12 +18,12 @@ package com.siyeh.ig.naming; import com.intellij.psi.CommonClassNames; import com.intellij.psi.PsiClass; import com.intellij.psi.PsiTypeParameter; +import com.intellij.psi.util.InheritanceUtil; import com.siyeh.InspectionGadgetsBundle; import com.siyeh.ig.BaseInspection; import com.siyeh.ig.BaseInspectionVisitor; import com.siyeh.ig.InspectionGadgetsFix; import com.siyeh.ig.fixes.RenameFix; -import com.siyeh.ig.psiutils.ClassUtils; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; @@ -81,7 +81,7 @@ public class ExceptionNameDoesntEndWithExceptionInspection if (className.endsWith(exception)) { return; } - if (!ClassUtils.isSubclass(aClass, + if (!InheritanceUtil.isInheritor(aClass, CommonClassNames.JAVA_LANG_EXCEPTION)) { return; } diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/naming/NonExceptionNameEndsWithExceptionInspection.java b/plugins/InspectionGadgets/src/com/siyeh/ig/naming/NonExceptionNameEndsWithExceptionInspection.java index ed0e58e1db38..c4a6a676ab90 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/ig/naming/NonExceptionNameEndsWithExceptionInspection.java +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/naming/NonExceptionNameEndsWithExceptionInspection.java @@ -1,5 +1,5 @@ /* - * Copyright 2003-2010 Dave Griffith, Bas Leijdekkers + * Copyright 2003-2011 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. @@ -19,13 +19,13 @@ import com.intellij.codeInspection.ProblemDescriptor; import com.intellij.openapi.project.Project; import com.intellij.psi.*; import com.intellij.psi.search.GlobalSearchScope; +import com.intellij.psi.util.InheritanceUtil; 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.fixes.RenameFix; -import com.siyeh.ig.psiutils.ClassUtils; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; @@ -123,11 +123,12 @@ public class NonExceptionNameEndsWithExceptionInspection if (!className.endsWith(exception)) { return; } - if (ClassUtils.isSubclass(aClass, + if (InheritanceUtil.isInheritor(aClass, CommonClassNames.JAVA_LANG_EXCEPTION)) { return; } - registerClassError(aClass, className, Boolean.valueOf(isOnTheFly())); + registerClassError(aClass, className, + Boolean.valueOf(isOnTheFly())); } } } \ No newline at end of file diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/performance/InnerClassReferenceVisitor.java b/plugins/InspectionGadgets/src/com/siyeh/ig/performance/InnerClassReferenceVisitor.java index 1851742e87ba..fdac6edef080 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/ig/performance/InnerClassReferenceVisitor.java +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/performance/InnerClassReferenceVisitor.java @@ -1,5 +1,5 @@ /* - * Copyright 2003-2010 Dave Griffith, Bas Leijdekkers + * Copyright 2003-2011 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. @@ -27,7 +27,6 @@ public class InnerClassReferenceVisitor extends JavaRecursiveElementVisitor { private boolean referencesStaticallyAccessible = true; public InnerClassReferenceVisitor(PsiClass innerClass) { - super(); this.innerClass = innerClass; } @@ -42,14 +41,14 @@ public class InnerClassReferenceVisitor extends JavaRecursiveElementVisitor { return true; } } - if (InheritanceUtil.isCorrectDescendant(innerClass, aClass, true)) { + if (InheritanceUtil.isInheritorOrSelf(innerClass, aClass, true)) { return true; } PsiClass classScope = aClass; final PsiClass outerClass = ClassUtils.getContainingClass(innerClass); while (classScope != null) { - if (InheritanceUtil.isCorrectDescendant(outerClass, classScope, + if (InheritanceUtil.isInheritorOrSelf(outerClass, classScope, true)) { return false; } diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/performance/ManualArrayToCollectionCopyInspection.java b/plugins/InspectionGadgets/src/com/siyeh/ig/performance/ManualArrayToCollectionCopyInspection.java index a05b1233ee26..040d0ecfe925 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/ig/performance/ManualArrayToCollectionCopyInspection.java +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/performance/ManualArrayToCollectionCopyInspection.java @@ -1,5 +1,5 @@ /* - * Copyright 2006-2010 Bas Leijdekkers + * Copyright 2006-2011 Bas Leijdekkers * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -19,12 +19,16 @@ import com.intellij.codeInspection.ProblemDescriptor; import com.intellij.openapi.project.Project; import com.intellij.psi.*; import com.intellij.psi.tree.IElementType; +import com.intellij.psi.util.InheritanceUtil; 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.*; +import com.siyeh.ig.psiutils.ExpressionUtils; +import com.siyeh.ig.psiutils.ParenthesesUtils; +import com.siyeh.ig.psiutils.SideEffectChecker; +import com.siyeh.ig.psiutils.VariableAccessUtils; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -563,7 +567,7 @@ public class ManualArrayToCollectionCopyInspection extends BaseInspection { return false; } final PsiClass containingClass = method.getContainingClass(); - return ClassUtils.isSubclass(containingClass, + return InheritanceUtil.isInheritor(containingClass, CommonClassNames.JAVA_UTIL_COLLECTION); } } diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/performance/MethodReferenceVisitor.java b/plugins/InspectionGadgets/src/com/siyeh/ig/performance/MethodReferenceVisitor.java index fb30cf14be3f..41d751c462a4 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/ig/performance/MethodReferenceVisitor.java +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/performance/MethodReferenceVisitor.java @@ -1,5 +1,5 @@ /* - * Copyright 2003-2005 Dave Griffith + * Copyright 2003-2011 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. @@ -25,7 +25,6 @@ class MethodReferenceVisitor extends JavaRecursiveElementVisitor{ private final PsiMember m_method; MethodReferenceVisitor(PsiMember method){ - super(); m_method = method; } @@ -40,7 +39,8 @@ class MethodReferenceVisitor extends JavaRecursiveElementVisitor{ super.visitElement(element); } - @Override public void visitReferenceElement(PsiJavaCodeReferenceElement reference){ + @Override public void visitReferenceElement( + PsiJavaCodeReferenceElement reference){ super.visitReferenceElement(reference); final PsiElement resolvedElement = reference.resolve(); if(!(resolvedElement instanceof PsiClass)){ @@ -77,7 +77,8 @@ class MethodReferenceVisitor extends JavaRecursiveElementVisitor{ m_referencesStaticallyAccessible = false; } - @Override public void visitThisExpression(@NotNull PsiThisExpression expression){ + @Override public void visitThisExpression( + @NotNull PsiThisExpression expression){ super.visitThisExpression(expression); m_referencesStaticallyAccessible = false; } @@ -91,7 +92,7 @@ class MethodReferenceVisitor extends JavaRecursiveElementVisitor{ } final PsiClass referenceContainingClass = m_method.getContainingClass(); final PsiClass containingClass = member.getContainingClass(); - return !InheritanceUtil.isCorrectDescendant(referenceContainingClass, + return !InheritanceUtil.isInheritorOrSelf(referenceContainingClass, containingClass, true); } } diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/performance/TailRecursionInspection.java b/plugins/InspectionGadgets/src/com/siyeh/ig/performance/TailRecursionInspection.java index 2ddff0d1affa..1756be7fda7c 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/ig/performance/TailRecursionInspection.java +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/performance/TailRecursionInspection.java @@ -1,5 +1,5 @@ /* - * Copyright 2003-2008 Dave Griffith, Bas Leijdekkers + * Copyright 2003-2011 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. @@ -33,17 +33,20 @@ import org.jetbrains.annotations.Nullable; public class TailRecursionInspection extends BaseInspection { + @Override @NotNull public String getDisplayName() { return InspectionGadgetsBundle.message("tail.recursion.display.name"); } + @Override @NotNull protected String buildErrorString(Object... infos) { return InspectionGadgetsBundle.message( "tail.recursion.problem.descriptor"); } + @Override @Nullable protected InspectionGadgetsFix buildFix(Object... infos) { final PsiMethod containingMethod = (PsiMethod) infos[0]; @@ -74,6 +77,7 @@ public class TailRecursionInspection extends BaseInspection { "tail.recursion.replace.quickfix"); } + @Override public void doFix(Project project, ProblemDescriptor descriptor) throws IncorrectOperationException { final PsiElement tailCallToken = descriptor.getPsiElement(); @@ -87,9 +91,12 @@ public class TailRecursionInspection extends BaseInspection { if (body == null) { return; } - final StringBuilder builder = new StringBuilder(); + @NonNls final StringBuilder builder = new StringBuilder(); builder.append('{'); final PsiClass containingClass = method.getContainingClass(); + if (containingClass == null) { + return; + } final String thisVariableName; final JavaCodeStyleManager styleManager = JavaCodeStyleManager.getInstance(project); @@ -121,9 +128,8 @@ public class TailRecursionInspection extends BaseInspection { tailCallIsContainedInLoop = false; } builder.append("while(true)"); - final PsiManager psiManager = PsiManager.getInstance(project); final CodeStyleManager codeStyleManager = - psiManager.getCodeStyleManager(); + CodeStyleManager.getInstance(project); replaceTailCalls(body, method, thisVariableName, tailCallIsContainedInLoop, builder); builder.append('}'); @@ -222,13 +228,8 @@ public class TailRecursionInspection extends BaseInspection { out.append('.'); } out.append(text); - } else if (element instanceof PsiThisExpression) { - if (thisVariableName == null) { - out.append(text); - } else { - out.append(thisVariableName); - } - } else if (element instanceof PsiSuperExpression) { + } else if (element instanceof PsiThisExpression || + element instanceof PsiSuperExpression) { if (thisVariableName == null) { out.append(text); } else { @@ -358,6 +359,7 @@ public class TailRecursionInspection extends BaseInspection { } } + @Override public BaseInspectionVisitor buildVisitor() { return new TailRecursionVisitor(); } diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/performance/ToArrayCallWithZeroLengthArrayArgumentInspection.java b/plugins/InspectionGadgets/src/com/siyeh/ig/performance/ToArrayCallWithZeroLengthArrayArgumentInspection.java index bbcfa234ee1c..1a5088351af8 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/ig/performance/ToArrayCallWithZeroLengthArrayArgumentInspection.java +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/performance/ToArrayCallWithZeroLengthArrayArgumentInspection.java @@ -1,5 +1,5 @@ /* - * Copyright 2007-2010 Bas Leijdekkers + * Copyright 2007-2011 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,12 +18,12 @@ package com.siyeh.ig.performance; import com.intellij.codeInspection.ProblemDescriptor; import com.intellij.openapi.project.Project; import com.intellij.psi.*; +import com.intellij.psi.util.InheritanceUtil; 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.ClassUtils; import com.siyeh.ig.psiutils.CollectionUtils; import com.siyeh.ig.psiutils.ExpressionUtils; import org.jetbrains.annotations.Nls; @@ -135,7 +135,7 @@ public class ToArrayCallWithZeroLengthArrayArgumentInspection final PsiType componentType = type.getComponentType(); final String typeText = componentType.getCanonicalText(); @NonNls final String replacementText = - "new " + typeText + "[" + qualifierText + ".size()]"; + "new " + typeText + '[' + qualifierText + ".size()]"; return getElementText(expression, referenceExpression, replacementText); } @@ -191,7 +191,7 @@ public class ToArrayCallWithZeroLengthArrayArgumentInspection return; } final PsiClass containingClass = method.getContainingClass(); - if (!ClassUtils.isSubclass(containingClass, + if (!InheritanceUtil.isInheritor(containingClass, CommonClassNames.JAVA_UTIL_COLLECTION)) { return; } diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/portability/UseOfAWTPeerClassInspection.java b/plugins/InspectionGadgets/src/com/siyeh/ig/portability/UseOfAWTPeerClassInspection.java index e4575fc777b9..08aa49f703a3 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/ig/portability/UseOfAWTPeerClassInspection.java +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/portability/UseOfAWTPeerClassInspection.java @@ -1,5 +1,5 @@ /* - * Copyright 2003-2007 Dave Griffith, Bas Leijdekkers + * Copyright 2003-2011 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,32 +16,35 @@ package com.siyeh.ig.portability; import com.intellij.psi.*; +import com.intellij.psi.util.InheritanceUtil; import com.siyeh.InspectionGadgetsBundle; import com.siyeh.ig.BaseInspection; import com.siyeh.ig.BaseInspectionVisitor; -import com.siyeh.ig.psiutils.ClassUtils; import org.jetbrains.annotations.NotNull; public class UseOfAWTPeerClassInspection extends BaseInspection { + @Override @NotNull public String getDisplayName() { return InspectionGadgetsBundle.message( "use.of.awt.peer.class.display.name"); } + @Override @NotNull public String buildErrorString(Object... infos) { return InspectionGadgetsBundle.message( "use.of.awt.peer.class.problem.descriptor"); } + @Override public BaseInspectionVisitor buildVisitor() { return new UseOfAWTPeerClassVisitor(); } - private static class UseOfAWTPeerClassVisitor extends BaseInspectionVisitor { - + private static class UseOfAWTPeerClassVisitor + extends BaseInspectionVisitor { @Override public void visitVariable(@NotNull PsiVariable variable) { super.visitVariable(variable); @@ -65,7 +68,7 @@ public class UseOfAWTPeerClassInspection extends BaseInspection { if(resolveClass instanceof PsiTypeParameter){ return; } - if(!ClassUtils.isSubclass(resolveClass, + if(!InheritanceUtil.isInheritor(resolveClass, "java.awt.peer.ComponentPeer")) { return; } @@ -97,7 +100,7 @@ public class UseOfAWTPeerClassInspection extends BaseInspection { if(resolveClass instanceof PsiTypeParameter) { return; } - if(!ClassUtils.isSubclass(resolveClass, + if(!InheritanceUtil.isInheritor(resolveClass, "java.awt.peer.ComponentPeer")) { return; } diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/portability/UseOfJDBCDriverClassInspection.java b/plugins/InspectionGadgets/src/com/siyeh/ig/portability/UseOfJDBCDriverClassInspection.java index b26ece8ae58a..9fd737a56b35 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/ig/portability/UseOfJDBCDriverClassInspection.java +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/portability/UseOfJDBCDriverClassInspection.java @@ -1,5 +1,5 @@ /* - * Copyright 2003-2007 Dave Griffith, Bas Leijdekkers + * Copyright 2003-2011 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,26 +16,29 @@ package com.siyeh.ig.portability; import com.intellij.psi.*; +import com.intellij.psi.util.InheritanceUtil; import com.siyeh.InspectionGadgetsBundle; import com.siyeh.ig.BaseInspection; import com.siyeh.ig.BaseInspectionVisitor; -import com.siyeh.ig.psiutils.ClassUtils; import org.jetbrains.annotations.NotNull; public class UseOfJDBCDriverClassInspection extends BaseInspection { + @Override @NotNull public String getDisplayName() { return InspectionGadgetsBundle.message( "use.of.concrete.jdbc.driver.class.display.name"); } + @Override @NotNull public String buildErrorString(Object... infos) { return InspectionGadgetsBundle.message( "use.of.concrete.jdbc.driver.class.problem.descriptor"); } + @Override public BaseInspectionVisitor buildVisitor() { return new UseOfJDBCDriverClassVisitor(); } @@ -65,7 +68,7 @@ public class UseOfJDBCDriverClassInspection extends BaseInspection { if(resolveClass instanceof PsiTypeParameter){ return; } - if(!ClassUtils.isSubclass(resolveClass, "java.sql.Driver")) { + if(!InheritanceUtil.isInheritor(resolveClass, "java.sql.Driver")) { return; } final PsiTypeElement typeElement = variable.getTypeElement(); @@ -96,7 +99,7 @@ public class UseOfJDBCDriverClassInspection extends BaseInspection { if(resolveClass instanceof PsiTypeParameter){ return; } - if(!ClassUtils.isSubclass(resolveClass, "java.sql.Driver")) { + if(!InheritanceUtil.isInheritor(resolveClass, "java.sql.Driver")) { return; } registerNewExpressionError(newExpression); diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/psiutils/ClassUtils.java b/plugins/InspectionGadgets/src/com/siyeh/ig/psiutils/ClassUtils.java index 751b5b4c6cb2..1898696cb975 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/ig/psiutils/ClassUtils.java +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/psiutils/ClassUtils.java @@ -1,5 +1,5 @@ /* - * Copyright 2003-2010 Dave Griffith, Bas Leijdekkers + * Copyright 2003-2011 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,15 +15,11 @@ */ package com.siyeh.ig.psiutils; -import com.intellij.openapi.project.Project; import com.intellij.psi.*; -import com.intellij.psi.search.GlobalSearchScope; import com.intellij.psi.search.searches.ClassInheritorsSearch; -import com.intellij.psi.util.InheritanceUtil; import com.intellij.psi.util.PsiTreeUtil; import com.intellij.psi.util.TypeConversionUtil; import com.intellij.util.Query; -import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.Nullable; import java.util.HashSet; @@ -81,19 +77,6 @@ public class ClassUtils { private ClassUtils() { } - public static boolean isSubclass(@Nullable PsiClass aClass, - @NonNls String ancestorName) { - if (aClass == null) { - return false; - } - final PsiManager psiManager = aClass.getManager(); - final Project project = psiManager.getProject(); - final GlobalSearchScope scope = GlobalSearchScope.allScope(project); - final JavaPsiFacade psiFacade = JavaPsiFacade.getInstance(project); - final PsiClass ancestorClass = psiFacade.findClass(ancestorName, scope); - return InheritanceUtil.isCorrectDescendant(aClass, ancestorClass, true); - } - public static boolean isPrimitive(PsiType type) { return TypeConversionUtil.isPrimitiveAndNotNull(type); } diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/psiutils/CloneUtils.java b/plugins/InspectionGadgets/src/com/siyeh/ig/psiutils/CloneUtils.java index 3d7a244d43d6..552af71556ef 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/ig/psiutils/CloneUtils.java +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/psiutils/CloneUtils.java @@ -1,5 +1,5 @@ /* - * Copyright 2003-2010 Dave Griffith, Bas Leijdekkers + * Copyright 2003-2011 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,18 +16,17 @@ package com.siyeh.ig.psiutils; import com.intellij.psi.*; +import com.intellij.psi.util.InheritanceUtil; import com.intellij.psi.util.PsiUtil; import com.siyeh.HardcodedMethodConstants; import org.jetbrains.annotations.NotNull; public class CloneUtils{ - private CloneUtils(){ - super(); - } + private CloneUtils(){} public static boolean isCloneable(@NotNull PsiClass aClass){ - return ClassUtils.isSubclass(aClass, + return InheritanceUtil.isInheritor(aClass, CommonClassNames.JAVA_LANG_CLONEABLE); } diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/psiutils/ImportUtils.java b/plugins/InspectionGadgets/src/com/siyeh/ig/psiutils/ImportUtils.java index 5eeeac20ebb8..c05ffab36204 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/ig/psiutils/ImportUtils.java +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/psiutils/ImportUtils.java @@ -1,5 +1,5 @@ /* - * Copyright 2003-2010 Dave Griffith, Bas Leijdekkers + * Copyright 2003-2011 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. @@ -30,10 +30,9 @@ import org.jetbrains.annotations.NotNull; import java.util.ArrayList; import java.util.List; -public class ImportUtils{ +public class ImportUtils { - private ImportUtils(){ - } + private ImportUtils() {} public static void addImportIfNeeded(PsiJavaFile file, PsiClass aClass) { final PsiFile containingFile = aClass.getContainingFile(); @@ -78,7 +77,7 @@ public class ImportUtils{ if (containingClass == null) { return false; } - if (ClassUtils.isSubclass(containingClass, fqName)) { + if (InheritanceUtil.isInheritor(containingClass, fqName)) { return true; } final PsiField field = @@ -424,7 +423,7 @@ public class ImportUtils{ throws IncorrectOperationException { final PsiClass containingClass = PsiTreeUtil.getParentOfType(context, PsiClass.class); - if (ClassUtils.isSubclass(containingClass, qualifierClass)) { + if (InheritanceUtil.isInheritor(containingClass, qualifierClass)) { return; } final PsiFile psiFile = context.getContainingFile(); @@ -524,7 +523,7 @@ public class ImportUtils{ } final PsiClass containingClass = PsiTreeUtil.getParentOfType(context, PsiClass.class); - if (InheritanceUtil.isCorrectDescendant(containingClass, memberClass, + if (InheritanceUtil.isInheritorOrSelf(containingClass, memberClass, true)) { return false; } diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/psiutils/IteratorUtils.java b/plugins/InspectionGadgets/src/com/siyeh/ig/psiutils/IteratorUtils.java index 2be1ad75404d..7ca1cf7bfec9 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/ig/psiutils/IteratorUtils.java +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/psiutils/IteratorUtils.java @@ -1,5 +1,5 @@ /* - * Copyright 2003-2006 Bas Leijdekkers + * Copyright 2003-2011 Bas Leijdekkers * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -55,10 +55,6 @@ public class IteratorUtils { CommonClassNames.JAVA_UTIL_ITERATOR, PsiType.BOOLEAN, "hasNext"); } - public static boolean isIterator(PsiClass aClass) { - return ClassUtils.isSubclass(aClass, CommonClassNames.JAVA_UTIL_ITERATOR); - } - private static class CallsIteratorNextVisitor extends JavaRecursiveElementVisitor { @@ -91,7 +87,8 @@ public class IteratorUtils { super.visitMethodCallExpression(expression); if (checkScanner) { if (!MethodCallUtils.isCallToMethod(expression, - CommonClassNames.JAVA_UTIL_ITERATOR, null, SCANNER_PATTERN)) { + CommonClassNames.JAVA_UTIL_ITERATOR, null, + SCANNER_PATTERN)) { return; } } else { @@ -119,7 +116,7 @@ public class IteratorUtils { final PsiReferenceExpression referenceExpression = (PsiReferenceExpression) qualifier; final PsiElement element = referenceExpression.resolve(); - if (target != element) { + if (!target.equals(element)) { return; } } diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/psiutils/MethodUtils.java b/plugins/InspectionGadgets/src/com/siyeh/ig/psiutils/MethodUtils.java index 8dc1f47c8ed4..1ce3326f6f22 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/ig/psiutils/MethodUtils.java +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/psiutils/MethodUtils.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2010 JetBrains s.r.o. + * Copyright 2000-2011 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. @@ -130,7 +130,8 @@ public class MethodUtils{ } if (containingClassName != null) { final PsiClass containingClass = method.getContainingClass(); - return ClassUtils.isSubclass(containingClass, containingClassName); + return InheritanceUtil.isInheritor(containingClass, + containingClassName); } return true; } @@ -186,7 +187,8 @@ public class MethodUtils{ } if (containingClassName != null) { final PsiClass containingClass = method.getContainingClass(); - return ClassUtils.isSubclass(containingClass, containingClassName); + return InheritanceUtil.isInheritor(containingClass, + containingClassName); } return true; } @@ -335,7 +337,7 @@ public class MethodUtils{ } final PsiClass fieldContainingClass = field.getContainingClass(); final PsiClass methodContainingClass = method.getContainingClass(); - if (InheritanceUtil.isCorrectDescendant(methodContainingClass, + if (InheritanceUtil.isInheritorOrSelf(methodContainingClass, fieldContainingClass, true)) { return field; } else { @@ -408,7 +410,7 @@ public class MethodUtils{ final PsiField field = (PsiField) referent; final PsiClass fieldContainingClass = field.getContainingClass(); final PsiClass methodContainingClass = method.getContainingClass(); - if(!InheritanceUtil.isCorrectDescendant(methodContainingClass, + if(!InheritanceUtil.isInheritorOrSelf(methodContainingClass, fieldContainingClass, true)){ return null; } diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/psiutils/SerializationUtils.java b/plugins/InspectionGadgets/src/com/siyeh/ig/psiutils/SerializationUtils.java index 24f804d6fa41..a79afaae9967 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/ig/psiutils/SerializationUtils.java +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/psiutils/SerializationUtils.java @@ -18,6 +18,7 @@ package com.siyeh.ig.psiutils; import com.intellij.openapi.project.Project; import com.intellij.psi.*; import com.intellij.psi.search.GlobalSearchScope; +import com.intellij.psi.util.InheritanceUtil; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -26,12 +27,12 @@ public class SerializationUtils { private SerializationUtils() {} public static boolean isSerializable(@Nullable PsiClass aClass) { - return ClassUtils.isSubclass(aClass, + return InheritanceUtil.isInheritor(aClass, CommonClassNames.JAVA_IO_SERIALIZABLE); } public static boolean isExternalizable(@Nullable PsiClass aClass) { - return ClassUtils.isSubclass(aClass, + return InheritanceUtil.isInheritor(aClass, CommonClassNames.JAVA_IO_EXTERNALIZABLE); } @@ -56,7 +57,8 @@ public class SerializationUtils { } public static boolean hasReadObject(@NotNull PsiClass aClass) { - final PsiMethod[] methods = aClass.findMethodsByName("readObject", false); + final PsiMethod[] methods = + aClass.findMethodsByName("readObject", false); for (final PsiMethod method : methods) { if (isReadObject(method)) { return true; @@ -130,9 +132,9 @@ public class SerializationUtils { if (isExternalizable(psiClass)) { return true; } - if (ClassUtils.isSubclass(psiClass, + if (InheritanceUtil.isInheritor(psiClass, CommonClassNames.JAVA_UTIL_COLLECTION) || - ClassUtils.isSubclass(psiClass, + InheritanceUtil.isInheritor(psiClass, CommonClassNames.JAVA_UTIL_MAP)) { final PsiType[] parameters = classTYpe.getParameters(); for (PsiType parameter : parameters) { diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/psiutils/TestUtils.java b/plugins/InspectionGadgets/src/com/siyeh/ig/psiutils/TestUtils.java index da09ad52e032..4276b02dcaa3 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/ig/psiutils/TestUtils.java +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/psiutils/TestUtils.java @@ -1,5 +1,5 @@ /* - * Copyright 2003-2010 Dave Griffith, Bas Leijdekkers + * Copyright 2003-2011 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. @@ -21,16 +21,15 @@ import com.intellij.openapi.roots.ProjectFileIndex; import com.intellij.openapi.roots.ProjectRootManager; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.psi.*; -import com.intellij.psi.util.PsiTreeUtil; +import com.intellij.psi.util.*; +import com.intellij.psi.util.InheritanceUtil; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; public class TestUtils { - private TestUtils() { - super(); - } + private TestUtils() {} public static boolean isTest(@Nullable PsiClass aClass) { if (aClass == null) { @@ -104,6 +103,7 @@ public class TestUtils { public static boolean isJUnitTestClass(@Nullable PsiClass targetClass){ return targetClass != null && - ClassUtils.isSubclass(targetClass, "junit.framework.TestCase"); + InheritanceUtil.isInheritor(targetClass, + "junit.framework.TestCase"); } } diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/psiutils/TypeUtils.java b/plugins/InspectionGadgets/src/com/siyeh/ig/psiutils/TypeUtils.java index 3bf1c26e149e..989262a3fc45 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/ig/psiutils/TypeUtils.java +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/psiutils/TypeUtils.java @@ -1,5 +1,5 @@ /* - * Copyright 2003-2010 Dave Griffith, Bas Leijdekkers + * Copyright 2003-2011 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. @@ -18,6 +18,8 @@ package com.siyeh.ig.psiutils; import com.intellij.openapi.project.Project; import com.intellij.psi.*; import com.intellij.psi.search.GlobalSearchScope; +import com.intellij.psi.util.*; +import com.intellij.psi.util.InheritanceUtil; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -29,7 +31,8 @@ public class TypeUtils { private TypeUtils() {} public static boolean expressionHasType( - @Nullable PsiExpression expression, @NonNls @NotNull String typeName) { + @Nullable PsiExpression expression, + @NonNls @NotNull String typeName) { if (expression == null) { return false; } @@ -79,7 +82,7 @@ public class TypeUtils { } final PsiClassType classType = (PsiClassType) type; final PsiClass aClass = classType.resolve(); - return aClass != null && ClassUtils.isSubclass(aClass, typeName); + return aClass != null && InheritanceUtil.isInheritor(aClass, typeName); } //getTypeIfOneOfOrSubtype @@ -102,7 +105,7 @@ public class TypeUtils { return null; } for (String typeName : typeNames) { - if (ClassUtils.isSubclass(aClass, typeName)) { + if (InheritanceUtil.isInheritor(aClass, typeName)) { return typeName; } } @@ -128,7 +131,7 @@ public class TypeUtils { return false; } for (String typeName : typeNames) { - if (ClassUtils.isSubclass(aClass, typeName)) { + if (InheritanceUtil.isInheritor(aClass, typeName)) { return true; } } diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/psiutils/WeakestTypeFinder.java b/plugins/InspectionGadgets/src/com/siyeh/ig/psiutils/WeakestTypeFinder.java index 571e45796e65..50ae091a5efd 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/ig/psiutils/WeakestTypeFinder.java +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/psiutils/WeakestTypeFinder.java @@ -1,5 +1,5 @@ /* - * Copyright 2008-2010 Bas Leijdekkers + * Copyright 2008-2011 Bas Leijdekkers * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -305,9 +305,9 @@ public class WeakestTypeFinder { HardcodedMethodConstants.INDEX_OF.equals(methodName) || HardcodedMethodConstants.LAST_INDEX_OF.equals(methodName)) { final PsiClass containingClass = method.getContainingClass(); - if (ClassUtils.isSubclass(containingClass, + if (InheritanceUtil.isInheritor(containingClass, CommonClassNames.JAVA_UTIL_MAP) || - ClassUtils.isSubclass(containingClass, + InheritanceUtil.isInheritor(containingClass, CommonClassNames.JAVA_UTIL_COLLECTION)) { final PsiReferenceExpression methodExpression = methodCallExpression.getMethodExpression(); @@ -521,9 +521,9 @@ public class WeakestTypeFinder { if (aClass == null) { return true; } - if (!ClassUtils.isSubclass(aClass, + if (!InheritanceUtil.isInheritor(aClass, CommonClassNames.JAVA_LANG_RUNTIME_EXCEPTION) && - !ClassUtils.isSubclass(aClass, + !InheritanceUtil.isInheritor(aClass, CommonClassNames.JAVA_LANG_ERROR)) { return true; } diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/security/CustomClassloaderInspection.java b/plugins/InspectionGadgets/src/com/siyeh/ig/security/CustomClassloaderInspection.java index 4b22cdd0c2f2..4f8261e42314 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/ig/security/CustomClassloaderInspection.java +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/security/CustomClassloaderInspection.java @@ -1,5 +1,5 @@ /* - * Copyright 2003-2007 Dave Griffith, Bas Leijdekkers + * Copyright 2003-2011 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,34 +16,38 @@ package com.siyeh.ig.security; import com.intellij.psi.PsiClass; +import com.intellij.psi.util.InheritanceUtil; import com.siyeh.InspectionGadgetsBundle; import com.siyeh.ig.BaseInspection; import com.siyeh.ig.BaseInspectionVisitor; -import com.siyeh.ig.psiutils.ClassUtils; import org.jetbrains.annotations.NotNull; public class CustomClassloaderInspection extends BaseInspection { + @Override @NotNull public String getDisplayName() { return InspectionGadgetsBundle.message( "custom.classloader.display.name"); } + @Override @NotNull protected String buildErrorString(Object... infos) { return InspectionGadgetsBundle.message( "custom.classloader.problem.descriptor"); } + @Override public BaseInspectionVisitor buildVisitor() { return new CustomClassloaderVisitor(); } - private static class CustomClassloaderVisitor extends BaseInspectionVisitor { + private static class CustomClassloaderVisitor + extends BaseInspectionVisitor { @Override public void visitClass(@NotNull PsiClass aClass) { - if (!ClassUtils.isSubclass(aClass, "java.lang.ClassLoader")) { + if (!InheritanceUtil.isInheritor(aClass, "java.lang.ClassLoader")) { return; } if ("java.lang.ClassLoader".equals(aClass.getQualifiedName())) { diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/security/CustomSecurityManagerInspection.java b/plugins/InspectionGadgets/src/com/siyeh/ig/security/CustomSecurityManagerInspection.java index ece9f3a26dfd..77976d22d576 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/ig/security/CustomSecurityManagerInspection.java +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/security/CustomSecurityManagerInspection.java @@ -1,5 +1,5 @@ /* - * Copyright 2003-2007 Dave Griffith, Bas Leijdekkers + * Copyright 2003-2011 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,26 +16,29 @@ package com.siyeh.ig.security; import com.intellij.psi.PsiClass; +import com.intellij.psi.util.InheritanceUtil; import com.siyeh.InspectionGadgetsBundle; import com.siyeh.ig.BaseInspection; import com.siyeh.ig.BaseInspectionVisitor; -import com.siyeh.ig.psiutils.ClassUtils; import org.jetbrains.annotations.NotNull; public class CustomSecurityManagerInspection extends BaseInspection { + @Override @NotNull public String getDisplayName() { return InspectionGadgetsBundle.message( "custom.security.manager.display.name"); } + @Override @NotNull protected String buildErrorString(Object... infos) { return InspectionGadgetsBundle.message( "custom.security.manager.problem.descriptor"); } + @Override public BaseInspectionVisitor buildVisitor() { return new CustomSecurityManagerVisitor(); } @@ -44,7 +47,8 @@ public class CustomSecurityManagerInspection extends BaseInspection { extends BaseInspectionVisitor { @Override public void visitClass(@NotNull PsiClass aClass) { - if (!ClassUtils.isSubclass(aClass, "java.lang.SecurityManager")) { + if (!InheritanceUtil.isInheritor(aClass, + "java.lang.SecurityManager")) { return; } if ("java.lang.SecurityManager".equals(aClass.getQualifiedName())) { diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/security/JDBCExecuteWithNonConstantStringInspection.java b/plugins/InspectionGadgets/src/com/siyeh/ig/security/JDBCExecuteWithNonConstantStringInspection.java index 9672698927fb..0c2cae24b5c6 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/ig/security/JDBCExecuteWithNonConstantStringInspection.java +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/security/JDBCExecuteWithNonConstantStringInspection.java @@ -1,5 +1,5 @@ /* - * Copyright 2003-2010 Dave Griffith, Bas Leijdekkers + * Copyright 2003-2011 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. @@ -17,10 +17,10 @@ package com.siyeh.ig.security; import com.intellij.psi.*; import com.intellij.psi.util.ConstantExpressionUtil; +import com.intellij.psi.util.InheritanceUtil; import com.siyeh.InspectionGadgetsBundle; import com.siyeh.ig.BaseInspection; import com.siyeh.ig.BaseInspectionVisitor; -import com.siyeh.ig.psiutils.ClassUtils; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; @@ -82,7 +82,7 @@ public class JDBCExecuteWithNonConstantStringInspection if (aClass == null) { return; } - if (!ClassUtils.isSubclass(aClass, "java.sql.Statement")) { + if (!InheritanceUtil.isInheritor(aClass, "java.sql.Statement")) { return; } final PsiExpressionList argumentList = expression.getArgumentList(); diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/security/JDBCPrepareStatementWithNonConstantStringInspection.java b/plugins/InspectionGadgets/src/com/siyeh/ig/security/JDBCPrepareStatementWithNonConstantStringInspection.java index 45e7be17045b..480307a66650 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/ig/security/JDBCPrepareStatementWithNonConstantStringInspection.java +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/security/JDBCPrepareStatementWithNonConstantStringInspection.java @@ -1,5 +1,5 @@ /* - * Copyright 2003-2010 Dave Griffith, Bas Leijdekkers + * Copyright 2003-2011 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. @@ -17,10 +17,10 @@ package com.siyeh.ig.security; import com.intellij.psi.*; import com.intellij.psi.util.ConstantExpressionUtil; +import com.intellij.psi.util.InheritanceUtil; import com.siyeh.InspectionGadgetsBundle; import com.siyeh.ig.BaseInspection; import com.siyeh.ig.BaseInspectionVisitor; -import com.siyeh.ig.psiutils.ClassUtils; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; @@ -80,7 +80,7 @@ public class JDBCPrepareStatementWithNonConstantStringInspection if (aClass == null) { return; } - if (!ClassUtils.isSubclass(aClass, "java.sql.Connection")) { + if (!InheritanceUtil.isInheritor(aClass, "java.sql.Connection")) { return; } final PsiExpressionList argumentList = expression.getArgumentList(); diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/security/LoadLibraryWithNonConstantStringInspection.java b/plugins/InspectionGadgets/src/com/siyeh/ig/security/LoadLibraryWithNonConstantStringInspection.java index aa7d1882eb3a..5405d5ea548f 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/ig/security/LoadLibraryWithNonConstantStringInspection.java +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/security/LoadLibraryWithNonConstantStringInspection.java @@ -1,5 +1,5 @@ /* - * Copyright 2003-2010 Dave Griffith, Bas Leijdekkers + * Copyright 2003-2011 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. @@ -17,10 +17,10 @@ package com.siyeh.ig.security; import com.intellij.psi.*; import com.intellij.psi.util.ConstantExpressionUtil; +import com.intellij.psi.util.InheritanceUtil; import com.siyeh.InspectionGadgetsBundle; import com.siyeh.ig.BaseInspection; import com.siyeh.ig.BaseInspectionVisitor; -import com.siyeh.ig.psiutils.ClassUtils; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; @@ -66,7 +66,7 @@ public class LoadLibraryWithNonConstantStringInspection if (aClass == null) { return; } - if (!ClassUtils.isSubclass(aClass, "java.lang.System")) { + if (!InheritanceUtil.isInheritor(aClass, "java.lang.System")) { return; } final PsiExpressionList argumentList = expression.getArgumentList(); diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/security/UnsecureRandomNumberGenerationInspection.java b/plugins/InspectionGadgets/src/com/siyeh/ig/security/UnsecureRandomNumberGenerationInspection.java index 9f46ee14edd2..bdc2eeb2f49c 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/ig/security/UnsecureRandomNumberGenerationInspection.java +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/security/UnsecureRandomNumberGenerationInspection.java @@ -1,5 +1,5 @@ /* - * Copyright 2003-2007 Dave Griffith, Bas Leijdekkers + * Copyright 2003-2011 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,22 +16,24 @@ package com.siyeh.ig.security; import com.intellij.psi.*; +import com.intellij.psi.util.InheritanceUtil; import com.siyeh.InspectionGadgetsBundle; import com.siyeh.ig.BaseInspection; import com.siyeh.ig.BaseInspectionVisitor; -import com.siyeh.ig.psiutils.ClassUtils; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; public class UnsecureRandomNumberGenerationInspection extends BaseInspection { + @Override @NotNull public String getDisplayName() { return InspectionGadgetsBundle.message( "unsecure.random.number.generation.display.name"); } + @Override @NotNull public String buildErrorString(Object... infos) { @NonNls final String text = ((PsiElement)infos[0]).getText(); @@ -47,6 +49,7 @@ public class UnsecureRandomNumberGenerationInspection } } + @Override public BaseInspectionVisitor buildVisitor() { return new InsecureRandomNumberGenerationVisitor(); } @@ -54,7 +57,8 @@ public class UnsecureRandomNumberGenerationInspection private static class InsecureRandomNumberGenerationVisitor extends BaseInspectionVisitor { - @Override public void visitNewExpression(@NotNull PsiNewExpression expression) { + @Override public void visitNewExpression( + @NotNull PsiNewExpression expression) { super.visitNewExpression(expression); final PsiJavaCodeReferenceElement reference = expression.getClassReference(); @@ -66,7 +70,7 @@ public class UnsecureRandomNumberGenerationInspection return; } final PsiClass aClass = (PsiClass) element; - if (!ClassUtils.isSubclass(aClass, "java.util.Random")) { + if (!InheritanceUtil.isInheritor(aClass, "java.util.Random")) { return; } final String qualifiedName = aClass.getQualifiedName(); diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/serialization/ComparatorNotSerializableInspection.java b/plugins/InspectionGadgets/src/com/siyeh/ig/serialization/ComparatorNotSerializableInspection.java index 382f61343232..ea9174a44eaa 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/ig/serialization/ComparatorNotSerializableInspection.java +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/serialization/ComparatorNotSerializableInspection.java @@ -1,5 +1,5 @@ /* - * Copyright 2006-2010 Dave Griffith, Bas Leijdekkers + * Copyright 2006-2011 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. @@ -18,12 +18,12 @@ package com.siyeh.ig.serialization; import com.intellij.psi.CommonClassNames; import com.intellij.psi.PsiAnonymousClass; import com.intellij.psi.PsiClass; +import com.intellij.psi.util.InheritanceUtil; import com.siyeh.InspectionGadgetsBundle; import com.siyeh.ig.BaseInspection; import com.siyeh.ig.BaseInspectionVisitor; import com.siyeh.ig.InspectionGadgetsFix; import com.siyeh.ig.fixes.MakeSerializableFix; -import com.siyeh.ig.psiutils.ClassUtils; import com.siyeh.ig.psiutils.SerializationUtils; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -63,7 +63,7 @@ public class ComparatorNotSerializableInspection extends BaseInspection { if (aClass instanceof PsiAnonymousClass) { return; } - if (!ClassUtils.isSubclass(aClass, + if (!InheritanceUtil.isInheritor(aClass, CommonClassNames.JAVA_UTIL_COMPARATOR)) { return; } diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/serialization/SerializableInspection.java b/plugins/InspectionGadgets/src/com/siyeh/ig/serialization/SerializableInspection.java index fd11cb0eb5c4..dfecdac65843 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/ig/serialization/SerializableInspection.java +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/serialization/SerializableInspection.java @@ -1,5 +1,5 @@ /* - * Copyright 2007 Bas Leijdekkers + * Copyright 2007-2011 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,22 +15,20 @@ */ package com.siyeh.ig.serialization; +import com.intellij.codeInspection.ui.AddAction; import com.intellij.codeInspection.ui.ListTable; import com.intellij.codeInspection.ui.ListWrappingTableModel; import com.intellij.codeInspection.ui.RemoveAction; import com.intellij.openapi.util.InvalidDataException; import com.intellij.openapi.util.WriteExternalException; import com.intellij.psi.PsiClass; +import com.intellij.psi.util.InheritanceUtil; import com.siyeh.InspectionGadgetsBundle; import com.siyeh.ig.BaseInspection; -import com.siyeh.ig.psiutils.ClassUtils; import com.siyeh.ig.psiutils.SerializationUtils; -import com.intellij.codeInspection.ui.AddAction; import org.jdom.Element; -import javax.swing.JButton; -import javax.swing.JComponent; -import javax.swing.JPanel; +import javax.swing.*; import java.util.ArrayList; import java.util.List; @@ -44,16 +42,19 @@ public abstract class SerializableInspection extends BaseInspection { parseString(superClassString, superClassList); } + @Override public JComponent createOptionsPanel() { final Form form = new Form(); return form.getContentPanel(); } + @Override public void readSettings(Element node) throws InvalidDataException { super.readSettings(node); parseString(superClassString, superClassList); } + @Override public void writeSettings(Element node) throws WriteExternalException { superClassString = formatString(superClassList); super.writeSettings(node); @@ -64,7 +65,7 @@ public abstract class SerializableInspection extends BaseInspection { return false; } for (String superClassName : superClassList) { - if (ClassUtils.isSubclass(aClass, superClassName)) { + if (InheritanceUtil.isInheritor(aClass, superClassName)) { return true; } } diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/style/ImplicitCallToSuperInspection.java b/plugins/InspectionGadgets/src/com/siyeh/ig/style/ImplicitCallToSuperInspection.java index 20d592f9fbbe..80557649207e 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/ig/style/ImplicitCallToSuperInspection.java +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/style/ImplicitCallToSuperInspection.java @@ -1,5 +1,5 @@ /* - * Copyright 2003-2010 Dave Griffith, Bas Leijdekkers + * Copyright 2003-2011 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. @@ -81,9 +81,8 @@ public class ImplicitCallToSuperInspection extends BaseInspection { JavaPsiFacade.getElementFactory(project); final PsiStatement newStatement = factory.createStatementFromText("super();", null); - final PsiManager psiManager = PsiManager.getInstance(project); final CodeStyleManager styleManager = - psiManager.getCodeStyleManager(); + CodeStyleManager.getInstance(project); if (body == null) { return; } @@ -116,7 +115,8 @@ public class ImplicitCallToSuperInspection extends BaseInspection { final PsiClass superClass = containingClass.getSuperClass(); if (superClass != null) { final String superClassName = superClass.getQualifiedName(); - if (CommonClassNames.JAVA_LANG_OBJECT.equals(superClassName)) { + if (CommonClassNames.JAVA_LANG_OBJECT.equals( + superClassName)) { return; } } diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/threading/ConditionSignalInspection.java b/plugins/InspectionGadgets/src/com/siyeh/ig/threading/ConditionSignalInspection.java index bd557b4f42ff..bc875905351f 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/ig/threading/ConditionSignalInspection.java +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/threading/ConditionSignalInspection.java @@ -1,5 +1,5 @@ /* - * Copyright 2003-2007 Dave Griffith, Bas Leijdekkers + * Copyright 2003-2011 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. @@ -18,37 +18,42 @@ package com.siyeh.ig.threading; import com.intellij.codeInspection.ProblemDescriptor; import com.intellij.openapi.project.Project; import com.intellij.psi.*; +import com.intellij.psi.util.InheritanceUtil; 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.ClassUtils; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; public class ConditionSignalInspection extends BaseInspection { + @Override @NotNull public String getID() { return "CallToSignalInsteadOfSignalAll"; } + @Override @NotNull public String getDisplayName() { return InspectionGadgetsBundle.message("condition.signal.display.name"); } + @Override @NotNull protected String buildErrorString(Object... infos) { return InspectionGadgetsBundle.message( "condition.signal.problem.descriptor"); } + @Override public BaseInspectionVisitor buildVisitor() { return new ConditionSignalVisitor(); } + @Override public InspectionGadgetsFix buildFix(Object... infos) { return new ConditionSignalFix(); } @@ -61,6 +66,7 @@ public class ConditionSignalInspection extends BaseInspection { "condition.signal.replace.quickfix"); } + @Override public void doFix(Project project, ProblemDescriptor descriptor) throws IncorrectOperationException { final PsiElement methodNameElement = descriptor.getPsiElement(); @@ -105,9 +111,8 @@ public class ConditionSignalInspection extends BaseInspection { if (containingClass == null) { return; } - if (!ClassUtils - .isSubclass(containingClass, - "java.util.concurrent.locks.Condition")) { + if (!InheritanceUtil.isInheritor(containingClass, + "java.util.concurrent.locks.Condition")) { return; } registerMethodCallError(expression); diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/threading/SleepWhileHoldingLockInspection.java b/plugins/InspectionGadgets/src/com/siyeh/ig/threading/SleepWhileHoldingLockInspection.java index 850d19a61efb..429264eadf69 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/ig/threading/SleepWhileHoldingLockInspection.java +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/threading/SleepWhileHoldingLockInspection.java @@ -1,5 +1,5 @@ /* - * Copyright 2003-2007 Dave Griffith, Bas Leijdekkers + * Copyright 2003-2011 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,28 +16,31 @@ package com.siyeh.ig.threading; import com.intellij.psi.*; +import com.intellij.psi.util.InheritanceUtil; import com.intellij.psi.util.PsiTreeUtil; import com.siyeh.InspectionGadgetsBundle; import com.siyeh.ig.BaseInspection; import com.siyeh.ig.BaseInspectionVisitor; -import com.siyeh.ig.psiutils.ClassUtils; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; public class SleepWhileHoldingLockInspection extends BaseInspection { + @Override @NotNull public String getDisplayName() { return InspectionGadgetsBundle.message( "sleep.while.holding.lock.display.name"); } + @Override @NotNull protected String buildErrorString(Object... infos) { return InspectionGadgetsBundle.message( "sleep.while.holding.lock.problem.descriptor"); } + @Override public BaseInspectionVisitor buildVisitor() { return new SleepWhileHoldingLockVisitor(); } @@ -50,7 +53,8 @@ public class SleepWhileHoldingLockInspection extends BaseInspection { super.visitMethodCallExpression(expression); final PsiReferenceExpression methodExpression = expression.getMethodExpression(); - @NonNls final String methodName = methodExpression.getReferenceName(); + @NonNls final String methodName = + methodExpression.getReferenceName(); if (!"sleep".equals(methodName)) { return; } @@ -76,7 +80,8 @@ public class SleepWhileHoldingLockInspection extends BaseInspection { } final PsiClass methodClass = method.getContainingClass(); if (methodClass == null || - !ClassUtils.isSubclass(methodClass, "java.lang.Thread")) { + !InheritanceUtil.isInheritor(methodClass, + "java.lang.Thread")) { return; } registerMethodCallError(expression); diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/threading/SynchronizedMethodInspection.java b/plugins/InspectionGadgets/src/com/siyeh/ig/threading/SynchronizedMethodInspection.java index 65d0fb982cce..1cdbb6eceea9 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/ig/threading/SynchronizedMethodInspection.java +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/threading/SynchronizedMethodInspection.java @@ -1,5 +1,5 @@ /* - * Copyright 2003-2008 Dave Griffith, Bas Leijdekkers + * Copyright 2003-2011 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. @@ -36,12 +36,14 @@ public class SynchronizedMethodInspection extends BaseInspection { public boolean m_includeNativeMethods = true; + @Override @NotNull public String getDisplayName() { return InspectionGadgetsBundle.message( "synchronized.method.display.name"); } + @Override @NotNull public String buildErrorString(Object... infos) { final PsiMethod method = (PsiMethod)infos[0]; @@ -49,6 +51,7 @@ public class SynchronizedMethodInspection extends BaseInspection { "synchronized.method.problem.descriptor", method.getName()); } + @Override protected InspectionGadgetsFix buildFix(Object... infos) { final PsiMethod method = (PsiMethod)infos[0]; if (method.getBody() == null) { @@ -57,10 +60,12 @@ public class SynchronizedMethodInspection extends BaseInspection { return new SynchronizedMethodFix(); } + @Override public BaseInspectionVisitor buildVisitor() { return new SynchronizedMethodVisitor(); } + @Override public JComponent createOptionsPanel() { return new SingleCheckboxOptionsPanel(InspectionGadgetsBundle.message( "synchronized.method.include.option"), @@ -75,6 +80,7 @@ public class SynchronizedMethodInspection extends BaseInspection { "synchronized.method.move.quickfix"); } + @Override public void doFix(Project project, ProblemDescriptor descriptor) throws IncorrectOperationException { final PsiElement nameElement = descriptor.getPsiElement(); @@ -100,14 +106,14 @@ public class SynchronizedMethodInspection extends BaseInspection { replacementText = "{ synchronized(this){" + text.substring(1) + '}'; } - final PsiManager psiManager = PsiManager.getInstance(project); - final PsiElementFactory elementFactory = JavaPsiFacade.getInstance(psiManager.getProject()).getElementFactory(); + final PsiElementFactory elementFactory = + JavaPsiFacade.getElementFactory(project); final PsiCodeBlock block = elementFactory.createCodeBlockFromText(replacementText, null); body.replace(block); final CodeStyleManager codeStyleManager = - psiManager.getCodeStyleManager(); + CodeStyleManager.getInstance(project); codeStyleManager.reformat(method); } } diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/threading/ThreadLocalNotStaticFinalInspection.java b/plugins/InspectionGadgets/src/com/siyeh/ig/threading/ThreadLocalNotStaticFinalInspection.java index df7ed165308e..90c60113ec7b 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/ig/threading/ThreadLocalNotStaticFinalInspection.java +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/threading/ThreadLocalNotStaticFinalInspection.java @@ -1,5 +1,5 @@ /* - * Copyright 2009 Bas Leijdekkers + * Copyright 2009-2011 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,11 +16,12 @@ package com.siyeh.ig.threading; import com.intellij.psi.*; -import com.siyeh.InspectionGadgetsBundle;import com.siyeh.ig.BaseInspection; +import com.intellij.psi.util.InheritanceUtil; +import com.siyeh.InspectionGadgetsBundle; +import com.siyeh.ig.BaseInspection; import com.siyeh.ig.BaseInspectionVisitor; import com.siyeh.ig.InspectionGadgetsFix; import com.siyeh.ig.fixes.MakeFieldStaticFinalFix; -import com.siyeh.ig.psiutils.ClassUtils; import org.jetbrains.annotations.Nls; import org.jetbrains.annotations.NotNull; @@ -66,7 +67,7 @@ public class ThreadLocalNotStaticFinalInspection extends BaseInspection { if (aClass == null) { return; } - if (!ClassUtils.isSubclass(aClass, "java.lang.ThreadLocal")) { + if (!InheritanceUtil.isInheritor(aClass, "java.lang.ThreadLocal")) { return; } final PsiModifierList modifierList = field.getModifierList(); diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/threading/ThreadRunInspection.java b/plugins/InspectionGadgets/src/com/siyeh/ig/threading/ThreadRunInspection.java index e5c2edbb5ee3..5e156a0bec18 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/ig/threading/ThreadRunInspection.java +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/threading/ThreadRunInspection.java @@ -1,5 +1,5 @@ /* - * Copyright 2003-2007 Dave Griffith, Bas Leijdekkers + * Copyright 2003-2011 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. @@ -18,6 +18,7 @@ package com.siyeh.ig.threading; import com.intellij.codeInspection.ProblemDescriptor; import com.intellij.openapi.project.Project; import com.intellij.psi.*; +import com.intellij.psi.util.InheritanceUtil; import com.intellij.psi.util.PsiTreeUtil; import com.intellij.util.IncorrectOperationException; import com.siyeh.HardcodedMethodConstants; @@ -25,26 +26,29 @@ import com.siyeh.InspectionGadgetsBundle; import com.siyeh.ig.BaseInspection; import com.siyeh.ig.BaseInspectionVisitor; import com.siyeh.ig.InspectionGadgetsFix; -import com.siyeh.ig.psiutils.ClassUtils; import org.jetbrains.annotations.NotNull; public class ThreadRunInspection extends BaseInspection { + @Override @NotNull public String getDisplayName() { return InspectionGadgetsBundle.message("thread.run.display.name"); } + @Override @NotNull public String getID() { return "CallToThreadRun"; } + @Override @NotNull protected String buildErrorString(Object... infos) { return InspectionGadgetsBundle.message("thread.run.problem.descriptor"); } + @Override public InspectionGadgetsFix buildFix(Object... infos) { return new ThreadRunFix(); } @@ -57,6 +61,7 @@ public class ThreadRunInspection extends BaseInspection { "thread.run.replace.quickfix"); } + @Override public void doFix(@NotNull Project project, ProblemDescriptor descriptor) throws IncorrectOperationException { final PsiElement methodNameIdentifier = descriptor.getPsiElement(); @@ -101,7 +106,7 @@ public class ThreadRunInspection extends BaseInspection { if (methodClass == null) { return; } - if (!ClassUtils.isSubclass(methodClass, "java.lang.Thread")) { + if (!InheritanceUtil.isInheritor(methodClass, "java.lang.Thread")) { return; } if (isInsideThreadRun(expression)) { @@ -125,7 +130,7 @@ public class ThreadRunInspection extends BaseInspection { if (methodClass == null) { return false; } - return ClassUtils.isSubclass(methodClass, "java.lang.Thread"); + return InheritanceUtil.isInheritor(methodClass, "java.lang.Thread"); } } } \ No newline at end of file diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/threading/ThreadStartInConstructionInspection.java b/plugins/InspectionGadgets/src/com/siyeh/ig/threading/ThreadStartInConstructionInspection.java index e1d0f296c0b9..bc55c7d33d94 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/ig/threading/ThreadStartInConstructionInspection.java +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/threading/ThreadStartInConstructionInspection.java @@ -1,5 +1,5 @@ /* - * Copyright 2003-2007 Dave Griffith, Bas Leijdekkers + * Copyright 2003-2011 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,6 +16,7 @@ package com.siyeh.ig.threading; import com.intellij.psi.*; +import com.intellij.psi.util.InheritanceUtil; import com.siyeh.InspectionGadgetsBundle; import com.siyeh.ig.BaseInspection; import com.siyeh.ig.BaseInspectionVisitor; @@ -25,23 +26,27 @@ import org.jetbrains.annotations.NotNull; public class ThreadStartInConstructionInspection extends BaseInspection { + @Override @NotNull public String getID() { return "CallToThreadStartDuringObjectConstruction"; } + @Override @NotNull public String getDisplayName() { return InspectionGadgetsBundle.message( "thread.start.in.construction.display.name"); } + @Override @NotNull public String buildErrorString(Object... infos) { return InspectionGadgetsBundle.message( "thread.start.in.construction.problem.descriptor"); } + @Override public BaseInspectionVisitor buildVisitor() { return new ThreadStartInConstructionVisitor(); } @@ -83,13 +88,14 @@ public class ThreadStartInConstructionInspection extends BaseInspection { if (method == null) { return; } - final PsiParameterList parameterList = method.getParameterList(); + final PsiParameterList parameterList = + method.getParameterList(); if (parameterList.getParametersCount() != 0) { return; } final PsiClass methodClass = method.getContainingClass(); if (methodClass == null || - !ClassUtils.isSubclass(methodClass, + !InheritanceUtil.isInheritor(methodClass, "java.lang.Thread")) { return; } diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/threading/ThreadingUtils.java b/plugins/InspectionGadgets/src/com/siyeh/ig/threading/ThreadingUtils.java index de07d7af82ad..4f0e523165bb 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/ig/threading/ThreadingUtils.java +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/threading/ThreadingUtils.java @@ -1,5 +1,5 @@ /* - * Copyright 2003-2007 Dave Griffith, Bas Leijdekkers + * Copyright 2003-2011 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,20 +16,19 @@ package com.siyeh.ig.threading; import com.intellij.psi.*; -import com.siyeh.ig.psiutils.ClassUtils; +import com.intellij.psi.util.InheritanceUtil; +import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; class ThreadingUtils { - private ThreadingUtils() { - super(); - } + private ThreadingUtils() {} public static boolean isWaitCall( @NotNull PsiMethodCallExpression expression) { final PsiReferenceExpression methodExpression = expression.getMethodExpression(); - final String methodName = methodExpression.getReferenceName(); + @NonNls final String methodName = methodExpression.getReferenceName(); if (!"wait".equals(methodName)) { return false; } @@ -62,7 +61,7 @@ class ThreadingUtils { @NotNull PsiMethodCallExpression expression) { final PsiReferenceExpression methodExpression = expression.getMethodExpression(); - final String methodName = methodExpression.getReferenceName(); + @NonNls final String methodName = methodExpression.getReferenceName(); if (!"notify".equals(methodName) && !"notifyAll".equals(methodName)) { return false; } @@ -75,7 +74,7 @@ class ThreadingUtils { @NotNull PsiMethodCallExpression expression) { final PsiReferenceExpression methodExpression = expression.getMethodExpression(); - final String methodName = methodExpression.getReferenceName(); + @NonNls final String methodName = methodExpression.getReferenceName(); if (!"signal".equals(methodName) && !"signalAll".equals(methodName)) { return false; } @@ -92,15 +91,15 @@ class ThreadingUtils { if (containingClass == null) { return false; } - return ClassUtils.isSubclass(containingClass, - "java.util.concurrent.locks.Condition"); + return InheritanceUtil.isInheritor(containingClass, + "java.util.concurrent.locks.Condition"); } public static boolean isAwaitCall( @NotNull PsiMethodCallExpression expression) { final PsiReferenceExpression methodExpression = expression.getMethodExpression(); - final String methodName = methodExpression.getReferenceName(); + @NonNls final String methodName = methodExpression.getReferenceName(); if (!"await".equals(methodName) && !"awaitUntil".equals(methodName) && !"awaitUninterruptibly".equals(methodName) @@ -115,7 +114,7 @@ class ThreadingUtils { if (containingClass == null) { return false; } - return ClassUtils.isSubclass(containingClass, - "java.util.concurrent.locks.Condition"); + return InheritanceUtil.isInheritor(containingClass, + "java.util.concurrent.locks.Condition"); } } \ No newline at end of file diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/ui/TreeClassChooserAction.java b/plugins/InspectionGadgets/src/com/siyeh/ig/ui/TreeClassChooserAction.java deleted file mode 100644 index 7aeb1b7e8764..000000000000 --- a/plugins/InspectionGadgets/src/com/siyeh/ig/ui/TreeClassChooserAction.java +++ /dev/null @@ -1,109 +0,0 @@ -/* - * Copyright 2010 Bas Leijdekkers - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.siyeh.ig.ui; - -import com.intellij.codeInspection.ui.ListTable; -import com.intellij.codeInspection.ui.ListWrappingTableModel; -import com.intellij.ide.DataManager; -import com.intellij.ide.util.ClassFilter; -import com.intellij.ide.util.TreeClassChooser; -import com.intellij.ide.util.TreeClassChooserFactory; -import com.intellij.openapi.actionSystem.DataContext; -import com.intellij.openapi.actionSystem.DataKeys; -import com.intellij.openapi.project.Project; -import com.intellij.psi.PsiClass; -import com.intellij.psi.search.GlobalSearchScope; -import com.siyeh.InspectionGadgetsBundle; -import com.siyeh.ig.psiutils.ClassUtils; -import org.jetbrains.annotations.NonNls; - -import javax.swing.*; -import java.awt.*; -import java.awt.event.ActionEvent; - -public class TreeClassChooserAction extends AbstractAction { - - private final ListTable table; - private final String chooserTitle; - private final String[] ancestorClasses; - - public TreeClassChooserAction(ListTable table, String chooserTitle, - @NonNls String... ancestorClasses) { - this.table = table; - this.chooserTitle = chooserTitle; - this.ancestorClasses = ancestorClasses; - putValue(NAME, InspectionGadgetsBundle.message("button.add")); - } - - public void actionPerformed(ActionEvent e) { - final DataManager dataManager = DataManager.getInstance(); - final Object source = e.getSource(); - if (!(source instanceof Component)) { - return; - } - final DataContext dataContext = - dataManager.getDataContext((Component) source); - final Project project = DataKeys.PROJECT.getData(dataContext); - if (project == null) { - return; - } - final TreeClassChooserFactory chooserFactory = - TreeClassChooserFactory.getInstance(project); - final ClassFilter filter; - if (ancestorClasses.length == 0) { - filter = ClassFilter.ALL; - } else { - filter = new ClassFilter() { - public boolean isAccepted(PsiClass aClass) { - for (String ancestorClass : ancestorClasses) { - if (ClassUtils.isSubclass(aClass, ancestorClass)) { - return true; - } - } - return false; - } - }; - } - final TreeClassChooser classChooser = - chooserFactory.createWithInnerClassesScopeChooser(chooserTitle, - GlobalSearchScope.allScope(project), filter, null); - classChooser.showDialog(); - final PsiClass selectedClass = classChooser.getSelected(); - if (selectedClass == null) { - return; - } - final String qualifiedName = selectedClass.getQualifiedName(); - final ListWrappingTableModel tableModel = table.getModel(); - final int index = tableModel.indexOf(qualifiedName, 0); - final int rowIndex; - if (index < 0) { - tableModel.addRow(qualifiedName); - rowIndex = tableModel.getRowCount() - 1; - } else { - rowIndex = index; - } - final ListSelectionModel selectionModel = - table.getSelectionModel(); - selectionModel.setSelectionInterval(rowIndex, rowIndex); - EventQueue.invokeLater(new Runnable() { - public void run() { - final Rectangle rectangle = - table.getCellRect(rowIndex, 0, true); - table.scrollRectToVisible(rectangle); - } - }); - } -} diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/ui/UiUtils.java b/plugins/InspectionGadgets/src/com/siyeh/ig/ui/UiUtils.java index a5fe7c1521d5..e6f2efe99e14 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/ig/ui/UiUtils.java +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/ui/UiUtils.java @@ -1,5 +1,5 @@ /* - * Copyright 2010 Bas Leijdekkers + * Copyright 2010-2011 Bas Leijdekkers * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -24,9 +24,9 @@ import com.intellij.openapi.actionSystem.*; import com.intellij.openapi.project.Project; import com.intellij.psi.PsiClass; import com.intellij.psi.search.GlobalSearchScope; +import com.intellij.psi.util.InheritanceUtil; import com.intellij.util.Icons; import com.siyeh.InspectionGadgetsBundle; -import com.siyeh.ig.psiutils.ClassUtils; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; @@ -251,7 +251,7 @@ public class UiUtils { public boolean isAccepted(PsiClass aClass) { for (String ancestorClass : ancestorClasses) { - if (ClassUtils.isSubclass(aClass, ancestorClass)) { + if (InheritanceUtil.isInheritor(aClass, ancestorClass)) { return true; } }