Class AvoidConditionInversionCheck
- java.lang.Object
-
- com.puppycrawl.tools.checkstyle.api.AutomaticBean
-
- com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter
-
- com.puppycrawl.tools.checkstyle.api.AbstractCheck
-
- com.github.sevntu.checkstyle.checks.design.AvoidConditionInversionCheck
-
- All Implemented Interfaces:
com.puppycrawl.tools.checkstyle.api.Configurable
,com.puppycrawl.tools.checkstyle.api.Contextualizable
public class AvoidConditionInversionCheck extends com.puppycrawl.tools.checkstyle.api.AbstractCheck
This Check helps to catch condition inversion cases which could be rewritten in a more
readable manner
There're cases where it's justified to get rid of such inversion without changing
the main logic. E.g.:if (!(( a >= 8) && ( b >= 5))) { ... }
It can be rewritten as:
if ((a < 8) && (b < 5)) { ... }
if (!(a != b)) { ... }
as
if (a == b) { ... }
Sure, there're cases where we can't get rid of inversion without changing the main logic, e.g.:return !(list.isEmpty());
return !(obj instanceof SomeClass);
applyOnlyToRelationalOperands - if true Check will only put violation on
condition inversions with relational operands.
This option makes Check less strict, e.g.:
Using with value true does not put violation on code below:
if (! (obj instanceof SomeClass || obj1.isValid())) { ... }
- Since:
- 1.13.0
- Author:
- Aleksey Nesterenko
-
-
Constructor Summary
Constructors Constructor Description AvoidConditionInversionCheck()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description int[]
getAcceptableTokens()
int[]
getDefaultTokens()
int[]
getRequiredTokens()
void
setApplyOnlyToRelationalOperands(boolean applyOnlyToRelationalOperands)
Setter for applyOnlyToRelationalOperands.void
visitToken(com.puppycrawl.tools.checkstyle.api.DetailAST ast)
-
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
-
-
-
-
Field Detail
-
MSG_KEY
public static final String MSG_KEY
A key is pointing to the warning message text in "messages.properties" file.- See Also:
- Constant Field Values
-
-
Method Detail
-
setApplyOnlyToRelationalOperands
public void setApplyOnlyToRelationalOperands(boolean applyOnlyToRelationalOperands)
Setter for applyOnlyToRelationalOperands.- Parameters:
applyOnlyToRelationalOperands
- The new value for the field.
-
getDefaultTokens
public int[] getDefaultTokens()
- Specified by:
getDefaultTokens
in classcom.puppycrawl.tools.checkstyle.api.AbstractCheck
-
getAcceptableTokens
public int[] getAcceptableTokens()
- Specified by:
getAcceptableTokens
in classcom.puppycrawl.tools.checkstyle.api.AbstractCheck
-
getRequiredTokens
public int[] getRequiredTokens()
- Specified by:
getRequiredTokens
in classcom.puppycrawl.tools.checkstyle.api.AbstractCheck
-
visitToken
public void visitToken(com.puppycrawl.tools.checkstyle.api.DetailAST ast)
- Overrides:
visitToken
in classcom.puppycrawl.tools.checkstyle.api.AbstractCheck
-
-