public class SingleSpaceSeparatorCheck extends AbstractCheck
Checks that non-whitespace characters are separated by no more than one whitespace. Separating characters by tabs or multiple spaces will be reported. Currently the check doesn't permit horizontal alignment. To inspect whitespaces before and after comments, set the property validateComments to true.
Setting validateComments to false will ignore cases like:
int i; // Multiple whitespaces before comment tokens will be ignored. private void foo(int /* whitespaces before and after block-comments will be ignored */ i) {
Sometimes, users like to space similar items on different lines to the same column position for easier reading. This feature isn't supported by this check, so both braces in the following case will be reported as violations.
public long toNanos(long d) { return d; } // 2 violations public long toMicros(long d) { return d / (C1 / C0); }
Check have following options:
true
, whitespaces
surrounding comments will be ignored. Default value is false
.To configure the check:
<module name="SingleSpaceSeparator"/>
To configure the check so that it validates comments:
<module name="SingleSpaceSeparator"> <property name="validateComments" value="true"/> </module>
Modifier and Type | Field and Description |
---|---|
static java.lang.String |
MSG_KEY
A key is pointing to the warning message text in "messages.properties"
file.
|
private boolean |
validateComments
Indicates if whitespaces surrounding comments will be ignored.
|
Constructor and Description |
---|
SingleSpaceSeparatorCheck() |
Modifier and Type | Method and Description |
---|---|
void |
beginTree(DetailAST rootAST)
Called before the starting to process a tree.
|
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 |
isBlockCommentEnd(java.lang.String line,
int columnNo)
Checks if the
line at columnNo is the end of a comment,
'*/'. |
boolean |
isCommentNodesRequired()
Whether comment nodes are required or not.
|
private static boolean |
isFirstInLine(java.lang.String line,
int columnNo)
Checks if the
line up to and including columnNo is all
non-whitespace text encountered. |
private static boolean |
isPrecededByMultipleWhitespaces(java.lang.String line,
int columnNo)
Checks if the
line at columnNo is preceded by at least 2
whitespaces. |
private static boolean |
isSingleSpace(java.lang.String line,
int columnNo)
Checks if the
line at columnNo is a single space, and not
preceded by another space. |
private static boolean |
isSpace(java.lang.String line,
int columnNo)
Checks if the
line at columnNo is a space. |
private boolean |
isTextSeparatedCorrectlyFromPrevious(java.lang.String line,
int columnNo)
Checks if characters in
line at and around columnNo has
the correct number of spaces. |
private static boolean |
isWhitespace(java.lang.String line,
int columnNo)
Checks if the
line at columnNo is a whitespace character. |
void |
setValidateComments(boolean validateComments)
Sets whether or not to validate surrounding whitespaces at comments.
|
private void |
visitEachToken(DetailAST node)
Examines every sibling and child of
node for violations. |
destroy, finishTree, getClassLoader, getFileContents, getLine, getLines, getTabWidth, getTokenNames, init, leaveToken, log, log, setClassLoader, setFileContents, setMessages, setTabWidth, setTokens, visitToken
getCustomMessages, getId, getMessageBundle, getSeverity, getSeverityLevel, log, setId, setSeverity
configure, contextualize, finishLocalSetup, getConfiguration, setupChild
public static final java.lang.String MSG_KEY
private boolean validateComments
public void setValidateComments(boolean validateComments)
validateComments
- true
to validate surrounding whitespaces at comments.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 boolean isCommentNodesRequired()
AbstractCheck
isCommentNodesRequired
in class AbstractCheck
public void beginTree(DetailAST rootAST)
AbstractCheck
beginTree
in class AbstractCheck
rootAST
- the root of the treeprivate void visitEachToken(DetailAST node)
node
for violations.node
- The node to start examining.private boolean isTextSeparatedCorrectlyFromPrevious(java.lang.String line, int columnNo)
line
at and around columnNo
has
the correct number of spaces. to return true
the following
conditions must be met:columnNo
is the first in the line.columnNo
is not separated by whitespaces from
the previous non-whitespace character. columnNo
is separated by only one whitespace
from the previous non-whitespace character.validateComments
is disabled and the previous text is the
end of a block comment.line
- The line in the file to examine.columnNo
- The column position in the line
to examine.true
if the text at columnNo
is separated
correctly from the previous token.private static boolean isSingleSpace(java.lang.String line, int columnNo)
line
at columnNo
is a single space, and not
preceded by another space.line
- The line in the file to examine.columnNo
- The column position in the line
to examine.true
if the character at columnNo
is a space, and
not preceded by another space.private static boolean isSpace(java.lang.String line, int columnNo)
line
at columnNo
is a space.line
- The line in the file to examine.columnNo
- The column position in the line
to examine.true
if the character at columnNo
is a space.private static boolean isPrecededByMultipleWhitespaces(java.lang.String line, int columnNo)
line
at columnNo
is preceded by at least 2
whitespaces.line
- The line in the file to examine.columnNo
- The column position in the line
to examine.true
if there are at least 2 whitespace characters before
columnNo
.private static boolean isWhitespace(java.lang.String line, int columnNo)
line
at columnNo
is a whitespace character.line
- The line in the file to examine.columnNo
- The column position in the line
to examine.true
if the character at columnNo
is a
whitespace.private static boolean isFirstInLine(java.lang.String line, int columnNo)
line
up to and including columnNo
is all
non-whitespace text encountered.line
- The line in the file to examine.columnNo
- The column position in the line
to examine.true
if the column position is the first non-whitespace
text on the line
.private static boolean isBlockCommentEnd(java.lang.String line, int columnNo)
line
at columnNo
is the end of a comment,
'*/'.line
- The line in the file to examine.columnNo
- The column position in the line
to examine.true
if the previous text is a end comment block.