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 int[]
.
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
AutomaticBean.OutputStreamOptions
Modifier and Type | Field and Description |
---|---|
static String |
MSG_KEY
A key is pointing to the warning message text in "messages.properties"
file.
|
static 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.
|
void |
leaveToken(DetailAST ast)
Called after all the child nodes have been process.
|
void |
setFormat(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.
|
void |
visitToken(DetailAST ast)
Called to process a token.
|
clearMessages, destroy, finishTree, getFileContents, getLine, getLines, getMessages, getTabWidth, getTokenNames, init, isCommentNodesRequired, log, log, log, setFileContents, setTabWidth, setTokens
finishLocalSetup, getCustomMessages, getId, getMessageBundle, getSeverity, getSeverityLevel, setId, setSeverity
configure, contextualize, getConfiguration, setupChild
public static final String MSG_KEY
public static final String MSG_KEY_VOID
public ReturnCountCheck()
public int[] getDefaultTokens()
AbstractCheck
getDefaultTokens
in class AbstractCheck
TokenTypes
public int[] getRequiredTokens()
AbstractCheck
getRequiredTokens
in class AbstractCheck
TokenTypes
public int[] getAcceptableTokens()
AbstractCheck
getAcceptableTokens
in class AbstractCheck
TokenTypes
public void setFormat(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)
AbstractCheck
beginTree
in class AbstractCheck
rootAST
- the root of the treepublic void visitToken(DetailAST ast)
AbstractCheck
visitToken
in class AbstractCheck
ast
- the token to processpublic void leaveToken(DetailAST ast)
AbstractCheck
leaveToken
in class AbstractCheck
ast
- the token leavingCopyright © 2001–2020. All rights reserved.