EA-19923 (CCE: MoveAnonymousToInnerClassFix.doFix)

This commit is contained in:
Bas Leijdekkers
2010-04-13 19:39:25 +02:00
parent b3d2617888
commit b5eec5c4cd
2 changed files with 33 additions and 8 deletions
@@ -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();
@@ -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++;
}
}