Class MemberNameCheck

  • All Implemented Interfaces:
    Configurable, Contextualizable

    public class MemberNameCheck
    extends AbstractAccessControlNameCheck

    Checks that instance variable names conform to a specified pattern.

    • Property format - Specifies valid identifiers. Type is java.util.regex.Pattern. Default value is "^[a-z][a-zA-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="MemberName"/>
     

    Code Example:

     class MyClass {
       public int num1; // OK
       protected int num2; // OK
       final int num3 = 3; // OK
       private int num4; // OK
    
       static int num5; // ignored: not an instance variable
       public static final int CONSTANT = 1; // ignored: not an instance variable
    
       public int NUM1; // violation, name 'NUM1'
                        // must match pattern '^[a-z][a-zA-Z0-9]*$'
       protected int NUM2; // violation, name 'NUM2'
                           // must match pattern '^[a-z][a-zA-Z0-9]*$'
       final int NUM3; // violation, name 'NUM3'
                       // must match pattern '^[a-z][a-zA-Z0-9]*$'
       private int NUM4; // violation, name 'NUM4'
                         // must match pattern '^[a-z][a-zA-Z0-9]*$'
     }
     

    An example of how to configure the check for names that begin with &quot;m&quot;, followed by an upper case letter, and then letters and digits. Also, suppress the check from being applied to protected and package-private member:

     <module name="MemberName">
       <property name="format" value="^m[A-Z][a-zA-Z0-9]*$"/>
       <property name="applyToProtected" value="false"/>
       <property name="applyToPackage" value="false"/>
     </module>
     

    Code Example:

     class MyClass {
       public int num1; // violation, name 'num1'
                        // must match pattern '^m[A-Z][a-zA-Z0-9]*$'
       protected int num2; // OK
       int num3; // OK
       private int num4; // violation, name 'num4'
                         // must match pattern '^m[A-Z][a-zA-Z0-9]*$'
     }
     

    An example of how to suppress the check which is applied to public and private member:

     <module name="MemberName">
       <property name="applyToPublic" value="false"/>
       <property name="applyToPrivate" value="false"/>
     </module>
     

    Code Example:

     class MyClass {
       public int NUM1; // OK
       protected int NUM2; // violation, name 'NUM2'
                           // must match pattern '^[a-z][a-zA-Z0-9]*$'
       int NUM3; // violation, name 'NUM3'
                 // must match pattern '^[a-z][a-zA-Z0-9]*$'
       private int NUM4; // OK
     }
     

    Parent is com.puppycrawl.tools.checkstyle.TreeWalker

    Violation Message Keys:

    • name.invalidPattern
    Since:
    3.0