aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorVladislav Lisetskii <vladlis54@gmail.com>2017-02-17 00:34:06 +0300
committerrnveach <rveach02@gmail.com>2017-02-18 17:16:51 -0500
commitcd88872f9db17c838641bcd32ad7f334893827c0 (patch)
tree1d79de66c69a251f8638316887aabc29bc1ca22e /src
parente60bf1807aa9d02552948781f8ffa8dcc6c40f16 (diff)
downloadcheckstyle-cd88872f9db17c838641bcd32ad7f334893827c0.tar.gz
Issue #3729: Reevaluate tokens in IllegalTokenText
Diffstat (limited to 'src')
-rw-r--r--src/main/java/com/puppycrawl/tools/checkstyle/checks/coding/IllegalTokenTextCheck.java13
-rw-r--r--src/main/java/com/puppycrawl/tools/checkstyle/utils/TokenUtils.java8
-rw-r--r--src/test/java/com/puppycrawl/tools/checkstyle/checks/coding/IllegalTokenTextCheckTest.java29
-rw-r--r--src/test/java/com/puppycrawl/tools/checkstyle/internal/AllChecksTest.java73
-rw-r--r--src/xdocs/config_coding.xml14
5 files changed, 64 insertions, 73 deletions
diff --git a/src/main/java/com/puppycrawl/tools/checkstyle/checks/coding/IllegalTokenTextCheck.java b/src/main/java/com/puppycrawl/tools/checkstyle/checks/coding/IllegalTokenTextCheck.java
index 5960490b8..f6a6b1bae 100644
--- a/src/main/java/com/puppycrawl/tools/checkstyle/checks/coding/IllegalTokenTextCheck.java
+++ b/src/main/java/com/puppycrawl/tools/checkstyle/checks/coding/IllegalTokenTextCheck.java
@@ -23,8 +23,8 @@ import java.util.regex.Pattern;
import com.puppycrawl.tools.checkstyle.api.AbstractCheck;
import com.puppycrawl.tools.checkstyle.api.DetailAST;
+import com.puppycrawl.tools.checkstyle.api.TokenTypes;
import com.puppycrawl.tools.checkstyle.utils.CommonUtils;
-import com.puppycrawl.tools.checkstyle.utils.TokenUtils;
/**
* <p>
@@ -82,7 +82,16 @@ public class IllegalTokenTextCheck
@Override
public int[] getAcceptableTokens() {
- return TokenUtils.getAllTokenIds();
+ return new int[] {
+ TokenTypes.NUM_DOUBLE,
+ TokenTypes.NUM_FLOAT,
+ TokenTypes.NUM_INT,
+ TokenTypes.NUM_LONG,
+ TokenTypes.IDENT,
+ TokenTypes.COMMENT_CONTENT,
+ TokenTypes.STRING_LITERAL,
+ TokenTypes.CHAR_LITERAL,
+ };
}
@Override
diff --git a/src/main/java/com/puppycrawl/tools/checkstyle/utils/TokenUtils.java b/src/main/java/com/puppycrawl/tools/checkstyle/utils/TokenUtils.java
index 85d3ae043..aad1d5659 100644
--- a/src/main/java/com/puppycrawl/tools/checkstyle/utils/TokenUtils.java
+++ b/src/main/java/com/puppycrawl/tools/checkstyle/utils/TokenUtils.java
@@ -103,6 +103,14 @@ public final class TokenUtils {
}
/**
+ * Get total number of TokenTypes.
+ * @return total number of TokenTypes.
+ */
+ public static int getTokenTypesTotalNumber() {
+ return TOKEN_IDS.length;
+ }
+
+ /**
* Get all token IDs that are available in TokenTypes.
* @return array of token IDs
*/
diff --git a/src/test/java/com/puppycrawl/tools/checkstyle/checks/coding/IllegalTokenTextCheckTest.java b/src/test/java/com/puppycrawl/tools/checkstyle/checks/coding/IllegalTokenTextCheckTest.java
index bc4843a23..afb50559f 100644
--- a/src/test/java/com/puppycrawl/tools/checkstyle/checks/coding/IllegalTokenTextCheckTest.java
+++ b/src/test/java/com/puppycrawl/tools/checkstyle/checks/coding/IllegalTokenTextCheckTest.java
@@ -23,12 +23,16 @@ import static com.puppycrawl.tools.checkstyle.checks.coding.IllegalTokenTextChec
import java.io.File;
import java.io.IOException;
+import java.util.Arrays;
+import java.util.List;
import org.junit.Assert;
import org.junit.Test;
import com.puppycrawl.tools.checkstyle.BaseCheckTestSupport;
import com.puppycrawl.tools.checkstyle.DefaultConfiguration;
+import com.puppycrawl.tools.checkstyle.api.TokenTypes;
+import com.puppycrawl.tools.checkstyle.utils.TokenUtils;
public class IllegalTokenTextCheckTest
extends BaseCheckTestSupport {
@@ -122,4 +126,29 @@ public class IllegalTokenTextCheckTest
verify(checkConfig, getPath("InputIllegalTokens.java"), expected);
}
+ @Test
+ public void testAcceptableTokensMakeSense() {
+ final int expectedTokenTypesTotalNumber = 169;
+ Assert.assertEquals("Total number of TokenTypes has changed, acceptable tokens in"
+ + " IllegalTokenTextCheck need to be reconsidered.",
+ expectedTokenTypesTotalNumber, TokenUtils.getTokenTypesTotalNumber());
+
+ final IllegalTokenTextCheck check = new IllegalTokenTextCheck();
+ final int[] allowedTokens = check.getAcceptableTokens();
+ final List<Integer> tokenTypesWithMutableText = Arrays.asList(
+ TokenTypes.NUM_DOUBLE,
+ TokenTypes.NUM_FLOAT,
+ TokenTypes.NUM_INT,
+ TokenTypes.NUM_LONG,
+ TokenTypes.IDENT,
+ TokenTypes.COMMENT_CONTENT,
+ TokenTypes.STRING_LITERAL,
+ TokenTypes.CHAR_LITERAL
+ );
+ for (int tokenType : allowedTokens) {
+ Assert.assertTrue(TokenUtils.getTokenName(tokenType) + " should not be allowed"
+ + " in this check as its text is a constant (IllegalTokenCheck should be used for"
+ + " such cases).", tokenTypesWithMutableText.contains(tokenType));
+ }
+ }
}
diff --git a/src/test/java/com/puppycrawl/tools/checkstyle/internal/AllChecksTest.java b/src/test/java/com/puppycrawl/tools/checkstyle/internal/AllChecksTest.java
index cafb4e61b..4ef7b73a5 100644
--- a/src/test/java/com/puppycrawl/tools/checkstyle/internal/AllChecksTest.java
+++ b/src/test/java/com/puppycrawl/tools/checkstyle/internal/AllChecksTest.java
@@ -119,43 +119,9 @@ public class AllChecksTest extends BaseCheckTestSupport {
Collectors.toSet()));
// we have no need to block specific token text
CHECKSTYLE_TOKENS_IN_CONFIG_TO_IGNORE.put("IllegalTokenText",
- Stream.of("LITERAL_SUPER", "LITERAL_ASSERT", "ENUM_CONSTANT_DEF",
- "TYPE_PARAMETERS", "TYPE_UPPER_BOUNDS", "NUM_DOUBLE", "LITERAL_SWITCH",
- "ANNOTATIONS", "LITERAL_SHORT", "LITERAL_PROTECTED", "FOR_CONDITION",
- "FOR_INIT", "LITERAL_LONG", "MINUS", "OBJBLOCK", "LITERAL_NULL",
- "ANNOTATION", "LITERAL_TRUE", "COMMENT_CONTENT", "LITERAL_CHAR",
- "PARAMETER_DEF", "POST_DEC", "ANNOTATION_FIELD_DEF", "BLOCK_COMMENT_END",
- "TYPE", "LITERAL_INT", "BSR", "ENUM", "LABELED_STAT",
- "ANNOTATION_MEMBER_VALUE_PAIR", "TYPECAST", "LITERAL_SYNCHRONIZED",
- "PLUS_ASSIGN", "DOT", "LPAREN", "LITERAL_IF", "LITERAL_CATCH", "BAND",
- "INTERFACE_DEF", "LOR", "BNOT", "METHOD_CALL", "AT", "ELLIPSIS",
- "ARRAY_INIT", "FOR_EACH_CLAUSE", "LITERAL_THROWS", "CHAR_LITERAL",
- "CASE_GROUP", "POST_INC", "SEMI", "LITERAL_FINALLY", "ASSIGN",
- "RESOURCE_SPECIFICATION", "STATIC_IMPORT", "GENERIC_START", "IMPORT", "SL",
- "VARIABLE_DEF", "LITERAL_DOUBLE", "RCURLY", "RESOURCE", "SR", "COMMA",
- "BAND_ASSIGN", "METHOD_DEF", "LITERAL_VOID", "NUM_LONG",
- "LITERAL_TRANSIENT", "LITERAL_THIS", "LCURLY", "MINUS_ASSIGN",
- "TYPE_LOWER_BOUNDS", "TYPE_ARGUMENT", "LITERAL_CLASS", "INSTANCE_INIT",
- "DIV", "LITERAL_VOLATILE", "STAR", "UNARY_MINUS", "FOR_ITERATOR",
- "NOT_EQUAL", "LE", "LITERAL_INTERFACE", "LITERAL_FLOAT",
- "LITERAL_INSTANCEOF", "BOR_ASSIGN", "LT", "SL_ASSIGN", "ELIST",
- "ANNOTATION_ARRAY_INIT", "MODIFIERS", "LITERAL_BREAK", "EXTENDS_CLAUSE",
- "TYPE_PARAMETER", "LITERAL_DEFAULT", "STATIC_INIT", "BSR_ASSIGN",
- "TYPE_EXTENSION_AND", "BOR", "LITERAL_PRIVATE", "LITERAL_THROW",
- "LITERAL_BYTE", "BXOR", "WILDCARD_TYPE", "FINAL", "PARAMETERS", "RPAREN",
- "SR_ASSIGN", "UNARY_PLUS", "EMPTY_STAT", "LITERAL_STATIC",
- "LITERAL_CONTINUE", "STAR_ASSIGN", "LAMBDA", "RBRACK", "BXOR_ASSIGN",
- "CTOR_CALL", "LITERAL_FALSE", "DO_WHILE", "LITERAL_PUBLIC",
- "LITERAL_WHILE", "PLUS", "INC", "CTOR_DEF", "GENERIC_END", "DIV_ASSIGN",
- "SLIST", "LNOT", "LAND", "LITERAL_ELSE", "ABSTRACT", "STRICTFP",
- "QUESTION", "LITERAL_NEW", "LITERAL_RETURN", "SINGLE_LINE_COMMENT",
- "INDEX_OP", "EXPR", "BLOCK_COMMENT_BEGIN", "PACKAGE_DEF",
- "IMPLEMENTS_CLAUSE", "NUM_FLOAT", "LITERAL_DO", "EOF", "GE", "RESOURCES",
- "MOD", "DEC", "EQUAL", "LITERAL_BOOLEAN", "CLASS_DEF", "COLON",
- "LITERAL_TRY", "ENUM_DEF", "GT", "NUM_INT", "ANNOTATION_DEF",
- "LITERAL_NATIVE", "METHOD_REF", "TYPE_ARGUMENTS", "DOUBLE_COLON", "IDENT",
- "MOD_ASSIGN", "LITERAL_FOR", "SUPER_CTOR_CALL", "STRING_LITERAL",
- "ARRAY_DECLARATOR", "LITERAL_CASE").collect(Collectors.toSet()));
+ Stream.of("NUM_DOUBLE", "NUM_FLOAT", "NUM_INT", "NUM_LONG", "IDENT",
+ "COMMENT_CONTENT", "STRING_LITERAL", "CHAR_LITERAL")
+ .collect(Collectors.toSet()));
// we do not use this check as it is deprecated
CHECKSTYLE_TOKENS_IN_CONFIG_TO_IGNORE.put("WriteTag",
Stream.of("ENUM_CONSTANT_DEF", "METHOD_DEF", "CTOR_DEF", "ANNOTATION_FIELD_DEF")
@@ -234,37 +200,8 @@ public class AllChecksTest extends BaseCheckTestSupport {
.collect(Collectors.toSet()));
GOOGLE_TOKENS_IN_CONFIG_TO_IGNORE.put("IllegalTokenText", Stream.of(
// all other java tokens and text are allowed
- "LITERAL_SUPER", "LITERAL_ASSERT", "ENUM_CONSTANT_DEF", "TYPE_PARAMETERS",
- "TYPE_UPPER_BOUNDS", "NUM_DOUBLE", "LITERAL_SWITCH", "ANNOTATIONS",
- "LITERAL_SHORT", "LITERAL_PROTECTED", "FOR_CONDITION", "FOR_INIT", "LITERAL_LONG",
- "MINUS", "OBJBLOCK", "LITERAL_NULL", "ANNOTATION", "LITERAL_TRUE",
- "COMMENT_CONTENT", "LITERAL_CHAR", "PARAMETER_DEF", "POST_DEC",
- "ANNOTATION_FIELD_DEF", "BLOCK_COMMENT_END", "TYPE", "LITERAL_INT", "BSR", "ENUM",
- "LABELED_STAT", "ANNOTATION_MEMBER_VALUE_PAIR", "TYPECAST", "LITERAL_SYNCHRONIZED",
- "PLUS_ASSIGN", "DOT", "LPAREN", "LITERAL_IF", "LITERAL_CATCH", "BAND",
- "INTERFACE_DEF", "LOR", "BNOT", "METHOD_CALL", "AT", "ELLIPSIS", "ARRAY_INIT",
- "FOR_EACH_CLAUSE", "LITERAL_THROWS", "CASE_GROUP", "POST_INC", "SEMI",
- "LITERAL_FINALLY", "ASSIGN", "RESOURCE_SPECIFICATION", "STATIC_IMPORT",
- "GENERIC_START", "IMPORT", "SL", "VARIABLE_DEF", "LITERAL_DOUBLE", "RCURLY",
- "RESOURCE", "SR", "COMMA", "BAND_ASSIGN", "METHOD_DEF", "LITERAL_VOID",
- "NUM_LONG", "LITERAL_TRANSIENT", "LITERAL_THIS", "LCURLY", "MINUS_ASSIGN",
- "TYPE_LOWER_BOUNDS", "TYPE_ARGUMENT", "LITERAL_CLASS", "INSTANCE_INIT", "DIV",
- "LITERAL_VOLATILE", "STAR", "UNARY_MINUS", "FOR_ITERATOR", "NOT_EQUAL", "LE",
- "LITERAL_INTERFACE", "LITERAL_FLOAT", "LITERAL_INSTANCEOF", "BOR_ASSIGN", "LT",
- "SL_ASSIGN", "ELIST", "ANNOTATION_ARRAY_INIT", "MODIFIERS", "LITERAL_BREAK",
- "EXTENDS_CLAUSE", "TYPE_PARAMETER", "LITERAL_DEFAULT", "STATIC_INIT", "BSR_ASSIGN",
- "TYPE_EXTENSION_AND", "BOR", "LITERAL_PRIVATE", "LITERAL_THROW", "LITERAL_BYTE",
- "BXOR", "WILDCARD_TYPE", "FINAL", "PARAMETERS", "RPAREN", "SR_ASSIGN",
- "UNARY_PLUS", "EMPTY_STAT", "LITERAL_STATIC", "LITERAL_CONTINUE", "STAR_ASSIGN",
- "LAMBDA", "RBRACK", "BXOR_ASSIGN", "CTOR_CALL", "LITERAL_FALSE", "DO_WHILE",
- "LITERAL_PUBLIC", "LITERAL_WHILE", "PLUS", "INC", "CTOR_DEF", "GENERIC_END",
- "DIV_ASSIGN", "SLIST", "LNOT", "LAND", "LITERAL_ELSE", "ABSTRACT", "STRICTFP",
- "QUESTION", "LITERAL_NEW", "LITERAL_RETURN", "SINGLE_LINE_COMMENT", "INDEX_OP",
- "EXPR", "BLOCK_COMMENT_BEGIN", "PACKAGE_DEF", "IMPLEMENTS_CLAUSE", "NUM_FLOAT",
- "LITERAL_DO", "EOF", "GE", "RESOURCES", "MOD", "DEC", "EQUAL", "LITERAL_BOOLEAN",
- "CLASS_DEF", "COLON", "LITERAL_TRY", "ENUM_DEF", "GT", "NUM_INT", "ANNOTATION_DEF",
- "LITERAL_NATIVE", "METHOD_REF", "TYPE_ARGUMENTS", "DOUBLE_COLON", "IDENT",
- "MOD_ASSIGN", "LITERAL_FOR", "SUPER_CTOR_CALL", "ARRAY_DECLARATOR", "LITERAL_CASE")
+ "NUM_DOUBLE", "NUM_FLOAT", "NUM_INT", "NUM_LONG", "IDENT",
+ "COMMENT_CONTENT", "STRING_LITERAL", "CHAR_LITERAL")
.collect(Collectors.toSet()));
GOOGLE_TOKENS_IN_CONFIG_TO_IGNORE.put("OperatorWrap", Stream.of(
// specifically allowed via '4.5.1 Where to break' because the following are
diff --git a/src/xdocs/config_coding.xml b/src/xdocs/config_coding.xml
index 5e49c090e..d02afcf8a 100644
--- a/src/xdocs/config_coding.xml
+++ b/src/xdocs/config_coding.xml
@@ -1654,7 +1654,8 @@ class SomeClass
<section name="IllegalTokenText">
<subsection name="Description">
<p>
- Checks for illegal token text.
+ Checks specified tokens text for matching an illegal pattern from
+ <code>format</code> property. By default no tokens are specified.
</p>
</subsection>
@@ -1688,8 +1689,15 @@ class SomeClass
<tr>
<td>tokens</td>
<td>tokens to check</td>
- <td>subset of tokens <a
- href="apidocs/com/puppycrawl/tools/checkstyle/api/TokenTypes.html">TokenTypes</a>.
+ <td>subset of tokens
+ <a href="apidocs/com/puppycrawl/tools/checkstyle/api/TokenTypes.html#NUM_DOUBLE">NUM_DOUBLE</a>,
+ <a href="apidocs/com/puppycrawl/tools/checkstyle/api/TokenTypes.html#NUM_FLOAT">NUM_FLOAT</a>,
+ <a href="apidocs/com/puppycrawl/tools/checkstyle/api/TokenTypes.html#NUM_INT">NUM_INT</a>,
+ <a href="apidocs/com/puppycrawl/tools/checkstyle/api/TokenTypes.html#NUM_LONG">NUM_LONG</a>,
+ <a href="apidocs/com/puppycrawl/tools/checkstyle/api/TokenTypes.html#IDENT">IDENT</a>,
+ <a href="apidocs/com/puppycrawl/tools/checkstyle/api/TokenTypes.html#COMMENT_CONTENT">COMMENT_CONTENT</a>,
+ <a href="apidocs/com/puppycrawl/tools/checkstyle/api/TokenTypes.html#STRING_LITERAL">STRING_LITERAL</a>,
+ <a href="apidocs/com/puppycrawl/tools/checkstyle/api/TokenTypes.html#CHAR_LITERAL">CHAR_LITERAL</a>.
</td>
<td>empty</td>
</tr>