ClassFanOutComplexity should treat annotations and enums as classes (bug 1109205)

This commit is contained in:
Oleg Sukhodolsky 2005-02-10 11:23:51 +00:00
parent cbe261351b
commit 08a286dbec
5 changed files with 40 additions and 0 deletions

View File

@ -129,6 +129,8 @@ public abstract class AbstractClassCouplingCheck extends Check
break;
case TokenTypes.CLASS_DEF:
case TokenTypes.INTERFACE_DEF:
case TokenTypes.ANNOTATION_DEF:
case TokenTypes.ENUM_DEF:
visitClassDef(aAST);
break;
case TokenTypes.TYPE:
@ -151,6 +153,8 @@ public abstract class AbstractClassCouplingCheck extends Check
switch (aAST.getType()) {
case TokenTypes.CLASS_DEF:
case TokenTypes.INTERFACE_DEF:
case TokenTypes.ANNOTATION_DEF:
case TokenTypes.ENUM_DEF:
leaveClassDef();
break;
default:

View File

@ -46,9 +46,11 @@ public final class ClassFanOutComplexityCheck extends AbstractClassCouplingCheck
TokenTypes.PACKAGE_DEF,
TokenTypes.CLASS_DEF,
TokenTypes.INTERFACE_DEF,
TokenTypes.ENUM_DEF,
TokenTypes.TYPE,
TokenTypes.LITERAL_NEW,
TokenTypes.LITERAL_THROWS,
TokenTypes.ANNOTATION_DEF,
};
}

View File

@ -0,0 +1,20 @@
// someexamples of 1.5 extensions
@interface MyAnnotation {
String name();
}
@MyAnnotation(name = "ABC")
public class Input15Extensions
{
}
enum Enum1
{
A, B, C;
Enum1() {}
public String toString() {
return ""; //some custom implementation
}
}

View File

@ -18,4 +18,15 @@ public class ClassFanOutComplexityCheckTest extends BaseCheckTestCase {
verify(checkConfig, getPath("metrics" + File.separator +"ClassCouplingCheckTestInput.java"), expected);
}
public void test15() throws Exception {
DefaultConfiguration checkConfig = createCheckConfig(ClassFanOutComplexityCheck.class);
checkConfig.addAttribute("max", "0");
String[] expected = {
};
verify(checkConfig, getPath("Input15Extensions.java"), expected);
}
}

View File

@ -69,6 +69,9 @@
<li>ModifiedControlVariable check changed to work with for-each
correctly (1101851)</li>
<li>Annotations and enums are classes too and should be treated so by
ClassFanOutComplexity checks (bug 1109205)</li>
</ul>