From efe3fafe447ec9b5737f6429f860fb4a8edd99f0 Mon Sep 17 00:00:00 2001 From: Dave Griffith Date: Thu, 17 Feb 2005 23:25:07 +0300 Subject: [PATCH] (no message) --- .../com/siyeh/ig/InspectionGadgetsPlugin.java | 1 + .../ig/jdk/AnnotationClassInspection.java | 43 ++++++ .../siyeh/ig/jdk/AnnotationInspection.java | 67 ++++++++++ .../siyeh/ig/jdk/AssertAsNameInspection.java | 123 +++++++++++++++++ .../ig/jdk/AssertStatementInspection.java | 41 ++++++ .../siyeh/ig/jdk/EnumAsNameInspection.java | 124 ++++++++++++++++++ .../com/siyeh/ig/jdk/EnumClassInspection.java | 43 ++++++ .../ig/jdk/ForeachStatementInspection.java | 39 ++++++ .../ig/jdk/VarargParameterInspection.java | 54 ++++++++ 9 files changed, 535 insertions(+) create mode 100644 plugins/InspectionGadgets/src/com/siyeh/ig/jdk/AnnotationClassInspection.java create mode 100644 plugins/InspectionGadgets/src/com/siyeh/ig/jdk/AnnotationInspection.java create mode 100644 plugins/InspectionGadgets/src/com/siyeh/ig/jdk/AssertAsNameInspection.java create mode 100644 plugins/InspectionGadgets/src/com/siyeh/ig/jdk/AssertStatementInspection.java create mode 100644 plugins/InspectionGadgets/src/com/siyeh/ig/jdk/EnumAsNameInspection.java create mode 100644 plugins/InspectionGadgets/src/com/siyeh/ig/jdk/EnumClassInspection.java create mode 100644 plugins/InspectionGadgets/src/com/siyeh/ig/jdk/ForeachStatementInspection.java create mode 100644 plugins/InspectionGadgets/src/com/siyeh/ig/jdk/VarargParameterInspection.java diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/InspectionGadgetsPlugin.java b/plugins/InspectionGadgets/src/com/siyeh/ig/InspectionGadgetsPlugin.java index e3abd374887b..e6a696ee9e1d 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/ig/InspectionGadgetsPlugin.java +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/InspectionGadgetsPlugin.java @@ -43,6 +43,7 @@ import com.siyeh.ig.style.*; import com.siyeh.ig.threading.*; import com.siyeh.ig.verbose.*; import com.siyeh.ig.visibility.*; +import com.siyeh.ig.jdk.*; import java.io.*; import java.util.ArrayList; diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/jdk/AnnotationClassInspection.java b/plugins/InspectionGadgets/src/com/siyeh/ig/jdk/AnnotationClassInspection.java new file mode 100644 index 000000000000..8b650ac8babe --- /dev/null +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/jdk/AnnotationClassInspection.java @@ -0,0 +1,43 @@ +package com.siyeh.ig.jdk; + +import com.intellij.codeInspection.InspectionManager; +import com.intellij.psi.PsiClass; +import com.intellij.psi.PsiElement; +import com.siyeh.ig.BaseInspection; +import com.siyeh.ig.BaseInspectionVisitor; +import com.siyeh.ig.ClassInspection; +import com.siyeh.ig.GroupNames; + +public class AnnotationClassInspection extends ClassInspection { + + public String getDisplayName() { + return "Annotation class"; + } + + public String getGroupDisplayName() { + return GroupNames.JDK_GROUP_NAME; + } + + public String buildErrorString(PsiElement location) { + return "Annotation class '#ref' #loc"; + } + + public BaseInspectionVisitor createVisitor(InspectionManager inspectionManager, boolean onTheFly) { + return new AnnotationClassVisitor(this, inspectionManager, onTheFly); + } + + private static class AnnotationClassVisitor extends BaseInspectionVisitor { + private AnnotationClassVisitor(BaseInspection inspection, InspectionManager inspectionManager, boolean isOnTheFly) { + super(inspection, inspectionManager, isOnTheFly); + } + + public void visitClass(PsiClass aClass) { + if (!aClass.isAnnotationType()) { + return; + } + registerClassError(aClass); + } + + } + +} \ No newline at end of file diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/jdk/AnnotationInspection.java b/plugins/InspectionGadgets/src/com/siyeh/ig/jdk/AnnotationInspection.java new file mode 100644 index 000000000000..ea852c2fd7d0 --- /dev/null +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/jdk/AnnotationInspection.java @@ -0,0 +1,67 @@ +package com.siyeh.ig.jdk; + +import com.intellij.codeInspection.InspectionManager; +import com.intellij.codeInspection.ProblemDescriptor; +import com.intellij.psi.*; +import com.siyeh.ig.BaseInspection; +import com.siyeh.ig.BaseInspectionVisitor; +import com.siyeh.ig.GroupNames; + +public class AnnotationInspection extends BaseInspection { + + public String getDisplayName() { + return "Annotation"; + } + + public String getGroupDisplayName() { + return GroupNames.JDK_GROUP_NAME; + } + + public ProblemDescriptor[] checkClass(PsiClass aClass, InspectionManager mgr, boolean isOnTheFly) { + if (!aClass.isPhysical()) { + return super.checkClass(aClass, mgr, isOnTheFly); + } + final BaseInspectionVisitor visitor = createVisitor(mgr, isOnTheFly); + aClass.accept(visitor); + + return visitor.getErrors(); + } + + public ProblemDescriptor[] checkMethod(PsiMethod method, InspectionManager mgr, boolean isOnTheFly) { + if (!method.isPhysical()) { + return super.checkMethod(method, mgr, isOnTheFly); + } + final BaseInspectionVisitor visitor = createVisitor(mgr, isOnTheFly); + method.accept(visitor); + return visitor.getErrors(); + } + + public ProblemDescriptor[] checkField(PsiField field, InspectionManager mgr, boolean isOnTheFly) { + if (!field.isPhysical()) { + return super.checkField(field, mgr, isOnTheFly); + } + final BaseInspectionVisitor visitor = createVisitor(mgr, isOnTheFly); + field.accept(visitor); + return visitor.getErrors(); + } + + public String buildErrorString(PsiElement location) { + return "Annotation '#ref' #loc"; + } + + public BaseInspectionVisitor createVisitor(InspectionManager inspectionManager, boolean onTheFly) { + return new UnnecessaryInterfaceModifierVisitor(this, inspectionManager, onTheFly); + } + + private static class UnnecessaryInterfaceModifierVisitor extends BaseInspectionVisitor { + + private UnnecessaryInterfaceModifierVisitor(BaseInspection inspection, InspectionManager inspectionManager, boolean isOnTheFly) { + super(inspection, inspectionManager, isOnTheFly); + } + + public void visitAnnotation(PsiAnnotation annotation) { + super.visitAnnotation(annotation); + registerError(annotation); + } + } +} diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/jdk/AssertAsNameInspection.java b/plugins/InspectionGadgets/src/com/siyeh/ig/jdk/AssertAsNameInspection.java new file mode 100644 index 000000000000..0da541cf636a --- /dev/null +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/jdk/AssertAsNameInspection.java @@ -0,0 +1,123 @@ +package com.siyeh.ig.jdk; + +import com.intellij.codeInspection.InspectionManager; +import com.intellij.codeInspection.ProblemDescriptor; +import com.intellij.psi.*; +import com.siyeh.ig.*; +import com.siyeh.ig.fixes.RenameFix; + +public class AssertAsNameInspection extends BaseInspection { + private final RenameFix fix = new RenameFix(); + + public String getDisplayName() { + return "Use of 'assert' as identifier"; + } + + public String getGroupDisplayName() { + return GroupNames.JDK_GROUP_NAME; + } + + public String buildErrorString(PsiElement location) { + return "Use of '#ref' as identifier #loc"; + } + + protected InspectionGadgetsFix buildFix(PsiElement location) { + return fix; + } + + public ProblemDescriptor[] checkClass(PsiClass aClass, InspectionManager mgr, boolean isOnTheFly) { + if (aClass instanceof PsiAnonymousClass) { + return super.checkClass(aClass, mgr, isOnTheFly); + } + final BaseInspectionVisitor visitor = createVisitor(mgr, isOnTheFly); + aClass.accept(visitor); + return visitor.getErrors(); + } + + public ProblemDescriptor[] checkMethod(PsiMethod method, InspectionManager mgr, boolean isOnTheFly) { + final PsiClass containingClass = method.getContainingClass(); + if (containingClass == null) { + return super.checkMethod(method, mgr, isOnTheFly); + } + if (!containingClass.isPhysical()) { + return super.checkMethod(method, mgr, isOnTheFly); + } + + if (containingClass instanceof PsiAnonymousClass) { + return super.checkClass(containingClass, mgr, isOnTheFly); + } + final BaseInspectionVisitor visitor = createVisitor(mgr, isOnTheFly); + method.accept(visitor); + return visitor.getErrors(); + } + + public ProblemDescriptor[] checkField(PsiField field, InspectionManager mgr, boolean isOnTheFly) { + final PsiClass containingClass = field.getContainingClass(); + if (containingClass == null) { + return super.checkField(field, mgr, isOnTheFly); + } + if (!containingClass.isPhysical()) { + return super.checkField(field, mgr, isOnTheFly); + } + if (containingClass instanceof PsiAnonymousClass) { + return super.checkClass(containingClass, mgr, isOnTheFly); + } + final BaseInspectionVisitor visitor = createVisitor(mgr, isOnTheFly); + field.accept(visitor); + return visitor.getErrors(); + } + + public BaseInspectionVisitor createVisitor(InspectionManager inspectionManager, boolean onTheFly) { + return new AssertAsNameVisitor(this, inspectionManager, onTheFly); + } + + private static class AssertAsNameVisitor extends BaseInspectionVisitor { + private static final String ASSERT_STRING = "assert"; + + private AssertAsNameVisitor(BaseInspection inspection, InspectionManager inspectionManager, boolean isOnTheFly) { + super(inspection, inspectionManager, isOnTheFly); + } + + public void visitVariable(PsiVariable variable) { + super.visitVariable(variable); + final String variableName = variable.getName(); + if (!ASSERT_STRING.equals(variableName)) { + return; + } + registerVariableError(variable); + } + + public void visitMethod(PsiMethod method) { + super.visitMethod(method); + final String name = method.getName(); + if (!ASSERT_STRING.equals(name)) { + return; + } + registerMethodError(method); + } + + public void visitClass(PsiClass aClass) { + //note: no call to super, to avoid drill-down + final String name = aClass.getName(); + if (!ASSERT_STRING.equals(name)) { + return; + } + final PsiTypeParameterList params = aClass.getTypeParameterList(); + if (params != null) { + params.accept(this); + } + registerClassError(aClass); + } + + + public void visitTypeParameter(PsiTypeParameter parameter) { + super.visitTypeParameter(parameter); + final String name = parameter.getName(); + if (!ASSERT_STRING.equals(name)) { + return; + } + registerTypeParameterError(parameter); + } + } + +} diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/jdk/AssertStatementInspection.java b/plugins/InspectionGadgets/src/com/siyeh/ig/jdk/AssertStatementInspection.java new file mode 100644 index 000000000000..252966e1a7ed --- /dev/null +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/jdk/AssertStatementInspection.java @@ -0,0 +1,41 @@ +package com.siyeh.ig.jdk; + +import com.intellij.codeInspection.InspectionManager; +import com.intellij.psi.PsiAssertStatement; +import com.intellij.psi.PsiElement; +import com.siyeh.ig.BaseInspection; +import com.siyeh.ig.BaseInspectionVisitor; +import com.siyeh.ig.GroupNames; +import com.siyeh.ig.StatementInspection; + +public class AssertStatementInspection extends StatementInspection { + + public String getDisplayName() { + return "'assert' statement"; + } + + public String getGroupDisplayName() { + return GroupNames.JDK_GROUP_NAME; + } + + public String buildErrorString(PsiElement location) { + return "'#ref' statement #loc"; + } + + public BaseInspectionVisitor createVisitor(InspectionManager inspectionManager, boolean onTheFly) { + return new AssertStatementVisitor(this, inspectionManager, onTheFly); + } + + private static class AssertStatementVisitor extends BaseInspectionVisitor { + private AssertStatementVisitor(BaseInspection inspection, InspectionManager inspectionManager, boolean isOnTheFly) { + super(inspection, inspectionManager, isOnTheFly); + } + + public void visitAssertStatement(PsiAssertStatement statement) { + super.visitAssertStatement(statement); + registerStatementError(statement); + } + + } + +} \ No newline at end of file diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/jdk/EnumAsNameInspection.java b/plugins/InspectionGadgets/src/com/siyeh/ig/jdk/EnumAsNameInspection.java new file mode 100644 index 000000000000..d15d704acf72 --- /dev/null +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/jdk/EnumAsNameInspection.java @@ -0,0 +1,124 @@ +package com.siyeh.ig.jdk; + +import com.intellij.codeInspection.InspectionManager; +import com.intellij.codeInspection.ProblemDescriptor; +import com.intellij.psi.*; +import com.siyeh.ig.*; +import com.siyeh.ig.fixes.RenameFix; + +public class EnumAsNameInspection extends BaseInspection { + private static final String ENUM_STRING = "enum"; + + private final RenameFix fix = new RenameFix(); + + public String getDisplayName() { + return "Use of 'enum' as identifier"; + } + + public String getGroupDisplayName() { + return GroupNames.JDK_GROUP_NAME; + } + + public String buildErrorString(PsiElement location) { + return "Use of '#ref' as identifier #loc"; + } + + protected InspectionGadgetsFix buildFix(PsiElement location) { + return fix; + } + + public ProblemDescriptor[] checkClass(PsiClass aClass, InspectionManager mgr, boolean isOnTheFly) { + if (aClass instanceof PsiAnonymousClass) { + return super.checkClass(aClass, mgr, isOnTheFly); + } + final BaseInspectionVisitor visitor = createVisitor(mgr, isOnTheFly); + aClass.accept(visitor); + return visitor.getErrors(); + } + + public ProblemDescriptor[] checkMethod(PsiMethod method, InspectionManager mgr, boolean isOnTheFly) { + final PsiClass containingClass = method.getContainingClass(); + if (containingClass == null) { + return super.checkMethod(method, mgr, isOnTheFly); + } + if (!containingClass.isPhysical()) { + return super.checkMethod(method, mgr, isOnTheFly); + } + + if (containingClass instanceof PsiAnonymousClass) { + return super.checkClass(containingClass, mgr, isOnTheFly); + } + final BaseInspectionVisitor visitor = createVisitor(mgr, isOnTheFly); + method.accept(visitor); + return visitor.getErrors(); + } + + public ProblemDescriptor[] checkField(PsiField field, InspectionManager mgr, boolean isOnTheFly) { + final PsiClass containingClass = field.getContainingClass(); + if (containingClass == null) { + return super.checkField(field, mgr, isOnTheFly); + } + if (!containingClass.isPhysical()) { + return super.checkField(field, mgr, isOnTheFly); + } + if (containingClass instanceof PsiAnonymousClass) { + return super.checkClass(containingClass, mgr, isOnTheFly); + } + + final BaseInspectionVisitor visitor = createVisitor(mgr, isOnTheFly); + field.accept(visitor); + return visitor.getErrors(); + } + + public BaseInspectionVisitor createVisitor(InspectionManager inspectionManager, boolean onTheFly) { + return new EnumAsNameVisitor(this, inspectionManager, onTheFly); + } + + private static class EnumAsNameVisitor extends BaseInspectionVisitor { + + private EnumAsNameVisitor(BaseInspection inspection, InspectionManager inspectionManager, boolean isOnTheFly) { + super(inspection, inspectionManager, isOnTheFly); + } + + public void visitVariable(PsiVariable variable) { + super.visitVariable(variable); + final String variableName = variable.getName(); + if (!ENUM_STRING.equals(variableName)) { + return; + } + registerVariableError(variable); + } + + public void visitMethod(PsiMethod method) { + super.visitMethod(method); + final String name = method.getName(); + if (!ENUM_STRING.equals(name)) { + return; + } + registerMethodError(method); + } + + public void visitClass(PsiClass aClass) { + //note: no call to super, to avoid drill-down + final String name = aClass.getName(); + if (!ENUM_STRING.equals(name)) { + return; + } + final PsiTypeParameterList params = aClass.getTypeParameterList(); + if (params != null) { + params.accept(this); + } + registerClassError(aClass); + } + + public void visitTypeParameter(PsiTypeParameter parameter) { + super.visitTypeParameter(parameter); + final String name = parameter.getName(); + if (!ENUM_STRING.equals(name)) { + return; + } + registerTypeParameterError(parameter); + } + } + +} diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/jdk/EnumClassInspection.java b/plugins/InspectionGadgets/src/com/siyeh/ig/jdk/EnumClassInspection.java new file mode 100644 index 000000000000..cd7961f4e47d --- /dev/null +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/jdk/EnumClassInspection.java @@ -0,0 +1,43 @@ +package com.siyeh.ig.jdk; + +import com.intellij.codeInspection.InspectionManager; +import com.intellij.psi.PsiClass; +import com.intellij.psi.PsiElement; +import com.siyeh.ig.BaseInspection; +import com.siyeh.ig.BaseInspectionVisitor; +import com.siyeh.ig.ClassInspection; +import com.siyeh.ig.GroupNames; + +public class EnumClassInspection extends ClassInspection { + + public String getDisplayName() { + return "Enumerated class"; + } + + public String getGroupDisplayName() { + return GroupNames.JDK_GROUP_NAME; + } + + public String buildErrorString(PsiElement location) { + return "Enumerated class '#ref' #loc"; + } + + public BaseInspectionVisitor createVisitor(InspectionManager inspectionManager, boolean onTheFly) { + return new EnumClassVisitor(this, inspectionManager, onTheFly); + } + + private static class EnumClassVisitor extends BaseInspectionVisitor { + private EnumClassVisitor(BaseInspection inspection, InspectionManager inspectionManager, boolean isOnTheFly) { + super(inspection, inspectionManager, isOnTheFly); + } + + public void visitClass(PsiClass aClass) { + if (!aClass.isEnum()) { + return; + } + registerClassError(aClass); + } + + } + +} \ No newline at end of file diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/jdk/ForeachStatementInspection.java b/plugins/InspectionGadgets/src/com/siyeh/ig/jdk/ForeachStatementInspection.java new file mode 100644 index 000000000000..2ec8755ec2ff --- /dev/null +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/jdk/ForeachStatementInspection.java @@ -0,0 +1,39 @@ +package com.siyeh.ig.jdk; + +import com.intellij.codeInspection.InspectionManager; +import com.intellij.psi.PsiElement; +import com.intellij.psi.PsiForeachStatement; +import com.siyeh.ig.BaseInspection; +import com.siyeh.ig.BaseInspectionVisitor; +import com.siyeh.ig.GroupNames; +import com.siyeh.ig.StatementInspection; + +public class ForeachStatementInspection extends StatementInspection { + + public String getDisplayName() { + return "Extended 'for' statement"; + } + + public String getGroupDisplayName() { + return GroupNames.JDK_GROUP_NAME; + } + + public String buildErrorString(PsiElement location) { + return "'Extended #ref' statement #loc"; + } + + public BaseInspectionVisitor createVisitor(InspectionManager inspectionManager, boolean onTheFly) { + return new ForeachStatementVisitor(this, inspectionManager, onTheFly); + } + + private static class ForeachStatementVisitor extends BaseInspectionVisitor { + private ForeachStatementVisitor(BaseInspection inspection, InspectionManager inspectionManager, boolean isOnTheFly) { + super(inspection, inspectionManager, isOnTheFly); + } + + public void visitForeachStatement(PsiForeachStatement statement) { + super.visitForeachStatement(statement); + registerStatementError(statement); + } + } +} \ No newline at end of file diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/jdk/VarargParameterInspection.java b/plugins/InspectionGadgets/src/com/siyeh/ig/jdk/VarargParameterInspection.java new file mode 100644 index 000000000000..53d4d5ac6a9b --- /dev/null +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/jdk/VarargParameterInspection.java @@ -0,0 +1,54 @@ +package com.siyeh.ig.jdk; + +import com.intellij.codeInspection.InspectionManager; +import com.intellij.psi.*; +import com.siyeh.ig.BaseInspection; +import com.siyeh.ig.BaseInspectionVisitor; +import com.siyeh.ig.GroupNames; +import com.siyeh.ig.StatementInspection; + +public class VarargParameterInspection extends StatementInspection { + + public String getDisplayName() { + return "Variable argument method"; + } + + public String getGroupDisplayName() { + return GroupNames.JDK_GROUP_NAME; + } + + public String buildErrorString(PsiElement location) { + return "Variable argument method '#ref' #loc"; + } + + public BaseInspectionVisitor createVisitor(InspectionManager inspectionManager, boolean onTheFly) { + return new VarargParameterVisitor(this, inspectionManager, onTheFly); + } + + private static class VarargParameterVisitor extends BaseInspectionVisitor { + private VarargParameterVisitor(BaseInspection inspection, InspectionManager inspectionManager, boolean isOnTheFly) { + super(inspection, inspectionManager, isOnTheFly); + } + + public void visitMethod(PsiMethod method) { + super.visitMethod(method); + final PsiParameterList parameterList = method.getParameterList(); + if (parameterList == null) { + return; + } + final PsiParameter[] parameters = parameterList.getParameters(); + if (parameters == null) { + return; + } + for (int i = 0; i < parameters.length; i++) { + final PsiParameter parameter = parameters[i]; + if (parameter.isVarArgs()) { + registerMethodError(method); + return; + } + } + } + + } + +} \ No newline at end of file