Note: there seems to be a big bug in Checkstyle and it seems that it's currently counting java.lang classes even though it should not. See https://sourceforge.net/tracker/?func=detail&aid=3575496&group_id=29721&atid=397078 which I have just opened.
I propose that while waiting for this bug to be fixed we use a specific checkstyle exclude *only for this check* when needed and put in comment TODO to remove it when https://sourceforge.net/tracker/?func=detail&aid=3575496&group_id=29721&atid=397078 is fixed. Thanks -Vincent On Sep 10, 2012, at 4:59 PM, Vincent Massol <[email protected]> wrote: > Hi devs, > > I wanted to understand how Checkstyle computes the Class Fan out so I > debugged it. > > Here are my findings: > > * Some classes are excluded by default: > > mIgnoredClassNames.add("boolean"); > mIgnoredClassNames.add("byte"); > mIgnoredClassNames.add("char"); > mIgnoredClassNames.add("double"); > mIgnoredClassNames.add("float"); > mIgnoredClassNames.add("int"); > mIgnoredClassNames.add("long"); > mIgnoredClassNames.add("short"); > mIgnoredClassNames.add("void"); > mIgnoredClassNames.add("Boolean"); > mIgnoredClassNames.add("Byte"); > mIgnoredClassNames.add("Character"); > mIgnoredClassNames.add("Double"); > mIgnoredClassNames.add("Float"); > mIgnoredClassNames.add("Integer"); > mIgnoredClassNames.add("Long"); > mIgnoredClassNames.add("Object"); > mIgnoredClassNames.add("Short"); > mIgnoredClassNames.add("String"); > mIgnoredClassNames.add("StringBuffer"); > mIgnoredClassNames.add("Void"); > mIgnoredClassNames.add("ArrayIndexOutOfBoundsException"); > mIgnoredClassNames.add("Exception"); > mIgnoredClassNames.add("RuntimeException"); > mIgnoredClassNames.add("IllegalArgumentException"); > mIgnoredClassNames.add("IllegalStateException"); > mIgnoredClassNames.add("IndexOutOfBoundsException"); > mIgnoredClassNames.add("NullPointerException"); > mIgnoredClassNames.add("Throwable"); > mIgnoredClassNames.add("SecurityException"); > mIgnoredClassNames.add("UnsupportedOperationException"); > > * All classes in java.lang.* are excluded too > * Annotation classes are not counted > * Classes in the same package are counted (they won't appear in import since > it's in the same package so don't count imports to get class fan out) > * Static method calls are not counted. So for example StringUtils from > Commons Lang never counts for class Fan out > * Enums are not counted (no new XXX() done. That's why static method calls > are not counted too BTW) > * Classes used in class extend or implement are not counted too. > > Hope it helps > -Vincent > _______________________________________________ devs mailing list [email protected] http://lists.xwiki.org/mailman/listinfo/devs

