public class ExplicitInitializationCheck extends AbstractCheck
Checks if any class or object member is explicitly initialized
to default for its type value (null for object
references, zero for numeric types and char
and false for boolean.
Rationale: Each instance variable gets
initialized twice, to the same value. Java
initializes each instance variable to its default
value (0 or null) before performing any
initialization specified in the code.
So there is a minor inefficiency.
onlyObjectReferences - control whether only explicit
initializations made to null for objects should be checked.
Type is boolean.
Default value is false.
To configure the check:
<module name="ExplicitInitialization"/>
Example:
public class Test {
private int intField1 = 0; // violation
private int intField2 = 1;
private int intField3;
private char charField1 = '\0'; // violation
private char charField2 = 'b';
private char charField3;
private boolean boolField1 = false; // violation
private boolean boolField2 = true;
private boolean boolField3;
private Obj objField1 = null; // violation
private Obj objField2 = new Obj();
private Obj objField3;
private int arrField1[] = null; // violation
private int arrField2[] = new int[10];
private int arrField3[];
}
To configure the check so that it only checks for objects that explicitly initialize to null:
<module name="ExplicitInitialization"> <property name="onlyObjectReferences" value="true"/> </module>
Example:
public class Test {
private int intField1 = 0; // ignored
private int intField2 = 1;
private int intField3;
private char charField1 = '\0'; // ignored
private char charField2 = 'b';
private char charField3;
private boolean boolField1 = false; // ignored
private boolean boolField2 = true;
private boolean boolField3;
private Obj objField1 = null; // violation
private Obj objField2 = new Obj();
private Obj objField3;
private int arrField1[] = null; // violation
private int arrField2[] = new int[10];
private int arrField3[];
}
Parent is com.puppycrawl.tools.checkstyle.TreeWalker
Violation Message Keys:
explicit.init
AutomaticBean.OutputStreamOptions| Modifier and Type | Field and Description |
|---|---|
static java.lang.String |
MSG_KEY
A key is pointing to the warning message text in "messages.properties"
file.
|
| Constructor and Description |
|---|
ExplicitInitializationCheck() |
| 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.
|
void |
setOnlyObjectReferences(boolean onlyObjectReferences)
Setter to control whether only explicit initializations made to null
for objects should be checked.
|
void |
visitToken(DetailAST ast)
Called to process a token.
|
beginTree, clearMessages, destroy, finishTree, getFileContents, getLine, getLines, getMessages, getTabWidth, getTokenNames, init, isCommentNodesRequired, leaveToken, log, log, log, setFileContents, setTabWidth, setTokensfinishLocalSetup, getCustomMessages, getId, getMessageBundle, getSeverity, getSeverityLevel, setId, setSeverityconfigure, contextualize, getConfiguration, setupChildpublic static final java.lang.String MSG_KEY
public ExplicitInitializationCheck()
public final int[] getDefaultTokens()
AbstractCheckgetDefaultTokens in class AbstractCheckTokenTypespublic final int[] getRequiredTokens()
AbstractCheckgetRequiredTokens in class AbstractCheckTokenTypespublic final int[] getAcceptableTokens()
AbstractCheckgetAcceptableTokens in class AbstractCheckTokenTypespublic void setOnlyObjectReferences(boolean onlyObjectReferences)
onlyObjectReferences - whether only explicit initialization made to null
should be checkedpublic void visitToken(DetailAST ast)
AbstractCheckvisitToken in class AbstractCheckast - the token to processCopyright © 2001-2020. All Rights Reserved.