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.

This check does not support pattern variables. Instead, use PatternVariableName.

Properties

name description type default value since
allowOneCharVarInForLoop Allow one character variable name in initialization expressions in FOR loop if one char variable name is prohibited by format regexp. boolean false 5.8
format Sets the pattern to match valid identifiers. Pattern ^([a-z][a-zA-Z0-9]*|_)$ 3.0

Examples

To configure the check:


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

Code Example:


class Example1 {
  void MyMethod() {
    for (int var = 1; var < 10; var++) {}
    for (int VAR = 1; VAR < 10; VAR++) {}
    // violation above, 'Name 'VAR' must match pattern*'
    for (int i = 1; i < 10; i++) {}
    for (int var_1 = 0; var_1 < 10; var_1++) {}
    // violation above, 'Name 'var_1' must match pattern*'
  }
}

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 Example2 {
  void MyMethod() {
    for (int var = 1; var < 10; var++) {}
    for (int VAR = 1; VAR < 10; VAR++) {}
    // violation above, 'Name 'VAR' must match pattern*'
    for (int i = 1; i < 10; i++) {}
    for (int var_1 = 0; var_1 < 10; var_1++) {}
  }
}

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


class Example3 {
  void myMethod () {
    for(int i = 1; i < 10; i++) {}
    for(int K = 1; K < 10; K++) {} // violation, 'Name 'K' must match pattern*'
    List list = new ArrayList();
    for (Object o : list) {}
    for (Object O : list) {} // violation, 'Name 'O' must match pattern*'
  }
}

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 Example4 {
  void MyMethod() {
    int good = 1;
    int g = 0; // violation, 'Name 'g' must match pattern*'
    for (int v = 1; v < 10; v++) {
      int a = 1; // violation, 'Name 'a' must match pattern*'
    }
    for (int V = 1; V < 10; V++) {
      int I = 1; // violation, 'Name 'I' must match pattern*'
    }
    List list = new ArrayList();
    for (Object o : list) {
      String a = ""; // violation, 'Name 'a' must match pattern*'
    }
    for (Object O : list) {
      String A = ""; // violation, 'Name 'A' must match pattern*'
    }
  }
}

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 Example5 {
  void MyMethod() {
    int goodName = 0;
    int i = 1; // violation, 'Name 'i' must match pattern*'
    for (int var = 1; var < 10; var++) {
      int j = 1; // violation, 'Name 'j' must match pattern*'
    }
  }
}

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.

Fully Qualified Name

com.puppycrawl.tools.checkstyle.checks.naming.LocalVariableNameCheck

Use this fully qualified class name in configuration when an exact class reference is required.

Parent Module

TreeWalker