Class ConstantNameCheck

  • All Implemented Interfaces:
    Configurable, Contextualizable

    public class ConstantNameCheck
    extends AbstractAccessControlNameCheck

    Checks that constant names conform to a specified pattern. A constant is a static and final field or an interface/annotation field, except serialVersionUID and serialPersistentFields .

    • Property format - Specifies valid identifiers. Type is java.util.regex.Pattern. Default value is "^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$".
    • Property applyToPublic - Controls whether to apply the check to public member. Type is boolean. Default value is true.
    • Property applyToProtected - Controls whether to apply the check to protected member. Type is boolean. Default value is true.
    • Property applyToPackage - Controls whether to apply the check to package-private member. Type is boolean. Default value is true.
    • Property applyToPrivate - Controls whether to apply the check to private member. Type is boolean. Default value is true.

    To configure the check:

     <module name="ConstantName"/>
     

    Example:

     class MyClass {
       public final static int FIRST_CONSTANT1 = 10; // OK
       protected final static int SECOND_CONSTANT2 = 100; // OK
       final static int third_Constant3 = 1000; // violation, name 'third_Constant3' must
                                               // match pattern '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'
       private final static int fourth_Const4 = 50; // violation, name 'fourth_Const4' must match
                                                     // pattern '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'
     }
     

    The following configuration apart from names allowed by default allows log or logger:

     <module name="ConstantName">
       <property name="format"
         value="^log(ger)?$|^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$"/>
     </module>
     

    Code Example:

     class MyClass {
       final static int log = 10; // OK
       final static int logger = 50; // OK
       final static int logMYSELF = 10; // violation, name 'logMYSELF' must match
                                        // pattern '^log(ger)?$|^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'
       final static int loggerMYSELF = 5; // violation, name 'loggerMYSELF' must match
                                          // pattern '^log(ger)?$|^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'
       final static int MYSELF = 100; // OK
       final static int myselfConstant = 1; // violation, name 'myselfConstant' must match pattern
                                            // '^log(ger)?$|^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'
     }
     

    The following configuration skip validation on public constant field and protected constant field.

     <module name="ConstantName">
       <property name="applyToPublic" value="false"/>
       <property name="applyToProtected" value="false"/>
     </module>
     

    Code Example:

     class MyClass {
       public final static int firstConstant = 10; // OK
       protected final static int secondConstant = 100; // OK
       final static int thirdConstant = 1000; // violation, name 'thirdConstant' must
                                              // match pattern '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'
       private final static int fourthConstant = 50; // violation, name 'fourthConstant' must match
                                                     // pattern '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'
     }
     

    Parent is com.puppycrawl.tools.checkstyle.TreeWalker

    Violation Message Keys:

    • name.invalidPattern
    Since:
    3.0