Design Checks

DesignForExtension Checks that classes are designed for extension (subclass creation).
FinalClass Ensures that identifies classes that can be effectively declared as final are explicitly marked as final.
HideUtilityClassConstructor Makes sure that utility classes (classes that contain only static methods or fields in their API) do not have a public constructor.
InnerTypeLast Checks nested (internal) classes/interfaces are declared at the bottom of the primary (top-level) class after all init and static init blocks, method, constructor and field declarations.
InterfaceIsType Implements Joshua Bloch, Effective Java, Item 17 - Use Interfaces only to define types.
MutableException Ensures that exception classes (classes with names conforming to some pattern and explicitly extending classes with names conforming to other pattern) are immutable, that is, that they have only final fields.
OneTopLevelClass Checks that each top-level class, interface, enum or annotation resides in a source file of its own.
ThrowsCount Restricts throws statements to a specified count.
VisibilityModifier Checks visibility of class members.