Class SuppressWarningsHolder
- 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.SuppressWarningsHolder
-
- All Implemented Interfaces:
Configurable
,Contextualizable
public class SuppressWarningsHolder extends AbstractCheck
Maintains a set of check suppressions from@SuppressWarnings
annotations. It allows to prevent Checkstyle from reporting violations from parts of code that were annotated with@SuppressWarnings
and using name of the check to be excluded. It is possible to suppress all the checkstyle warnings with the argument"all"
. You can also use acheckstyle:
prefix to prevent compiler from processing these annotations. You can also define aliases for check names that need to be suppressed.-
Property
aliasList
- Specify aliases for check names that can be used in code withinSuppressWarnings
in a format of comma separated attribute=value entries. The attribute is the fully qualified name of the Check and value is its alias. Type isjava.lang.String[]
. Default value is""
.
Parent is
com.puppycrawl.tools.checkstyle.TreeWalker
- Since:
- 5.7
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description private static class
SuppressWarningsHolder.Entry
Records a particular suppression for a region of a file.-
Nested classes/interfaces inherited from class com.puppycrawl.tools.checkstyle.AbstractAutomaticBean
AbstractAutomaticBean.OutputStreamOptions
-
-
Field Summary
Fields Modifier and Type Field Description private static String
ALL_WARNING_MATCHING_ID
Special warning id for matching all the warnings.private static Map<String,String>
CHECK_ALIAS_MAP
A map from check source names to suppression aliases.private static String
CHECK_SUFFIX
Suffix to be removed from subclasses of Check.private static String
CHECKSTYLE_PREFIX
Optional prefix for warning suppressions that are only intended to be recognized by checkstyle.private static ThreadLocal<List<SuppressWarningsHolder.Entry>>
ENTRIES
A thread-local holder for the list of suppression entries for the last file parsed.private static String
JAVA_LANG_PREFIX
Java.lang namespace prefix, which is stripped from SuppressWarnings.private static Pattern
NEWLINE
Compiled pattern used to match preceding newline in text block content.private static Pattern
WHITESPACE
Compiled pattern used to match whitespace in text block content.
-
Constructor Summary
Constructors Constructor Description SuppressWarningsHolder()
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description private static void
addSuppressions(List<String> values, DetailAST targetAST)
Method to populate list of suppression entries.void
beginTree(DetailAST rootAST)
Called before the starting to process a tree.void
destroy()
Destroy the check.private static List<String>
findAllExpressionsInChildren(DetailAST parent)
Method looks at children and returns list of expressions in strings.int[]
getAcceptableTokens()
The configurable token set.static String
getAlias(String sourceName)
Returns the alias for the source name of a check.private static List<String>
getAllAnnotationValues(DetailAST ast)
Get all annotation values.private static Optional<DetailAST>
getAnnotationTarget(DetailAST ast)
Get target of annotation.private static List<String>
getAnnotationValues(DetailAST ast)
Returns the annotation values represented by an AST.private static String
getContentWithoutPrecedingWhitespace(String textBlockContent)
Remove preceding newline and whitespace from the content of a text block.static String
getDefaultAlias(String sourceName)
Returns the default alias for the source name of a check, which is the source name in lower case with any dotted prefix or "Check"/"check" suffix removed.int[]
getDefaultTokens()
Returns the default token a check is interested in.private static String
getIdentifier(DetailAST ast)
Returns the Java identifier represented by an AST.private static DetailAST
getNthChild(DetailAST ast, int index)
Returns the n'th child of an AST node.int[]
getRequiredTokens()
The tokens that this check must be registered for.private static String
getStringExpr(DetailAST ast)
Returns the literal string expression represented by an AST.static boolean
isSuppressed(AuditEvent event)
Checks for a suppression of a check with the given source name and location in the last file processed.private static boolean
isSuppressedAfterEventStart(int line, int column, SuppressWarningsHolder.Entry entry)
Checks whether suppression entry position is after the audit event occurrence position in the source file.private static boolean
isSuppressedBeforeEventEnd(int line, int column, SuppressWarningsHolder.Entry entry)
Checks whether suppression entry position is before the audit event occurrence position in the source file.private static void
registerAlias(String sourceName, String checkAlias)
Registers an alias for the source name of a check.private static String
removeCheckstylePrefixIfExists(String checkName)
Method removes checkstyle prefix (checkstyle:) from check name if exists.void
setAliasList(String... aliasList)
Setter to specify aliases for check names that can be used in code withinSuppressWarnings
in a format of comma separated attribute=value entries.void
visitToken(DetailAST ast)
Called to process a token.-
Methods inherited from class com.puppycrawl.tools.checkstyle.api.AbstractCheck
clearViolations, finishTree, getFileContents, getFilePath, getLine, getLineCodePoints, getLines, getTabWidth, getTokenNames, getViolations, init, isCommentNodesRequired, leaveToken, log, log, log, setFileContents, setTabWidth, setTokens
-
Methods inherited from class com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter
finishLocalSetup, getCustomMessages, getId, getMessageBundle, getSeverity, getSeverityLevel, setId, setSeverity
-
Methods inherited from class com.puppycrawl.tools.checkstyle.AbstractAutomaticBean
configure, contextualize, getConfiguration, setupChild
-
-
-
-
Field Detail
-
CHECKSTYLE_PREFIX
private static final String CHECKSTYLE_PREFIX
Optional prefix for warning suppressions that are only intended to be recognized by checkstyle. For instance, to suppressFallThroughCheck
only in checkstyle (and not in javac), use the suppression"checkstyle:fallthrough"
or"checkstyle:FallThrough"
. To suppress the warning in both tools, just use"fallthrough"
.- See Also:
- Constant Field Values
-
JAVA_LANG_PREFIX
private static final String JAVA_LANG_PREFIX
Java.lang namespace prefix, which is stripped from SuppressWarnings.- See Also:
- Constant Field Values
-
CHECK_SUFFIX
private static final String CHECK_SUFFIX
Suffix to be removed from subclasses of Check.- See Also:
- Constant Field Values
-
ALL_WARNING_MATCHING_ID
private static final String ALL_WARNING_MATCHING_ID
Special warning id for matching all the warnings.- See Also:
- Constant Field Values
-
CHECK_ALIAS_MAP
private static final Map<String,String> CHECK_ALIAS_MAP
A map from check source names to suppression aliases.
-
ENTRIES
private static final ThreadLocal<List<SuppressWarningsHolder.Entry>> ENTRIES
A thread-local holder for the list of suppression entries for the last file parsed.
-
WHITESPACE
private static final Pattern WHITESPACE
Compiled pattern used to match whitespace in text block content.
-
-
Constructor Detail
-
SuppressWarningsHolder
public SuppressWarningsHolder()
-
-
Method Detail
-
getDefaultAlias
public static String getDefaultAlias(String sourceName)
Returns the default alias for the source name of a check, which is the source name in lower case with any dotted prefix or "Check"/"check" suffix removed.- Parameters:
sourceName
- the source name of the check (generally the class name)- Returns:
- the default alias for the given check
-
getAlias
public static String getAlias(String sourceName)
Returns the alias for the source name of a check. If an alias has been explicitly registered viasetAliasList(String...)
, that alias is returned; otherwise, the default alias is used.- Parameters:
sourceName
- the source name of the check (generally the class name)- Returns:
- the current alias for the given check
-
registerAlias
private static void registerAlias(String sourceName, String checkAlias)
Registers an alias for the source name of a check.- Parameters:
sourceName
- the source name of the check (generally the class name)checkAlias
- the alias used inSuppressWarnings
annotations
-
setAliasList
public void setAliasList(String... aliasList)
Setter to specify aliases for check names that can be used in code withinSuppressWarnings
in a format of comma separated attribute=value entries. The attribute is the fully qualified name of the Check and value is its alias.- Parameters:
aliasList
- comma-separated alias assignments- Throws:
IllegalArgumentException
- when alias item does not have '='- Since:
- 5.7
-
isSuppressed
public static boolean isSuppressed(AuditEvent event)
Checks for a suppression of a check with the given source name and location in the last file processed.- Parameters:
event
- audit event.- Returns:
- whether the check with the given name is suppressed at the given source location
-
isSuppressedAfterEventStart
private static boolean isSuppressedAfterEventStart(int line, int column, SuppressWarningsHolder.Entry entry)
Checks whether suppression entry position is after the audit event occurrence position in the source file.- Parameters:
line
- the line number in the source file where the event occurred.column
- the column number in the source file where the event occurred.entry
- suppression entry.- Returns:
- true if suppression entry position is after the audit event occurrence position in the source file.
-
isSuppressedBeforeEventEnd
private static boolean isSuppressedBeforeEventEnd(int line, int column, SuppressWarningsHolder.Entry entry)
Checks whether suppression entry position is before the audit event occurrence position in the source file.- Parameters:
line
- the line number in the source file where the event occurred.column
- the column number in the source file where the event occurred.entry
- suppression entry.- Returns:
- true if suppression entry position is before the audit event occurrence position in the source file.
-
getDefaultTokens
public int[] getDefaultTokens()
Description copied from class:AbstractCheck
Returns the default token a check is interested in. Only used if the configuration for a check does not define the tokens.- Specified by:
getDefaultTokens
in classAbstractCheck
- Returns:
- the default tokens
- See Also:
TokenTypes
-
getAcceptableTokens
public int[] getAcceptableTokens()
Description copied from class:AbstractCheck
The 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:
getAcceptableTokens
in classAbstractCheck
- Returns:
- the token set this check is designed for.
- See Also:
TokenTypes
-
getRequiredTokens
public int[] getRequiredTokens()
Description copied from class:AbstractCheck
The tokens that this check must be registered for.- Specified by:
getRequiredTokens
in classAbstractCheck
- Returns:
- the token set this must be registered for.
- See Also:
TokenTypes
-
beginTree
public void beginTree(DetailAST rootAST)
Description copied from class:AbstractCheck
Called before the starting to process a tree. Ideal place to initialize information that is to be collected whilst processing a tree.- Overrides:
beginTree
in classAbstractCheck
- Parameters:
rootAST
- the root of the tree
-
visitToken
public void visitToken(DetailAST ast)
Description copied from class:AbstractCheck
Called to process a token.- Overrides:
visitToken
in classAbstractCheck
- Parameters:
ast
- the token to process
-
addSuppressions
private static void addSuppressions(List<String> values, DetailAST targetAST)
Method to populate list of suppression entries.- Parameters:
values
- - list of check namestargetAST
- - annotation target
-
removeCheckstylePrefixIfExists
private static String removeCheckstylePrefixIfExists(String checkName)
Method removes checkstyle prefix (checkstyle:) from check name if exists.- Parameters:
checkName
- - name of the check- Returns:
- check name without prefix
-
getAllAnnotationValues
private static List<String> getAllAnnotationValues(DetailAST ast)
Get all annotation values.- Parameters:
ast
- annotation token- Returns:
- list values
- Throws:
IllegalArgumentException
- if there is an unknown annotation value type.
-
getAnnotationTarget
private static Optional<DetailAST> getAnnotationTarget(DetailAST ast)
Get target of annotation.- Parameters:
ast
- the AST node to get the child of- Returns:
- get target of annotation
- Throws:
IllegalArgumentException
- if there is an unexpected container type.
-
getNthChild
private static DetailAST getNthChild(DetailAST ast, int index)
Returns the n'th child of an AST node.- Parameters:
ast
- the AST node to get the child ofindex
- the index of the child to get- Returns:
- the n'th child of the given AST node, or
null
if none
-
getIdentifier
private static String getIdentifier(DetailAST ast)
Returns the Java identifier represented by an AST.- Parameters:
ast
- an AST node for an IDENT or DOT- Returns:
- the Java identifier represented by the given AST subtree
- Throws:
IllegalArgumentException
- if the AST is invalid
-
getStringExpr
private static String getStringExpr(DetailAST ast)
Returns the literal string expression represented by an AST.- Parameters:
ast
- an AST node for an EXPR- Returns:
- the Java string represented by the given AST expression or empty string if expression is too complex
- Throws:
IllegalArgumentException
- if the AST is invalid
-
getAnnotationValues
private static List<String> getAnnotationValues(DetailAST ast)
Returns the annotation values represented by an AST.- Parameters:
ast
- an AST node for an EXPR or ANNOTATION_ARRAY_INIT- Returns:
- the list of Java string represented by the given AST for an expression or annotation array initializer
- Throws:
IllegalArgumentException
- if the AST is invalid
-
findAllExpressionsInChildren
private static List<String> findAllExpressionsInChildren(DetailAST parent)
Method looks at children and returns list of expressions in strings.- Parameters:
parent
- ast, that contains children- Returns:
- list of expressions in strings
-
getContentWithoutPrecedingWhitespace
private static String getContentWithoutPrecedingWhitespace(String textBlockContent)
Remove preceding newline and whitespace from the content of a text block.- Parameters:
textBlockContent
- the actual text in a text block.- Returns:
- content of text block with preceding whitespace and newline removed.
-
destroy
public void destroy()
Description copied from class:AbstractCheck
Destroy the check. It is being retired from service.- Overrides:
destroy
in classAbstractCheck
-
-