This rule is defined by the following XPath expression:
//ClassOrInterfaceDeclaration[@Nested='false'][ ( count(./ClassOrInterfaceBody/ClassOrInterfaceBodyDeclaration/ConstructorDeclaration)>0 and count(./ClassOrInterfaceBody/ClassOrInterfaceBodyDeclaration/ConstructorDeclaration) = count(./ClassOrInterfaceBody/ClassOrInterfaceBodyDeclaration/ConstructorDeclaration[@Private='true']) ) and count(.//MethodDeclaration[@Static='true'])=0 and count(.//FieldDeclaration[@Private='false'][@Static='true'])=0 ]
Example:
/* This class is unusable, since it cannot be instantiated (private constructor), and no static method can be called. */ public class Foo { private Foo() {} void foo() {} }