Class FallThroughCheck
java.lang.Object
com.puppycrawl.tools.checkstyle.AbstractAutomaticBean
com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter
com.puppycrawl.tools.checkstyle.api.AbstractCheck
com.puppycrawl.tools.checkstyle.checks.coding.FallThroughCheck
- All Implemented Interfaces:
Configurable,Contextualizable
Checks for fall-through in
switch statements.
Finds locations where a case contains Java code but lacks a
break, return, yield, 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).
Any other comment may follow on the same line.
Note: The check assumes that there is no unreachable code in the case.
- Since:
- 3.4
-
Nested Class Summary
Nested classes/interfaces inherited from class com.puppycrawl.tools.checkstyle.AbstractAutomaticBean
AbstractAutomaticBean.OutputStreamOptions -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate booleanControl whether the last case group must be checked.static final StringA key is pointing to the warning message text in "messages.properties" file.static final StringA key is pointing to the warning message text in "messages.properties" file.private PatternDefine the RegExp to match the relief comment that suppresses the warning about a fall through. -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionint[]The configurable token set.int[]Returns the default token a check is interested in.int[]The tokens that this check must be registered for.private booleanhasFallThroughComment(DetailAST currentCase) Determines if the fall through case betweencurrentCaseandnextCaseis relieved by an appropriate comment.private booleanCheck if there is any fall through comment.booleanWhether comment nodes are required or not.voidsetCheckLastCaseGroup(boolean value) Setter to control whether the last case group must be checked.voidsetReliefPattern(Pattern pattern) Setter to define the RegExp to match the relief comment that suppresses the warning about a fall through.voidvisitToken(DetailAST ast) Called to process a token.Methods inherited from class com.puppycrawl.tools.checkstyle.api.AbstractCheck
beginTree, clearViolations, destroy, finishTree, getFileContents, getFilePath, getLine, getLineCodePoints, getLines, getTabWidth, getTokenNames, getViolations, init, leaveToken, log, log, log, setFileContents, setTabWidth, setTokensMethods inherited from class com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter
finishLocalSetup, getCustomMessages, getId, getMessageBundle, getSeverity, getSeverityLevel, setId, setSeverityMethods inherited from class com.puppycrawl.tools.checkstyle.AbstractAutomaticBean
configure, contextualize, getConfiguration, setupChild
-
Field Details
-
MSG_FALL_THROUGH
A key is pointing to the warning message text in "messages.properties" file.- See Also:
-
MSG_FALL_THROUGH_LAST
A key is pointing to the warning message text in "messages.properties" file.- See Also:
-
checkLastCaseGroup
Control whether the last case group must be checked. -
reliefPattern
Define the RegExp to match the relief comment that suppresses the warning about a fall through.
-
-
Constructor Details
-
FallThroughCheck
public FallThroughCheck()
-
-
Method Details
-
getDefaultTokens
Description copied from class:AbstractCheckReturns the default token a check is interested in. Only used if the configuration for a check does not define the tokens.- Specified by:
getDefaultTokensin classAbstractCheck- Returns:
- the default tokens
- See Also:
-
getRequiredTokens
Description copied from class:AbstractCheckThe tokens that this check must be registered for.- Specified by:
getRequiredTokensin classAbstractCheck- Returns:
- the token set this must be registered for.
- See Also:
-
getAcceptableTokens
Description copied from class:AbstractCheckThe configurable token set. Used to protect Checks against malicious users who specify an unacceptable token set in the configuration file. The default implementation returns the check's default tokens.- Specified by:
getAcceptableTokensin classAbstractCheck- Returns:
- the token set this check is designed for.
- See Also:
-
isCommentNodesRequired
Description copied from class:AbstractCheckWhether comment nodes are required or not.- Overrides:
isCommentNodesRequiredin classAbstractCheck- Returns:
- false as a default value.
-
setReliefPattern
Setter to define the RegExp to match the relief comment that suppresses the warning about a fall through.- Parameters:
pattern- The regular expression pattern.- Since:
- 4.0
-
setCheckLastCaseGroup
Setter to control whether the last case group must be checked.- Parameters:
value- new value of the property.- Since:
- 4.0
-
visitToken
Description copied from class:AbstractCheckCalled to process a token.- Overrides:
visitTokenin classAbstractCheck- Parameters:
ast- the token to process
-
hasFallThroughComment
Determines if the fall through case betweencurrentCaseandnextCaseis relieved by an appropriate comment.Handles
case 1: /* FALLTHRU */ case 2: switch(i) { default: /* FALLTHRU */} case 1: // FALLTHRU case 2: switch(i) { default: // FALLTHRU- Parameters:
currentCase- AST of the case that falls through to the next case.- Returns:
- True if a relief comment was found
-
hasReliefComment
Check if there is any fall through comment.- Parameters:
ast- ast to check- Returns:
- true if relief comment found
-