public class FallThroughCheck extends AbstractCheck
Checks for fall-through in switch
statements.
Finds locations where a case
contains Java code but lacks a
break
, return
, throw
or continue
statement.
The check honors special comments to suppress the warning.
By default the texts
"fallthru", "fall thru", "fall-thru",
"fallthrough", "fall through", "fall-through"
"fallsthrough", "falls through", "falls-through" (case sensitive).
The comment containing these words must be all on one line,
and must be on the last non-empty line before the case
triggering
the warning or on the same line before the case
(ugly, but possible).
switch (i) { case 0: i++; // fall through case 1: i++; // falls through case 2: case 3: case 4: { i++; } // fallthrough case 5: i++; /* fallthru */case 6: i++; // fall-through case 7: i++; break; }
Note: The check assumes that there is no unreachable code in the case
.
The following fragment of code will NOT trigger the check, because of the comment "fallthru" or any Java code in case 5 are absent.
case 3: x = 2; // fallthru case 4: case 5: // violation case 6: break;
checkLastCaseGroup
- Control whether the last case group must be checked.
Type is boolean
.
Default value is false
.
reliefPattern
- Define the RegExp to match the relief comment that suppresses
the warning about a fall through.
Type is java.util.regex.Pattern
.
Default value is "falls?[ -]?thr(u|ough)"
.
To configure the check:
<module name="FallThrough"/>
or
<module name="FallThrough"> <property name="reliefPattern" value="continue in next case"/> </module>
Parent is com.puppycrawl.tools.checkstyle.TreeWalker
Violation Message Keys:
fall.through
fall.through.last
AutomaticBean.OutputStreamOptions
Modifier and Type | Field and Description |
---|---|
static java.lang.String |
MSG_FALL_THROUGH
A key is pointing to the warning message text in "messages.properties"
file.
|
static java.lang.String |
MSG_FALL_THROUGH_LAST
A key is pointing to the warning message text in "messages.properties"
file.
|
Constructor and Description |
---|
FallThroughCheck() |
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 |
setCheckLastCaseGroup(boolean value)
Setter to control whether the last case group must be checked.
|
void |
setReliefPattern(java.util.regex.Pattern pattern)
Setter to define the RegExp to match the relief comment that suppresses
the warning about a fall through.
|
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, setTokens
finishLocalSetup, getCustomMessages, getId, getMessageBundle, getSeverity, getSeverityLevel, setId, setSeverity
configure, contextualize, getConfiguration, setupChild
public static final java.lang.String MSG_FALL_THROUGH
public static final java.lang.String MSG_FALL_THROUGH_LAST
public FallThroughCheck()
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 setReliefPattern(java.util.regex.Pattern pattern)
pattern
- The regular expression pattern.public void setCheckLastCaseGroup(boolean value)
value
- new value of the property.public void visitToken(DetailAST ast)
AbstractCheck
visitToken
in class AbstractCheck
ast
- the token to processCopyright © 2001-2020. All Rights Reserved.