
Field can be moved to subclass
Method can be moved to subclass
Method may be moved to inner class
Cyclic class initialization
Fields from subclasses can be merged into superclass
Methods from subclasses can be merged into superclass
Unnecessary interface
Unnecessary abstract class
Pure delegation
Method too small
Incohesive class
Incohesive package
Incohesive module
Tangled class
Tangled package
Tangled module
Class not dependent on its module
Method always returns constant (and thus may be an annotation)
Method whose return value is always ignored
Parameter may be interface
Field may be interface
Local variable may be interface
   --Local inspection
   --Look for local variables whose type is a concrete class which implements an interface
   --Test every access of the variable, and see if it the expected type is
   --Generics make thes
Method return may be interface
   --Look for methods whose return value is a concrete class which implements
     an interface
   --Test every call to that method (or siblings), and see if the expected type
     of the call is that interface
Field always cast
Parameter always cast
Local variable always cast
Method return always cast
Subclass never accessed as superclass


Class not dependent on its package
Class with too many dependencies
Class with too many dependents
Class with too many transitive dependencies
Class with too many transitive dependets
Cyclic class dependency
Cyclic package dependency
Package with too many classes
Package with too few classes
Module with too many classes
Module with too few classes
Package in multiple modules
Package naming convention
Top-level package name not domain
