public class LeftCurlyCheck extends AbstractCheck
Checks for the placement of left curly braces ('{') for code blocks.
option - Specify the policy on placement of a left curly brace
('{').
Type is com.puppycrawl.tools.checkstyle.checks.blocks.LeftCurlyOption.
Default value is eol.
ignoreEnums - Allow to ignore enums when left curly brace policy is EOL.
Type is boolean.
Default value is true.
tokens - tokens to check
Type is java.lang.String[].
Validation type is tokenSet.
Default value is:
ANNOTATION_DEF,
CLASS_DEF,
CTOR_DEF,
ENUM_CONSTANT_DEF,
ENUM_DEF,
INTERFACE_DEF,
LAMBDA,
LITERAL_CASE,
LITERAL_CATCH,
LITERAL_DEFAULT,
LITERAL_DO,
LITERAL_ELSE,
LITERAL_FINALLY,
LITERAL_FOR,
LITERAL_IF,
LITERAL_SWITCH,
LITERAL_SYNCHRONIZED,
LITERAL_TRY,
LITERAL_WHILE,
METHOD_DEF,
OBJBLOCK,
STATIC_INIT,
RECORD_DEF,
COMPACT_CTOR_DEF.
To configure the check:
<module name="LeftCurly"/>
class Test
{ // Violation - '{' should be on the previous line
private interface TestInterface
{ // Violation - '{' should be on the previous line
}
private
class
MyClass { // OK
}
enum Colors {RED, // OK
BLUE,
GREEN;
}
}
To configure the check to apply the nl policy to type blocks:
<module name="LeftCurly"> <property name="option" value="nl"/> <property name="tokens" value="CLASS_DEF,INTERFACE_DEF"/> </module>
class Test
{ // OK
private interface TestInterface
{ // OK
}
private
class
MyClass { // Violation - '{' should be on a new line
}
enum Colors {RED, // OK
BLUE,
GREEN;
}
}
An example of how to configure the check to validate enum definitions:
<module name="LeftCurly"> <property name="ignoreEnums" value="false"/> </module>
class Test
{ // Violation - '{' should be on the previous line
private interface TestInterface
{ // Violation - '{' should be on the previous line
}
private
class
MyClass { // OK
}
enum Colors {RED, // Violation - '{' should have line break after
BLUE,
GREEN;
}
}
Parent is com.puppycrawl.tools.checkstyle.TreeWalker
Violation Message Keys:
line.break.after
line.new
line.previous
AutomaticBean.OutputStreamOptions| Modifier and Type | Field and Description |
|---|---|
private boolean |
ignoreEnums
Allow to ignore enums when left curly brace policy is EOL.
|
static java.lang.String |
MSG_KEY_LINE_BREAK_AFTER
A key is pointing to the warning message text in "messages.properties"
file.
|
static java.lang.String |
MSG_KEY_LINE_NEW
A key is pointing to the warning message text in "messages.properties"
file.
|
static java.lang.String |
MSG_KEY_LINE_PREVIOUS
A key is pointing to the warning message text in "messages.properties"
file.
|
private static java.lang.String |
OPEN_CURLY_BRACE
Open curly brace literal.
|
private LeftCurlyOption |
option
Specify the policy on placement of a left curly brace (
'{'). |
| Constructor and Description |
|---|
LeftCurlyCheck() |
| Modifier and Type | Method and Description |
|---|---|
private static DetailAST |
findLastAnnotation(DetailAST modifiers)
Find the last token of type
TokenTypes.ANNOTATION
under the given set of modifiers. |
int[] |
getAcceptableTokens()
The configurable token set.
|
private static DetailAST |
getBraceAsFirstChild(DetailAST ast)
Gets a SLIST if it is the first child of the AST.
|
private static DetailAST |
getBraceFromSwitchMember(DetailAST ast)
Gets the brace of a switch statement/ expression member.
|
int[] |
getDefaultTokens()
Returns the default token a check is interested in.
|
int[] |
getRequiredTokens()
The tokens that this check must be registered for.
|
private boolean |
hasLineBreakAfter(DetailAST leftCurly)
Checks if left curly has line break after.
|
void |
setIgnoreEnums(boolean ignoreEnums)
Setter to allow to ignore enums when left curly brace policy is EOL.
|
void |
setOption(java.lang.String optionStr)
Setter to specify the policy on placement of a left curly brace (
'{'). |
private static DetailAST |
skipModifierAnnotations(DetailAST ast)
Skip all
TokenTypes.ANNOTATIONs to the first non-annotation. |
private void |
validateEol(DetailAST brace,
java.lang.String braceLine)
Validate EOL case.
|
private void |
validateNewLinePosition(DetailAST brace,
DetailAST startToken,
java.lang.String braceLine)
Validate token on new Line position.
|
private void |
verifyBrace(DetailAST brace,
DetailAST startToken)
Verifies that a specified left curly brace is placed correctly
according to policy.
|
void |
visitToken(DetailAST ast)
We cannot reduce the number of branches in this switch statement,
since many tokens require specific methods to find the first left
curly.
|
beginTree, clearViolations, destroy, finishTree, getFileContents, getLine, getLineCodePoints, getLines, getTabWidth, getTokenNames, getViolations, init, isCommentNodesRequired, leaveToken, log, log, log, setFileContents, setTabWidth, setTokensfinishLocalSetup, getCustomMessages, getId, getMessageBundle, getSeverity, getSeverityLevel, setId, setSeverityconfigure, contextualize, getConfiguration, setupChildpublic static final java.lang.String MSG_KEY_LINE_NEW
public static final java.lang.String MSG_KEY_LINE_PREVIOUS
public static final java.lang.String MSG_KEY_LINE_BREAK_AFTER
private static final java.lang.String OPEN_CURLY_BRACE
private boolean ignoreEnums
private LeftCurlyOption option
'{').public LeftCurlyCheck()
public void setOption(java.lang.String optionStr)
'{').optionStr - string to decode option fromjava.lang.IllegalArgumentException - if unable to decodepublic void setIgnoreEnums(boolean ignoreEnums)
ignoreEnums - check's option for ignoring enums.public int[] getDefaultTokens()
AbstractCheckgetDefaultTokens in class AbstractCheckTokenTypespublic int[] getAcceptableTokens()
AbstractCheckgetAcceptableTokens in class AbstractCheckTokenTypespublic int[] getRequiredTokens()
AbstractCheckgetRequiredTokens in class AbstractCheckTokenTypespublic void visitToken(DetailAST ast)
visitToken in class AbstractCheckast - the token to processprivate static DetailAST getBraceFromSwitchMember(DetailAST ast)
ast - DetailAST.DetailAST if the first child is TokenTypes.SLIST,
null otherwise.private static DetailAST getBraceAsFirstChild(DetailAST ast)
ast - DetailAST.DetailAST if the first child is TokenTypes.SLIST,
null otherwise.private static DetailAST skipModifierAnnotations(DetailAST ast)
TokenTypes.ANNOTATIONs to the first non-annotation.ast - DetailAST.DetailAST.private static DetailAST findLastAnnotation(DetailAST modifiers)
TokenTypes.ANNOTATION
under the given set of modifiers.modifiers - DetailAST.DetailAST or null if there are no annotations.private void verifyBrace(DetailAST brace, DetailAST startToken)
brace - token for left curly bracestartToken - token for start of expressionprivate void validateEol(DetailAST brace, java.lang.String braceLine)
brace - brace ASTbraceLine - line contentprivate void validateNewLinePosition(DetailAST brace, DetailAST startToken, java.lang.String braceLine)
brace - brace ASTstartToken - start TokenbraceLine - content of line with Braceprivate boolean hasLineBreakAfter(DetailAST leftCurly)
leftCurly - Left curly token.Copyright © 2001-2022. All Rights Reserved.