Class OperatorWrapCheck
- 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.whitespace.OperatorWrapCheck
-
- All Implemented Interfaces:
Configurable
,Contextualizable
public class OperatorWrapCheck extends AbstractCheck
Checks the policy on how to wrap lines on operators.See the Java Language Specification for more information about
instanceof
operator.-
Property
option
- Specify policy on how to wrap lines. Type iscom.puppycrawl.tools.checkstyle.checks.whitespace.WrapOption
. Default value isnl
. -
Property
tokens
- tokens to check Type isjava.lang.String[]
. Validation type istokenSet
. Default value is: QUESTION, COLON, EQUAL, NOT_EQUAL, DIV, PLUS, MINUS, STAR, MOD, SR, BSR, GE, GT, SL, LE, LT, BXOR, BOR, LOR, BAND, LAND, TYPE_EXTENSION_AND, LITERAL_INSTANCEOF.
Parent is
com.puppycrawl.tools.checkstyle.TreeWalker
Violation Message Keys:
-
line.new
-
line.previous
- Since:
- 3.0
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class com.puppycrawl.tools.checkstyle.AbstractAutomaticBean
AbstractAutomaticBean.OutputStreamOptions
-
-
Field Summary
Fields Modifier and Type Field Description static String
MSG_LINE_NEW
A key is pointing to the warning message text in "messages.properties" file.static String
MSG_LINE_PREVIOUS
A key is pointing to the warning message text in "messages.properties" file.private WrapOption
option
Specify policy on how to wrap lines.
-
Constructor Summary
Constructors Constructor Description OperatorWrapCheck()
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description private static DetailAST
adjustParens(DetailAST node, UnaryOperator<DetailAST> step)
Finds matching parentheses among siblings.int[]
getAcceptableTokens()
The configurable token set.int[]
getDefaultTokens()
Returns the default token a check is interested in.private static DetailAST
getLeftNode(DetailAST node)
Returns the left neighbour of a binary operator.int[]
getRequiredTokens()
The tokens that this check must be registered for.private static DetailAST
getRightNode(DetailAST node)
Returns the right neighbour of a binary operator.private static boolean
isAssignToVariable(DetailAST node)
Checks if a node isTokenTypes.ASSIGN
to a variable or resource.private static boolean
isColonFromLabel(DetailAST node)
Checks if a node isTokenTypes.COLON
from a label, switch case of default.private static boolean
isEndOfLineModeViolation(DetailAST ast)
Checks whether operator violatesWrapOption.EOL
mode.private static boolean
isInPatternDefinition(DetailAST node)
Ascends AST to determine if given node is part of a pattern definition.private static boolean
isNewLineModeViolation(DetailAST ast)
Checks whether operator violatesWrapOption.NL
mode.private static boolean
isTargetNode(DetailAST node)
Filters some false tokens that this check should ignore.void
setOption(String optionStr)
Setter to specify policy on how to wrap lines.void
visitToken(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, isCommentNodesRequired, leaveToken, log, log, log, setFileContents, setTabWidth, setTokens
-
Methods inherited from class com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter
finishLocalSetup, getCustomMessages, getId, getMessageBundle, getSeverity, getSeverityLevel, setId, setSeverity
-
Methods inherited from class com.puppycrawl.tools.checkstyle.AbstractAutomaticBean
configure, contextualize, getConfiguration, setupChild
-
-
-
-
Field Detail
-
MSG_LINE_NEW
public static final String MSG_LINE_NEW
A key is pointing to the warning message text in "messages.properties" file.- See Also:
- Constant Field Values
-
MSG_LINE_PREVIOUS
public static final String MSG_LINE_PREVIOUS
A key is pointing to the warning message text in "messages.properties" file.- See Also:
- Constant Field Values
-
option
private WrapOption option
Specify policy on how to wrap lines.
-
-
Constructor Detail
-
OperatorWrapCheck
public OperatorWrapCheck()
-
-
Method Detail
-
setOption
public void setOption(String optionStr)
Setter to specify policy on how to wrap lines.- Parameters:
optionStr
- string to decode option from- Throws:
IllegalArgumentException
- if unable to decode- Since:
- 3.0
-
getDefaultTokens
public int[] getDefaultTokens()
Description copied from class:AbstractCheck
Returns the default token a check is interested in. Only used if the configuration for a check does not define the tokens.- Specified by:
getDefaultTokens
in classAbstractCheck
- Returns:
- the default tokens
- See Also:
TokenTypes
-
getAcceptableTokens
public int[] getAcceptableTokens()
Description copied from class:AbstractCheck
The 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:
getAcceptableTokens
in classAbstractCheck
- Returns:
- the token set this check is designed for.
- See Also:
TokenTypes
-
getRequiredTokens
public int[] getRequiredTokens()
Description copied from class:AbstractCheck
The tokens that this check must be registered for.- Specified by:
getRequiredTokens
in classAbstractCheck
- Returns:
- the token set this must be registered for.
- See Also:
TokenTypes
-
visitToken
public void visitToken(DetailAST ast)
Description copied from class:AbstractCheck
Called to process a token.- Overrides:
visitToken
in classAbstractCheck
- Parameters:
ast
- the token to process
-
isTargetNode
private static boolean isTargetNode(DetailAST node)
Filters some false tokens that this check should ignore.- Parameters:
node
- the node to check- Returns:
true
for all nodes this check should validate
-
isNewLineModeViolation
private static boolean isNewLineModeViolation(DetailAST ast)
Checks whether operator violatesWrapOption.NL
mode.- Parameters:
ast
- the DetailAst of an operator- Returns:
true
if mode does not match
-
isEndOfLineModeViolation
private static boolean isEndOfLineModeViolation(DetailAST ast)
Checks whether operator violatesWrapOption.EOL
mode.- Parameters:
ast
- the DetailAst of an operator- Returns:
true
if mode does not match
-
isColonFromLabel
private static boolean isColonFromLabel(DetailAST node)
Checks if a node isTokenTypes.COLON
from a label, switch case of default.- Parameters:
node
- the node to check- Returns:
true
if node matches
-
isAssignToVariable
private static boolean isAssignToVariable(DetailAST node)
Checks if a node isTokenTypes.ASSIGN
to a variable or resource.- Parameters:
node
- the node to check- Returns:
true
if node matches
-
getLeftNode
private static DetailAST getLeftNode(DetailAST node)
Returns the left neighbour of a binary operator. This is the rightmost grandchild of the left child or sibling. For the assign operator the return value is the variable name.- Parameters:
node
- the binary operator- Returns:
- nearest node from left
-
isInPatternDefinition
private static boolean isInPatternDefinition(DetailAST node)
Ascends AST to determine if given node is part of a pattern definition.- Parameters:
node
- the node to check- Returns:
- true if node is in pattern definition
-
getRightNode
private static DetailAST getRightNode(DetailAST node)
Returns the right neighbour of a binary operator. This is the leftmost grandchild of the right child or sibling. For the ternary operator this is the node between?
and:
.- Parameters:
node
- the binary operator- Returns:
- nearest node from right
-
adjustParens
private static DetailAST adjustParens(DetailAST node, UnaryOperator<DetailAST> step)
Finds matching parentheses among siblings. If the given node is notTokenTypes.LPAREN
norTokenTypes.RPAREN
, the method adjusts nothing. This method is for handling case like(condition && (condition || condition2 || condition3) && condition4 && condition3)
- Parameters:
node
- the node to adjuststep
- the node transformer, should beDetailAST.getPreviousSibling()
orDetailAST.getNextSibling()
- Returns:
- adjusted node
-
-