Class IllegalSymbolCheck
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.coding.IllegalSymbolCheck
- All Implemented Interfaces:
Configurable,Contextualizable
Checks that specified symbols (by Unicode code points or ranges) are not used in code.
By default, blocks common symbol ranges.
Rationale: This check helps prevent emoji symbols and special characters in code (commonly added by AI tools), enforce coding standards, or forbid specific Unicode characters.
Default ranges cover:
- U+2190–U+27BF: Arrows, Mathematical Operators, Box Drawing, Geometric Shapes, Miscellaneous Symbols, and Dingbats
- U+1F600–U+1F64F: Emoticons
- U+1F680–U+1F6FF: Transport and Map Symbols
- U+1F700–U+10FFFF: Alchemical Symbols and other pictographic symbols
For a complete list of Unicode characters and ranges, see: List of Unicode characters
-
Property
symbolCodes- Specify the symbols to check for, as Unicode code points or ranges. Format: comma-separated list of hex codes or ranges (e.g.,"0x2705, 0x1F600-0x1F64F"). To allow only ASCII characters, use"0x0080-0x10FFFF". Type isjava.lang.String. Default value is"0x2190-0x27BF, 0x1F600-0x1F64F, 0x1F680-0x1F6FF, 0x1F700-0x10FFFF".
- Since:
- 13.4.0
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionprivate static final recordRepresents a Unicode code point range.Nested classes/interfaces inherited from class com.puppycrawl.tools.checkstyle.AbstractAutomaticBean
AbstractAutomaticBean.OutputStreamOptions -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final Set<IllegalSymbolCheck.CodePointRange> Set of Unicode ranges to disallow.private static final StringDefault symbol codes to check for.static final StringA key is pointing to the warning message text in "messages.properties" file.private static final StringSeparator used for defining ranges.Set of individual Unicode code points to disallow.private StringSpecify the symbols to check for, as Unicode code points or ranges. -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionint[]The configurable token set.int[]Returns the default token a check is interested in.int[]The tokens that this check must be registered for.voidinit()Initializes the check after all properties are set.booleanWhether comment nodes are required or not.private booleanisIllegalSymbol(int codePoint) Determines whether a code point is illegal.private static intparseCodePoint(String str) Parses a Unicode code point from a trimmed string.private voidparseRange(String rangeStr) Parses and stores a Unicode range.private voidParses the configured symbolCodes string into singleCodePoints and codePointRanges.voidsetSymbolCodes(String symbols) Setter to specify the symbols to check for.voidvisitToken(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, leaveToken, log, log, log, setFileContents, setTabWidth, setTokensMethods inherited from class com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter
finishLocalSetup, getCustomMessages, getId, getMessageBundle, getSeverity, getSeverityLevel, setId, setSeverityMethods inherited from class com.puppycrawl.tools.checkstyle.AbstractAutomaticBean
configure, contextualize, getConfiguration, setupChild
-
Field Details
-
MSG_KEY
A key is pointing to the warning message text in "messages.properties" file.- See Also:
-
RANGE_SEPARATOR
Separator used for defining ranges.- See Also:
-
DEFAULT_ILLEGAL_CODES
Default symbol codes to check for.- See Also:
-
singleCodePoints
Set of individual Unicode code points to disallow. -
codePointRanges
Set of Unicode ranges to disallow. -
symbolCodes
Specify the symbols to check for, as Unicode code points or ranges.
-
-
Constructor Details
-
IllegalSymbolCheck
public IllegalSymbolCheck()
-
-
Method Details
-
setSymbolCodes
Setter to specify the symbols to check for.- Parameters:
symbols- the symbols specification- Throws:
IllegalArgumentException- if the format is invalid- Since:
- 13.4.0
-
init
Initializes the check after all properties are set.Ensures that the
symbolCodesproperty is parsed for both default configuration and custom user configuration.- Overrides:
initin classAbstractCheck- Throws:
IllegalArgumentException- if the configured symbol format is invalid
-
getDefaultTokens
Description copied from class:AbstractCheckReturns the default token a check is interested in. Only used if the configuration for a check does not define the tokens.- Specified by:
getDefaultTokensin classAbstractCheck- Returns:
- the default tokens
- See Also:
-
getAcceptableTokens
Description copied from class:AbstractCheckThe 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:
getAcceptableTokensin classAbstractCheck- Returns:
- the token set this check is designed for.
- See Also:
-
getRequiredTokens
Description copied from class:AbstractCheckThe tokens that this check must be registered for.- Specified by:
getRequiredTokensin classAbstractCheck- Returns:
- the token set this must be registered for.
- See Also:
-
isCommentNodesRequired
Description copied from class:AbstractCheckWhether comment nodes are required or not.- Overrides:
isCommentNodesRequiredin classAbstractCheck- Returns:
- false as a default value.
-
visitToken
Description copied from class:AbstractCheckCalled to process a token.- Overrides:
visitTokenin classAbstractCheck- Parameters:
ast- the token to process
-
parseSymbolCodes
Parses the configured symbolCodes string into singleCodePoints and codePointRanges.- Throws:
IllegalArgumentException- if format is invalid
-
isIllegalSymbol
Determines whether a code point is illegal.- Parameters:
codePoint- Unicode code point- Returns:
- true if illegal; false otherwise
-
parseRange
Parses and stores a Unicode range.- Parameters:
rangeStr- range definition string (already trimmed by caller)- Throws:
IllegalArgumentException- if format is invalid
-
parseCodePoint
Parses a Unicode code point from a trimmed string. Supported formats:0x1234,\\u1234,U+1234, or plain hex.- Parameters:
str- input string (already trimmed by caller)- Returns:
- parsed code point
- Throws:
NumberFormatException- if invalid format
-