Inheritance issues
- Abstract class extends concrete class
Reports abstract classes that extend concrete classes.
- Abstract class which has no concrete subclass
Reports abstract classes that have no concrete subclasses.
- Abstract class without 'abstract' methods
Reports abstract classes that have no abstract methods.
- Abstract method overrides abstract method
Reports abstract methods that override abstract methods.
- Abstract method overrides concrete method
Reports abstract methods that override concrete super methods.
- Abstract method with missing implementations
Reports abstract methods that are not implemented in every concrete subclass.
- Class explicitly extends a 'Collection' class
Reports classes that extend concrete subclasses of the java.util.Collection or java.util.Map classes.
- Class extends annotation interface
Reports classes declared as an implementation or extension of an annotation interface.
- Class extends utility class
Reports classes that extend a utility class.
- Class may extend a commonly used base class
Reports classes or interfaces that can be replaced with an implementation or extension of a more specific commonly used class or interface.
- Final declaration can't be overridden at runtime
Reports cases when your code prevents a class from being subclassed by some framework (for example, Spring or Hibernate) at runtime.
- Interface which has no concrete subclass
Reports interfaces that have no concrete subclasses.
- Method does not call super method
Reports methods that override a super method without calling it.
- Method is identical to its super method
Reports methods that are identical to their super methods.
- Missing '@Override' annotation
Reports methods overriding superclass methods but are not annotated with @java.lang.Override.
- Non-varargs method overrides varargs method
Reports methods that override a variable arity (a.k.a.
- Parameter type prevents overriding
Reports parameter types of a subclass method that have the same name as the parameter type of the corresponding super method but belong to a different package.
- Public constructor in abstract class
Reports public constructors of abstract classes.
- Redundant interface declaration
Reports interfaces in a class' implements list or an interface's extends list that are already implemented by a superclass or extended by a superinterface.
- Static inheritance
Reports interfaces that are implemented only to provide access to constants.
- Type parameter extends 'final' class
Reports type parameters declared to extend a final class.