LocalVariableName

Since Checkstyle 3.0

Description

Checks that local, non-final variable names conform to a specified pattern. A catch parameter is considered to be a local variable.

Properties

name description type default value since
format Specifies valid identifiers. Pattern "^[a-z][a-zA-Z0-9]*$" 3.0
allowOneCharVarInForLoop Allow one character variable name in initialization expressions in FOR loop if one char variable name is prohibited by {@code format} regexp. boolean false 5.8

Examples

To configure the check:

<module name="Checker">
  <module name="TreeWalker">
    <module name="LocalVariableName"/>
  </module>
</module>
        

Code Example:

class MyClass {
  void MyMethod() {
    for (int var = 1; var < 10; var++) {} // OK
    for (int VAR = 1; VAR < 10; VAR++) {} // violation, name 'VAR' must match
                                          // pattern '^[a-z][a-zA-Z0-9]*$'
    for (int i = 1; i < 10; i++) {} // OK
    for (int var_1 = 0; var_1 < 10; var_1++) {} // violation, name 'var_1' must match
                                                   // pattern '^[a-z][a-zA-Z0-9]*$'
  }
}
        

An example of how to configure the check for names that begin with a lower case letter, followed by letters, digits, and underscores is:

<module name="Checker">
  <module name="TreeWalker">
    <module name="LocalVariableName">
      <property name="format" value="^[a-z](_?[a-zA-Z0-9]+)*$"/>
    </module>
  </module>
</module>
        

Code Example:

class MyClass {
  void MyMethod() {
    for (int var = 1; var < 10; var++) {} // OK
    for (int VAR = 1; VAR < 10; VAR++) {} // violation, name 'VAR' must match
                                             // pattern '^[a-z](_?[a-zA-Z0-9]+)*$'
    for (int i = 1; i < 10; i++) {} // OK
    for (int var_1 = 0; var_1 < 10; var_1++) {} // OK
  }
}
        

An example of one character variable name in initialization expression(like "i") in FOR loop:

for(int i = 1; i < 10; i++) {}
for(int K = 1; K < 10; K++) {}
List list = new ArrayList();
for (Object o : list) {}
for (Object O : list) {}
        

An example of how to configure the check to allow one character variable name in initialization expressions in FOR loop, where regexp allows 2 or more chars:

<module name="Checker">
  <module name="TreeWalker">
    <module name="LocalVariableName">
      <property name="format" value="^[a-z][_a-zA-Z0-9]+$"/>
      <property name="allowOneCharVarInForLoop" value="true"/>
    </module>
  </module>
</module>
        

Code Example:

class MyClass {
  void MyMethod() {
    int good = 1;
    int g = 0; // violation
    for (int v = 1; v < 10; v++) { // OK
        int a = 1; // violation
    }
    for (int V = 1; V < 10; V++) { // OK
        int I = 1; // violation
    }
    List list = new ArrayList();
    for (Object o : list) { // OK
        String a = ""; // violation
    }
    for (Object O : list) { // OK
        String A = ""; // violation
    }
  }
}
        

An example of how to configure the check to that all variables have 3 or more chars in name:

<module name="Checker">
  <module name="TreeWalker">
    <module name="LocalVariableName">
      <property name="format" value="^[a-z][_a-zA-Z0-9]{2,}$"/>
    </module>
  </module>
</module>
        

Code Example:

class MyClass {
  void MyMethod() {
    int goodName = 0;
    int i = 1; // violation
    for (int var = 1; var < 10; var++) { //OK
      int j = 1; // violation
    }
  }
}
        

Example of Usage

Violation Messages

All messages can be customized if the default message doesn't suit you. Please see the documentation to learn how to.

Package

com.puppycrawl.tools.checkstyle.checks.naming

Parent Module

TreeWalker