public class MultipleStringLiteralsCheck extends AbstractCheck
Checks for multiple occurrences of the same string literal within a single file.
Rationale: Code duplication makes maintenance more difficult, so it can be better to replace the multiple occurrences with a constant.
allowedDuplicates - Specify the maximum number of occurrences
to allow without generating a warning.
Type is int.
Default value is 1.
ignoreStringsRegexp - Specify RegExp for ignored strings (with quotation marks).
Type is java.util.regex.Pattern.
Default value is "^""$".
ignoreOccurrenceContext - Specify token type names where duplicate
strings are ignored even if they don't match ignoredStringsRegexp. This allows you to
exclude syntactical contexts like annotations or static initializers from the check.
Type is java.lang.String[].
Validation type is tokenTypesSet.
Default value is ANNOTATION.
To configure the check:
<module name="MultipleStringLiterals"/>
To configure the check so that it allows two occurrences of each string:
<module name="MultipleStringLiterals"> <property name="allowedDuplicates" value="2"/> </module>
To configure the check so that it ignores ", " and empty strings:
<module name="MultipleStringLiterals">
<property name="ignoreStringsRegexp"
value='^(("")|(", "))$'/>
</module>
To configure the check so that it flags duplicate strings in all syntactical contexts,
even in annotations like @SuppressWarnings("unchecked"):
<module name="MultipleStringLiterals"> <property name="ignoreOccurrenceContext" value=""/> </module>
Parent is com.puppycrawl.tools.checkstyle.TreeWalker
Violation Message Keys:
multiple.string.literal
AutomaticBean.OutputStreamOptions| Modifier and Type | Field and Description |
|---|---|
private static java.util.regex.Pattern |
ALL_NEW_LINES
Compiled pattern for all system newlines.
|
private int |
allowedDuplicates
Specify the maximum number of occurrences to allow without generating a warning.
|
private java.util.BitSet |
ignoreOccurrenceContext
Specify token type names where duplicate strings are ignored even if they
don't match ignoredStringsRegexp.
|
private java.util.regex.Pattern |
ignoreStringsRegexp
Specify RegExp for ignored strings (with quotation marks).
|
static java.lang.String |
MSG_KEY
A key is pointing to the warning message text in "messages.properties"
file.
|
private static java.lang.String |
QUOTE
String used to amend TEXT_BLOCK_CONTENT so that it matches STRING_LITERAL.
|
private java.util.Map<java.lang.String,java.util.List<DetailAST>> |
stringMap
The found strings and their tokens.
|
| Constructor and Description |
|---|
MultipleStringLiteralsCheck()
Construct an instance with default values.
|
| Modifier and Type | Method and Description |
|---|---|
void |
beginTree(DetailAST rootAST)
Called before the starting to process a tree.
|
void |
finishTree(DetailAST rootAST)
Called after finished processing 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 boolean |
isInIgnoreOccurrenceContext(DetailAST ast)
Analyses the path from the AST root to a given AST for occurrences
of the token types in
ignoreOccurrenceContext. |
void |
setAllowedDuplicates(int allowedDuplicates)
Setter to specify the maximum number of occurrences to allow without generating a warning.
|
void |
setIgnoreOccurrenceContext(java.lang.String... strRep)
Setter to specify token type names where duplicate strings are ignored even
if they don't match ignoredStringsRegexp.
|
void |
setIgnoreStringsRegexp(java.util.regex.Pattern ignoreStringsRegexp)
Setter to specify RegExp for ignored strings (with quotation marks).
|
void |
visitToken(DetailAST ast)
Called to process a token.
|
clearViolations, destroy, getFileContents, getLine, getLineCodePoints, getLines, getTabWidth, getTokenNames, getViolations, init, isCommentNodesRequired, leaveToken, log, log, log, setFileContents, setTabWidth, setTokensfinishLocalSetup, getCustomMessages, getId, getMessageBundle, getSeverity, getSeverityLevel, setId, setSeverityconfigure, contextualize, getConfiguration, setupChildpublic static final java.lang.String MSG_KEY
private static final java.util.regex.Pattern ALL_NEW_LINES
private static final java.lang.String QUOTE
private final java.util.Map<java.lang.String,java.util.List<DetailAST>> stringMap
private final java.util.BitSet ignoreOccurrenceContext
private int allowedDuplicates
private java.util.regex.Pattern ignoreStringsRegexp
public MultipleStringLiteralsCheck()
public void setAllowedDuplicates(int allowedDuplicates)
allowedDuplicates - The maximum number of duplicates.public final void setIgnoreStringsRegexp(java.util.regex.Pattern ignoreStringsRegexp)
ignoreStringsRegexp - regular expression pattern for ignored stringspublic final void setIgnoreOccurrenceContext(java.lang.String... strRep)
strRep - the string representation of the tokens interested inpublic int[] getDefaultTokens()
AbstractCheckgetDefaultTokens in class AbstractCheckTokenTypespublic int[] getAcceptableTokens()
AbstractCheckgetAcceptableTokens in class AbstractCheckTokenTypespublic int[] getRequiredTokens()
AbstractCheckgetRequiredTokens in class AbstractCheckTokenTypespublic void visitToken(DetailAST ast)
AbstractCheckvisitToken in class AbstractCheckast - the token to processprivate boolean isInIgnoreOccurrenceContext(DetailAST ast)
ignoreOccurrenceContext.ast - the node from where to start searching towards the root nodeignoreOccurrenceContext.public void beginTree(DetailAST rootAST)
AbstractCheckbeginTree in class AbstractCheckrootAST - the root of the treepublic void finishTree(DetailAST rootAST)
AbstractCheckfinishTree in class AbstractCheckrootAST - the root of the treeCopyright © 2001-2022. All Rights Reserved.