public class RightCurlyCheck extends AbstractCheck
Checks the placement of right curly braces.
The policy to verify is specified using the RightCurlyOption
class
and defaults to RightCurlyOption.SAME
.
By default the check will check the following tokens:
LITERAL_TRY
,
LITERAL_CATCH
,
LITERAL_FINALLY
,
LITERAL_IF
,
LITERAL_ELSE
.
Other acceptable tokens are:
CLASS_DEF
,
METHOD_DEF
,
CTOR_DEF
.
LITERAL_FOR
.
LITERAL_WHILE
.
LITERAL_DO
.
STATIC_INIT
.
INSTANCE_INIT
.
LAMBDA
.
shouldStartLine - does the check need to check if right curly starts line. Default value is true
An example of how to configure the check is:
<module name="RightCurly"/>
An example of how to configure the check with policy
RightCurlyOption.ALONE
for else
and
{@link TokenTypes#METHOD_DEF METHOD_DEF}
tokens is:
<module name="RightCurly"> <property name="tokens" value="LITERAL_ELSE"/> <property name="option" value="alone"/> </module>
Modifier and Type | Class and Description |
---|---|
private static class |
RightCurlyCheck.Details
Structure that contains all details for validation.
|
Modifier and Type | Field and Description |
---|---|
static java.lang.String |
MSG_KEY_LINE_ALONE
A key is pointing to the warning message text in "messages.properties"
file.
|
static java.lang.String |
MSG_KEY_LINE_BREAK_BEFORE
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_SAME
A key is pointing to the warning message text in "messages.properties"
file.
|
private RightCurlyOption |
option
The policy to enforce.
|
private boolean |
shouldStartLine
Do we need to check if right curly starts line.
|
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.
|
private static boolean |
hasLineBreakBefore(DetailAST rightCurly)
Checks if right curly has line break before.
|
private static boolean |
isAloneOnLine(RightCurlyCheck.Details details)
Checks whether right curly is alone on a line.
|
private static boolean |
isAnonInnerClassInit(DetailAST lcurly)
Checks whether lcurly is in anonymous inner class initialization.
|
private static boolean |
isEmptyBody(DetailAST lcurly)
Checks if definition body is empty.
|
private static boolean |
isOnStartOfLine(RightCurlyCheck.Details details,
java.lang.String targetSourceLine)
Whether right curly brace starts target source line.
|
private static boolean |
isSingleLineBlock(RightCurlyCheck.Details details)
Checks whether block has a single-line format.
|
void |
setOption(java.lang.String optionStr)
Sets the option to enforce.
|
void |
setShouldStartLine(boolean flag)
Does the check need to check if right curly starts line.
|
private static boolean |
shouldBeAloneOnLine(RightCurlyOption bracePolicy,
RightCurlyCheck.Details details)
Checks that a right curly should be alone on a line.
|
private static boolean |
shouldBeAloneOnLineWithAloneOption(RightCurlyCheck.Details details)
Whether right curly should be alone on line when ALONE option is used.
|
private static boolean |
shouldBeAloneOnLineWithAloneOrSinglelineOption(RightCurlyCheck.Details details)
Whether right curly should be alone on line when ALONE_OR_SINGLELINE option is used.
|
private static boolean |
shouldBeOnSameLine(RightCurlyOption bracePolicy,
RightCurlyCheck.Details details)
Checks that a right curly should be on the same line as the next statement.
|
private static boolean |
shouldHaveLineBreakBefore(RightCurlyOption bracePolicy,
RightCurlyCheck.Details details)
Checks whether a right curly should have a line break before.
|
private java.lang.String |
validate(RightCurlyCheck.Details details)
Does general validation.
|
void |
visitToken(DetailAST ast)
Called to process a token.
|
beginTree, destroy, finishTree, getClassLoader, getFileContents, getLine, getLines, getTabWidth, getTokenNames, init, isCommentNodesRequired, leaveToken, log, log, setClassLoader, setFileContents, setMessages, setTabWidth, setTokens
getCustomMessages, getId, getMessageBundle, getSeverity, getSeverityLevel, log, setId, setSeverity
configure, contextualize, finishLocalSetup, getConfiguration, setupChild
public static final java.lang.String MSG_KEY_LINE_BREAK_BEFORE
public static final java.lang.String MSG_KEY_LINE_ALONE
public static final java.lang.String MSG_KEY_LINE_SAME
public static final java.lang.String MSG_KEY_LINE_NEW
private boolean shouldStartLine
private RightCurlyOption option
public void setOption(java.lang.String optionStr)
optionStr
- string to decode option fromjava.lang.IllegalArgumentException
- if unable to decodepublic void setShouldStartLine(boolean flag)
flag
- new value of this property.public 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 processprivate java.lang.String validate(RightCurlyCheck.Details details)
details
- for validation.private static boolean shouldHaveLineBreakBefore(RightCurlyOption bracePolicy, RightCurlyCheck.Details details)
bracePolicy
- option for placing the right curly brace.details
- details for validation.private static boolean shouldBeOnSameLine(RightCurlyOption bracePolicy, RightCurlyCheck.Details details)
bracePolicy
- option for placing the right curly bracedetails
- Details for validationprivate static boolean shouldBeAloneOnLine(RightCurlyOption bracePolicy, RightCurlyCheck.Details details)
bracePolicy
- option for placing the right curly bracedetails
- Details for validationprivate static boolean shouldBeAloneOnLineWithAloneOption(RightCurlyCheck.Details details)
details
- details for validation.private static boolean shouldBeAloneOnLineWithAloneOrSinglelineOption(RightCurlyCheck.Details details)
details
- details for validation.private static boolean isOnStartOfLine(RightCurlyCheck.Details details, java.lang.String targetSourceLine)
details
- Details of right curly brace for validationtargetSourceLine
- source line to checkprivate static boolean isAloneOnLine(RightCurlyCheck.Details details)
details
- for validation.private static boolean isSingleLineBlock(RightCurlyCheck.Details details)
details
- for validation.private static boolean isAnonInnerClassInit(DetailAST lcurly)
lcurly
- left curly token.private static boolean isEmptyBody(DetailAST lcurly)
lcurly
- left curly.private static boolean hasLineBreakBefore(DetailAST rightCurly)
rightCurly
- right curly token.