public class RightCurlyCheck extends AbstractCheck
Checks the placement of right curly braces ('
'}) for code blocks. This check supports
if-else, try-catch-finally blocks, while-loops, for-loops,
method definitions, class definitions, constructor definitions,
instance, static initialization blocks, annotation definitions and enum definitions.
For right curly brace of expression blocks of arrays, lambdas and class instances
please follow issue
#5945.
For right curly brace of enum constant please follow issue
#7519.
option
- Specify the policy on placement of a right curly brace
('}'
).
Type is com.puppycrawl.tools.checkstyle.checks.blocks.RightCurlyOption
.
Default value is same
.
tokens
- tokens to check
Type is int[]
.
Default value is:
LITERAL_TRY,
LITERAL_CATCH,
LITERAL_FINALLY,
LITERAL_IF,
LITERAL_ELSE.
To configure the check:
<module name="RightCurly"/>
Example:
public class Test { public void test() { if (foo) { bar(); } // violation, right curly must be in the same line as the 'else' keyword else { bar(); } if (foo) { bar(); } else { // OK bar(); } if (foo) { bar(); } int i = 0; // violation // ^^^ statement is not allowed on same line after curly right brace if (foo) { bar(); } // OK int i = 0; try { bar(); } // violation, rightCurly must be in the same line as 'catch' keyword catch (Exception e) { bar(); } try { bar(); } catch (Exception e) { // OK bar(); } } // OK public void testSingleLine() { bar(); } // OK, because singleline is allowed }
To configure the check with policy alone
for else
and
METHOD_DEF tokens:
<module name="RightCurly"> <property name="option" value="alone"/> <property name="tokens" value="LITERAL_ELSE, METHOD_DEF"/> </module>
Example:
public class Test { public void test() { if (foo) { bar(); } else { bar(); } // violation, right curly must be alone on line if (foo) { bar(); } else { bar(); } // OK try { bar(); } catch (Exception e) { // OK because config is set to token METHOD_DEF and LITERAL_ELSE bar(); } } // OK public void violate() { bar; } // violation, singleline is not allowed here public void ok() { bar(); } // OK }
To configure the check with policy alone_or_singleline
for if
and
METHOD_DEF
tokens:
<module name="RightCurly"> <property name="option" value="alone_or_singleline"/> <property name="tokens" value="LITERAL_IF, METHOD_DEF"/> </module>
Example:
public class Test { public void test() { if (foo) { bar(); } else { // violation, right curly must be alone on line bar(); } if (foo) { bar(); } // OK else { bar(); } try { bar(); } catch (Exception e) { // OK because config did not set token LITERAL_TRY bar(); } } // OK public void violate() { bar(); } // OK , because singleline }
Parent is com.puppycrawl.tools.checkstyle.TreeWalker
Violation Message Keys:
line.alone
line.break.before
line.same
AutomaticBean.OutputStreamOptions
Modifier and Type | Field and Description |
---|---|
static String |
MSG_KEY_LINE_ALONE
A key is pointing to the warning message text in "messages.properties"
file.
|
static String |
MSG_KEY_LINE_BREAK_BEFORE
A key is pointing to the warning message text in "messages.properties"
file.
|
static String |
MSG_KEY_LINE_SAME
A key is pointing to the warning message text in "messages.properties"
file.
|
Constructor and Description |
---|
RightCurlyCheck() |
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 |
setOption(String optionStr)
Setter to specify the policy on placement of a right curly brace (
'}' ). |
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 String MSG_KEY_LINE_BREAK_BEFORE
public static final String MSG_KEY_LINE_ALONE
public static final String MSG_KEY_LINE_SAME
public RightCurlyCheck()
public void setOption(String optionStr)
'}'
).optionStr
- string to decode option fromIllegalArgumentException
- if unable to decodepublic int[] getDefaultTokens()
AbstractCheck
getDefaultTokens
in class AbstractCheck
TokenTypes
public int[] getAcceptableTokens()
AbstractCheck
getAcceptableTokens
in class AbstractCheck
TokenTypes
public int[] getRequiredTokens()
AbstractCheck
getRequiredTokens
in class AbstractCheck
TokenTypes
public void visitToken(DetailAST ast)
AbstractCheck
visitToken
in class AbstractCheck
ast
- the token to processCopyright © 2001–2020. All rights reserved.