public final class ReturnCountCheck extends AbstractCheck
Restricts the number of return statements in methods, constructors and lambda expressions.
Ignores specified methods (equals by default).
max property will only check returns in methods and lambdas that return a specific value (Ex: 'return 1;').
maxForVoid property will only check returns in methods, constructors, and lambdas that have no return type (IE 'return;'). It will only count visible return statements. Return statements not normally written, but implied, at the end of the method/constructor definition will not be taken into account. To disallow "return;" in void return type methods, use a value of 0.
Rationale: Too many return points can mean that code is attempting to do too much or may be difficult to understand.
max - Specify maximum allowed number of return statements
in non-void methods/lambdas.
Type is int.
Default value is 2.
maxForVoid - Specify maximum allowed number of return statements
in void methods/constructors/lambdas.
Type is int.
Default value is 1.
format - Specify method names to ignore.
Type is java.util.regex.Pattern.
Default value is "^equals$".
tokens - tokens to check
Type is java.lang.String[].
Validation type is tokenSet.
Default value is:
CTOR_DEF,
METHOD_DEF,
LAMBDA.
To configure the check so that it doesn't allow more than three return statements per method
(ignoring the equals() method):
<module name="ReturnCount"> <property name="max" value="3"/> </module>
To configure the check so that it doesn't allow any return statements per void method:
<module name="ReturnCount"> <property name="maxForVoid" value="0"/> </module>
To configure the check so that it doesn't allow more than 2 return statements per method
(ignoring the equals() method) and more than 1 return statements per void method:
<module name="ReturnCount"> <property name="max" value="2"/> <property name="maxForVoid" value="1"/> </module>
To configure the check so that it doesn't allow more than three return statements per method for all methods:
<module name="ReturnCount"> <property name="max" value="3"/> <property name="format" value="^$"/> </module>
To configure the check so that it doesn't allow any return statements in constructors, more than one return statement in all lambda expressions and more than two return statements in methods:
<module name="ReturnCount"> <property name="max" value="0"/> <property name="tokens" value="CTOR_DEF"/> </module> <module name="ReturnCount"> <property name="max" value="1"/> <property name="tokens" value="LAMBDA"/> </module> <module name="ReturnCount"> <property name="max" value="2"/> <property name="tokens" value="METHOD_DEF"/> </module>
Parent is com.puppycrawl.tools.checkstyle.TreeWalker
Violation Message Keys:
return.count
return.countVoid
| Modifier and Type | Class and Description |
|---|---|
private class |
ReturnCountCheck.Context
Class to encapsulate information about one method.
|
AutomaticBean.OutputStreamOptions| Modifier and Type | Field and Description |
|---|---|
private ReturnCountCheck.Context |
context
Current method context.
|
private java.util.Deque<ReturnCountCheck.Context> |
contextStack
Stack of method contexts.
|
private java.util.regex.Pattern |
format
Specify method names to ignore.
|
private int |
max
Specify maximum allowed number of return statements in non-void methods/lambdas.
|
private int |
maxForVoid
Specify maximum allowed number of return statements in void methods/constructors/lambdas.
|
static java.lang.String |
MSG_KEY
A key is pointing to the warning message text in "messages.properties"
file.
|
static java.lang.String |
MSG_KEY_VOID
A key pointing to the warning message text in "messages.properties"
file.
|
| Constructor and Description |
|---|
ReturnCountCheck() |
| Modifier and Type | Method and Description |
|---|---|
void |
beginTree(DetailAST rootAST)
Called before the starting to process a tree.
|
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 void |
leave(DetailAST ast)
Checks number of return statements and restore previous context.
|
void |
leaveToken(DetailAST ast)
Called after all the child nodes have been process.
|
void |
setFormat(java.util.regex.Pattern pattern)
Setter to specify method names to ignore.
|
void |
setMax(int max)
Setter to specify maximum allowed number of return statements
in non-void methods/lambdas.
|
void |
setMaxForVoid(int maxForVoid)
Setter to specify maximum allowed number of return statements
in void methods/constructors/lambdas.
|
private void |
visitLambda()
Creates new lambda context and places old one on the stack.
|
private void |
visitMethodDef(DetailAST ast)
Creates new method context and places old one on the stack.
|
private void |
visitReturn(DetailAST ast)
Examines the return statement and tells context about it.
|
void |
visitToken(DetailAST ast)
Called to process a token.
|
clearViolations, destroy, finishTree, getFileContents, getLine, getLineCodePoints, getLines, getTabWidth, getTokenNames, getViolations, init, isCommentNodesRequired, log, log, log, setFileContents, setTabWidth, setTokensfinishLocalSetup, getCustomMessages, getId, getMessageBundle, getSeverity, getSeverityLevel, setId, setSeverityconfigure, contextualize, getConfiguration, setupChildpublic static final java.lang.String MSG_KEY
public static final java.lang.String MSG_KEY_VOID
private final java.util.Deque<ReturnCountCheck.Context> contextStack
private java.util.regex.Pattern format
private int max
private int maxForVoid
private ReturnCountCheck.Context context
public ReturnCountCheck()
public int[] getDefaultTokens()
AbstractCheckgetDefaultTokens in class AbstractCheckTokenTypespublic int[] getRequiredTokens()
AbstractCheckgetRequiredTokens in class AbstractCheckTokenTypespublic int[] getAcceptableTokens()
AbstractCheckgetAcceptableTokens in class AbstractCheckTokenTypespublic void setFormat(java.util.regex.Pattern pattern)
pattern - a pattern.public void setMax(int max)
max - maximum allowed number of return statements.public void setMaxForVoid(int maxForVoid)
maxForVoid - maximum allowed number of return statements for void methods.public void beginTree(DetailAST rootAST)
AbstractCheckbeginTree in class AbstractCheckrootAST - the root of the treepublic void visitToken(DetailAST ast)
AbstractCheckvisitToken in class AbstractCheckast - the token to processpublic void leaveToken(DetailAST ast)
AbstractCheckleaveToken in class AbstractCheckast - the token leavingprivate void visitMethodDef(DetailAST ast)
ast - method definition for check.private void leave(DetailAST ast)
ast - node to leave.private void visitLambda()
private void visitReturn(DetailAST ast)
ast - return statement to check.Copyright © 2001-2022. All Rights Reserved.