public class LocalVariableNameCheck extends AbstractNameCheck
Checks that local, non-final
variable names conform to a specified pattern.
A catch parameter is considered to be
a local variable.
format
- Specifies valid identifiers.
Type is java.util.regex.Pattern
.
Default value is "^[a-z][a-zA-Z0-9]*$"
.
allowOneCharVarInForLoop
- Allow one character variable name in
initialization expressions
in FOR loop if one char variable name is prohibited by format
regexp. For example:
for (int i = 1; i < 10; i++) { // OK int j = 1; // violation } for (int K = 1; K < 10; K++) { // OK int j = 1; // violation } List list = new ArrayList(); for (Object o : list) { // OK int j = 1; // violation } for (Object O : list) { // OK int j = 1; // violation }Type is
boolean
.
Default value is false
.
An example of how to configure the check is:
<module name="LocalVariableName"/>
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="LocalVariableName"> <property name="format" value="^[a-z](_?[a-zA-Z0-9]+)*$"/> </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="LocalVariableName"> <property name="format" value="^[a-z][_a-zA-Z0-9]+$"/> <property name="allowOneCharVarInForLoop" value="true"/> </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="LocalVariableName"> <property name="format" value="^[a-z][_a-zA-Z0-9]{2,}$"/> </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 } } }
Parent is com.puppycrawl.tools.checkstyle.TreeWalker
Violation Message Keys:
name.invalidPattern
AutomaticBean.OutputStreamOptions
MSG_INVALID_PATTERN
Constructor and Description |
---|
LocalVariableNameCheck()
Creates a new
LocalVariableNameCheck instance. |
Modifier and Type | Method and Description |
---|---|
int[] |
getAcceptableTokens()
The configurable token set.
|
int[] |
getDefaultTokens()
Returns the default token a check is interested in.
|
int[] |
getRequiredTokens()
The tokens that this check must be registered for.
|
protected boolean |
mustCheckName(DetailAST ast)
Decides whether the name of an AST should be checked against
the format regexp.
|
void |
setAllowOneCharVarInForLoop(boolean allow)
Setter to allow one character variable name in
initialization expressions
in FOR loop if one char variable name is prohibited by
format regexp. |
setFormat, visitToken
beginTree, clearMessages, destroy, finishTree, getFileContents, getLine, getLines, getMessages, getTabWidth, getTokenNames, init, isCommentNodesRequired, leaveToken, log, log, log, setFileContents, setTabWidth, setTokens
finishLocalSetup, getCustomMessages, getId, getMessageBundle, getSeverity, getSeverityLevel, setId, setSeverity
configure, contextualize, getConfiguration, setupChild
public LocalVariableNameCheck()
LocalVariableNameCheck
instance.public final void setAllowOneCharVarInForLoop(boolean allow)
format
regexp. For example:
for (int i = 1; i < 10; i++) { // OK int j = 1; // violation } for (int K = 1; K < 10; K++) { // OK int j = 1; // violation } List list = new ArrayList(); for (Object o : list) { // OK int j = 1; // violation } for (Object O : list) { // OK int j = 1; // violation }
allow
- Flag for allowing or not one character name in FOR loop.public int[] getDefaultTokens()
AbstractCheck
getDefaultTokens
in class AbstractCheck
TokenTypes
public int[] getAcceptableTokens()
AbstractCheck
getAcceptableTokens
in class AbstractCheck
TokenTypes
public int[] getRequiredTokens()
AbstractCheck
getRequiredTokens
in class AbstractCheck
TokenTypes
protected final boolean mustCheckName(DetailAST ast)
AbstractNameCheck
mustCheckName
in class AbstractNameCheck
ast
- the AST to check.Copyright © 2001–2020. All rights reserved.