public class SimplifyBooleanReturnCheck extends AbstractCheck
Checks for over-complicated boolean return statements. For example the following code
if (valid()) return false; else return true;
could be written as
return !valid();
The idea for this Check has been shamelessly stolen from the equivalent PMD rule.
To configure the check:
<module name="SimplifyBooleanReturn"/>
Example:
public class Test {
private boolean cond;
private Foo a;
private Foo b;
public boolean check1() {
if (cond) { // violation, can be simplified
return true;
}
else {
return false;
}
}
// Ok, simplified version of check1()
public boolean check2() {
return cond;
}
// violations, can be simplified
public boolean check3() {
if (cond == true) { // can be simplified to "if (cond)"
return false;
}
else {
return true; // can be simplified to "return !cond"
}
}
// Ok, can be simplified but doesn't return a Boolean
public Foo choose1() {
if (cond) {
return a;
}
else {
return b;
}
}
// Ok, simplified version of choose1()
public Foo choose2() {
return cond ? a: b;
}
}
Parent is com.puppycrawl.tools.checkstyle.TreeWalker
Violation Message Keys:
simplify.boolReturn
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 |
|---|
SimplifyBooleanReturnCheck() |
| Modifier and Type | Method and Description |
|---|---|
private static boolean |
canReturnOnlyBooleanLiteral(DetailAST ast)
Returns if an AST is a return statement with a boolean literal
or a compound statement that contains only such a return statement.
|
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.
|
private static boolean |
isBooleanLiteralReturnStatement(DetailAST ast)
Returns if an AST is a return statement with a boolean literal.
|
void |
visitToken(DetailAST ast)
Called to process a token.
|
beginTree, clearViolations, destroy, finishTree, getFileContents, getLine, getLineCodePoints, getLines, getTabWidth, getTokenNames, getViolations, 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 SimplifyBooleanReturnCheck()
public int[] getAcceptableTokens()
AbstractCheckgetAcceptableTokens in class AbstractCheckTokenTypespublic int[] getDefaultTokens()
AbstractCheckgetDefaultTokens in class AbstractCheckTokenTypespublic int[] getRequiredTokens()
AbstractCheckgetRequiredTokens in class AbstractCheckTokenTypespublic void visitToken(DetailAST ast)
AbstractCheckvisitToken in class AbstractCheckast - the token to processprivate static boolean canReturnOnlyBooleanLiteral(DetailAST ast)
Returns true iff ast represents
return true/false;or
{
return true/false;
}
ast - the syntax tree to checkprivate static boolean isBooleanLiteralReturnStatement(DetailAST ast)
Returns true iff ast represents
return true/false;
ast - the syntax tree to checkCopyright © 2001-2022. All Rights Reserved.