diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/classmetrics/AnonymousClassComplexityInspection.java b/plugins/InspectionGadgets/src/com/siyeh/ig/classmetrics/AnonymousClassComplexityInspection.java index afb12b19a16b..9f102ac3cd30 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/ig/classmetrics/AnonymousClassComplexityInspection.java +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/classmetrics/AnonymousClassComplexityInspection.java @@ -1,5 +1,5 @@ /* - * Copyright 2003-2008 Dave Griffith, Bas Leijdekkers + * Copyright 2003-2010 Dave Griffith, Bas Leijdekkers * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -27,34 +27,41 @@ public class AnonymousClassComplexityInspection private static final int DEFAULT_COMPLEXITY_LIMIT = 3; + @Override @NotNull public String getID() { return "OverlyComplexAnonymousInnerClass"; } + @Override @NotNull public String getDisplayName() { return InspectionGadgetsBundle.message( "overly.complex.anonymous.inner.class.display.name"); } + @Override protected int getDefaultLimit() { return DEFAULT_COMPLEXITY_LIMIT; } + @Override protected String getConfigurationLabel() { return InspectionGadgetsBundle.message( "cyclomatic.complexity.limit.option"); } + @Override protected InspectionGadgetsFix buildFix(Object... infos) { return new MoveAnonymousToInnerClassFix(); } + @Override protected boolean buildQuickFixesOnlyForOnTheFlyErrors() { return true; } + @Override @NotNull public String buildErrorString(Object... infos) { final Integer totalComplexity = (Integer)infos[0]; @@ -63,6 +70,7 @@ public class AnonymousClassComplexityInspection totalComplexity); } + @Override public BaseInspectionVisitor buildVisitor() { return new ClassComplexityVisitor(); } @@ -73,7 +81,11 @@ public class AnonymousClassComplexityInspection // no call to super, to prevent double counting } - @Override public void visitAnonymousClass(@NotNull PsiAnonymousClass aClass) { + @Override public void visitAnonymousClass( + @NotNull PsiAnonymousClass aClass) { + if (aClass instanceof PsiEnumConstantInitializer) { + return; + } final int totalComplexity = calculateTotalComplexity(aClass); if (totalComplexity <= getLimit()) { return; @@ -95,7 +107,7 @@ public class AnonymousClassComplexityInspection final ComplexityVisitor visitor = new ComplexityVisitor(); int complexity = 0; final PsiClassInitializer[] initializers = aClass.getInitializers(); - for(final PsiClassInitializer initializer : initializers){ + for (final PsiClassInitializer initializer : initializers) { visitor.reset(); initializer.accept(visitor); complexity += visitor.getComplexity(); @@ -106,7 +118,7 @@ public class AnonymousClassComplexityInspection private int calculateComplexityForMethods(PsiMethod[] methods) { final ComplexityVisitor visitor = new ComplexityVisitor(); int complexity = 0; - for(final PsiMethod method : methods){ + for (final PsiMethod method : methods) { visitor.reset(); method.accept(visitor); complexity += visitor.getComplexity(); diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/classmetrics/AnonymousClassMethodCountInspection.java b/plugins/InspectionGadgets/src/com/siyeh/ig/classmetrics/AnonymousClassMethodCountInspection.java index 78cc43002354..6876432d839f 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/ig/classmetrics/AnonymousClassMethodCountInspection.java +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/classmetrics/AnonymousClassMethodCountInspection.java @@ -1,5 +1,5 @@ /* - * Copyright 2003-2008 Dave Griffith, Bas Leijdekkers + * Copyright 2003-2010 Dave Griffith, Bas Leijdekkers * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -17,6 +17,7 @@ package com.siyeh.ig.classmetrics; import com.intellij.psi.PsiAnonymousClass; import com.intellij.psi.PsiClass; +import com.intellij.psi.PsiEnumConstantInitializer; import com.intellij.psi.PsiMethod; import com.siyeh.InspectionGadgetsBundle; import com.siyeh.ig.BaseInspectionVisitor; @@ -29,33 +30,40 @@ public class AnonymousClassMethodCountInspection private static final int DEFAULT_METHOD_COUNT_LIMIT = 1; + @Override @NotNull public String getID(){ return "AnonymousInnerClassWithTooManyMethods"; } + @Override @NotNull public String getDisplayName() { return InspectionGadgetsBundle.message( "anonymous.inner.class.with.too.many.methods.display.name"); } + @Override protected int getDefaultLimit() { return DEFAULT_METHOD_COUNT_LIMIT; } + @Override protected String getConfigurationLabel() { return InspectionGadgetsBundle.message("method.count.limit.option"); } + @Override protected InspectionGadgetsFix buildFix(Object... infos) { return new MoveAnonymousToInnerClassFix(); } + @Override protected boolean buildQuickFixesOnlyForOnTheFlyErrors() { return true; } + @Override @NotNull public String buildErrorString(Object... infos) { final Integer count = (Integer)infos[0]; @@ -64,6 +72,7 @@ public class AnonymousClassMethodCountInspection count); } + @Override public BaseInspectionVisitor buildVisitor() { return new AnonymousClassMethodCountVisitor(); } @@ -75,7 +84,11 @@ public class AnonymousClassMethodCountInspection // no call to super, to prevent double counting } - @Override public void visitAnonymousClass(@NotNull PsiAnonymousClass aClass) { + @Override public void visitAnonymousClass( + @NotNull PsiAnonymousClass aClass) { + if (aClass instanceof PsiEnumConstantInitializer) { + return; + } final int totalMethodCount = calculateTotalMethodCount(aClass); if (totalMethodCount <= getLimit()) { return; @@ -86,8 +99,8 @@ public class AnonymousClassMethodCountInspection private int calculateTotalMethodCount(PsiClass aClass) { final PsiMethod[] methods = aClass.getMethods(); int totalCount = 0; - for(final PsiMethod method : methods){ - if(!method.isConstructor()){ + for (final PsiMethod method : methods) { + if (!method.isConstructor()) { totalCount++; } }