public class SuppressWarningsCheck extends AbstractCheck
Allows to specify what warnings that
@SuppressWarnings is not allowed to suppress.
You can also specify a list of TokenTypes that
the configured warning(s) cannot be suppressed on.
Limitations: This check does not consider conditionals inside the @SuppressWarnings annotation.
For example:
@SuppressWarnings((false) ? (true) ? "unchecked" : "foo" : "unused").
According to the above example, the "unused" warning is being suppressed
not the "unchecked" or "foo" warnings. All of these warnings will be
considered and matched against regardless of what the conditional
evaluates to.
The check also does not support code like @SuppressWarnings("un" + "used"),
@SuppressWarnings((String) "unused") or
@SuppressWarnings({('u' + (char)'n') + (""+("used" + (String)"")),}).
By default, any warning specified will be disallowed on all legal TokenTypes unless otherwise specified via the tokens property.
Also, by default warnings that are empty strings or all whitespace (regex: ^$|^\s+$) are flagged. By specifying, the format property these defaults no longer apply.
This check can be configured so that the "unchecked" and "unused" warnings cannot be suppressed on anything but variable and parameter declarations. See below of an example.
format - Specify the RegExp to match against warnings. Any warning
being suppressed matching this pattern will be flagged.
Type is java.util.regex.Pattern.
Default value is "^\s*+$".
tokens - tokens to check
Type is java.lang.String[].
Validation type is tokenSet.
Default value is:
CLASS_DEF,
INTERFACE_DEF,
ENUM_DEF,
ANNOTATION_DEF,
ANNOTATION_FIELD_DEF,
ENUM_CONSTANT_DEF,
PARAMETER_DEF,
VARIABLE_DEF,
METHOD_DEF,
CTOR_DEF,
COMPACT_CTOR_DEF,
RECORD_DEF.
To configure the check:
<module name="SuppressWarnings"/>
To configure the check so that the "unchecked" and "unused" warnings cannot be suppressed on anything but variable and parameter declarations.
<module name="SuppressWarnings">
<property name="format"
value="^unchecked$|^unused$"/>
<property name="tokens"
value="
CLASS_DEF,INTERFACE_DEF,ENUM_DEF,
ANNOTATION_DEF,ANNOTATION_FIELD_DEF,
ENUM_CONSTANT_DEF,METHOD_DEF,CTOR_DEF
"/>
</module>
Parent is com.puppycrawl.tools.checkstyle.TreeWalker
Violation Message Keys:
suppressed.warning.not.allowed
AutomaticBean.OutputStreamOptions| Modifier and Type | Field and Description |
|---|---|
private java.util.regex.Pattern |
format
Specify the RegExp to match against warnings.
|
private static java.lang.String |
FQ_SUPPRESS_WARNINGS
Fully-qualified
SuppressWarnings
annotation name. |
static java.lang.String |
MSG_KEY_SUPPRESSED_WARNING_NOT_ALLOWED
A key is pointing to the warning message text in "messages.properties"
file.
|
private static java.lang.String |
SUPPRESS_WARNINGS
SuppressWarnings annotation name. |
| Constructor and Description |
|---|
SuppressWarningsCheck() |
| Modifier and Type | Method and Description |
|---|---|
private static DetailAST |
findWarningsHolder(DetailAST annotation)
Find the parent (holder) of the of the warnings (Expr).
|
int[] |
getAcceptableTokens()
The configurable token set.
|
private static DetailAST |
getCondLeft(DetailAST cond)
Retrieves the left side of a conditional.
|
private static DetailAST |
getCondRight(DetailAST cond)
Retrieves the right side of a conditional.
|
int[] |
getDefaultTokens()
Returns the default token a check is interested in.
|
int[] |
getRequiredTokens()
The tokens that this check must be registered for.
|
private static DetailAST |
getSuppressWarnings(DetailAST ast)
Gets the
SuppressWarnings annotation
that is annotating the AST. |
private void |
logMatch(DetailAST ast,
java.lang.String warningText)
This method looks for a warning that matches a configured expression.
|
private static java.lang.String |
removeQuotes(java.lang.String warning)
Strips a single double quote from the front and back of a string.
|
void |
setFormat(java.util.regex.Pattern pattern)
Setter to specify the RegExp to match against warnings.
|
void |
visitToken(DetailAST ast)
Called to process a token.
|
private void |
walkConditional(DetailAST cond)
Recursively walks a conditional expression checking the left
and right sides, checking for matches and
logging violations.
|
beginTree, clearViolations, destroy, finishTree, 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_SUPPRESSED_WARNING_NOT_ALLOWED
private static final java.lang.String SUPPRESS_WARNINGS
SuppressWarnings annotation name.private static final java.lang.String FQ_SUPPRESS_WARNINGS
SuppressWarnings
annotation name.private java.util.regex.Pattern format
public SuppressWarningsCheck()
public final void setFormat(java.util.regex.Pattern pattern)
pattern - the new patternpublic final int[] getDefaultTokens()
AbstractCheckgetDefaultTokens in class AbstractCheckTokenTypespublic final int[] getAcceptableTokens()
AbstractCheckgetAcceptableTokens in class AbstractCheckTokenTypespublic int[] getRequiredTokens()
AbstractCheckgetRequiredTokens in class AbstractCheckTokenTypespublic void visitToken(DetailAST ast)
AbstractCheckvisitToken in class AbstractCheckast - the token to processprivate static DetailAST getSuppressWarnings(DetailAST ast)
SuppressWarnings annotation
that is annotating the AST. If the annotation does not exist
this method will return null.ast - the ASTSuppressWarnings annotationprivate void logMatch(DetailAST ast, java.lang.String warningText)
ast - the location to place the violationwarningText - the warning.private static DetailAST findWarningsHolder(DetailAST annotation)
annotation - the annotationprivate static java.lang.String removeQuotes(java.lang.String warning)
For example:
Input String = "unchecked"Output String = unchecked
warning - the warning stringprivate void walkConditional(DetailAST cond)
cond - a Conditional type
QUESTIONprivate static DetailAST getCondLeft(DetailAST cond)
cond - cond a conditional type
QUESTIONprivate static DetailAST getCondRight(DetailAST cond)
cond - a conditional type
QUESTIONCopyright © 2001-2022. All Rights Reserved.