public class SuppressWithNearbyCommentFilter extends AutomaticBean implements Filter
A filter that uses nearby comments to suppress audit events.
This check is philosophically similar to SuppressionCommentFilter
.
Unlike SuppressionCommentFilter
, this filter does not require
pairs of comments. This check may be used to suppress warnings in the
current line:
offendingLine(for, whatever, reason); // SUPPRESS ParameterNumberCheckor it may be configured to span multiple lines, either forward:
// PERMIT MultipleVariableDeclarations NEXT 3 LINES double x1 = 1.0, y1 = 0.0, z1 = 0.0; double x2 = 0.0, y2 = 1.0, z2 = 0.0; double x3 = 0.0, y3 = 0.0, z3 = 1.0;or reverse:
try { thirdPartyLibrary.method(); } catch (RuntimeException ex) { // ALLOW ILLEGAL CATCH BECAUSE third party API wraps everything // in RuntimeExceptions. ... }
See SuppressionCommentFilter
for usage notes.
Modifier and Type | Class and Description |
---|---|
static class |
SuppressWithNearbyCommentFilter.Tag
A Tag holds a suppression comment and its location.
|
Modifier and Type | Field and Description |
---|---|
private boolean |
checkC
Whether to look for trigger in C-style comments.
|
private boolean |
checkCPP
Whether to look for trigger in C++-style comments.
|
private java.lang.String |
checkFormat
The comment pattern that triggers suppression.
|
private java.util.regex.Pattern |
commentFormat
Parsed comment regexp that marks checkstyle suppression region.
|
private static java.lang.String |
DEFAULT_CHECK_FORMAT
Default regex for checks that should be suppressed.
|
private static java.lang.String |
DEFAULT_COMMENT_FORMAT
Format to turns checkstyle reporting off.
|
private static java.lang.String |
DEFAULT_INFLUENCE_FORMAT
Default regex for lines that should be suppressed.
|
private java.lang.ref.WeakReference<FileContents> |
fileContentsReference
References the current FileContents for this filter.
|
private java.lang.String |
influenceFormat
The influence of the suppression comment.
|
private java.lang.String |
messageFormat
The message format to suppress.
|
private java.util.List<SuppressWithNearbyCommentFilter.Tag> |
tags
Tagged comments.
|
Constructor and Description |
---|
SuppressWithNearbyCommentFilter() |
Modifier and Type | Method and Description |
---|---|
boolean |
accept(AuditEvent event)
Determines whether or not a filtered AuditEvent is accepted.
|
private void |
addTag(java.lang.String text,
int line)
Adds a comment suppression
Tag to the list of all tags. |
FileContents |
getFileContents()
Returns FileContents for this filter.
|
private boolean |
matchesTag(AuditEvent event)
Whether current event matches any tag from
tags . |
void |
setCheckC(boolean checkC)
Set whether to look in C comments.
|
void |
setCheckCPP(boolean checkCpp)
Set whether to look in C++ comments.
|
void |
setCheckFormat(java.lang.String format)
Set the format for a check.
|
void |
setCommentFormat(java.util.regex.Pattern pattern)
Set the format for a comment that turns off reporting.
|
void |
setFileContents(FileContents fileContents)
Set the FileContents for this filter.
|
void |
setInfluenceFormat(java.lang.String format)
Set the format for the influence of this check.
|
void |
setMessageFormat(java.lang.String format)
Set the format for a message.
|
private void |
tagCommentLine(java.lang.String text,
int line)
Tags a string if it matches the format for turning
checkstyle reporting on or the format for turning reporting off.
|
private void |
tagSuppressions()
Collects all the suppression tags for all comments into a list and
sorts the list.
|
private void |
tagSuppressions(java.util.Collection<TextBlock> comments)
Appends the suppressions in a collection of comments to the full
set of suppression tags.
|
configure, contextualize, finishLocalSetup, getConfiguration, setupChild
private static final java.lang.String DEFAULT_COMMENT_FORMAT
private static final java.lang.String DEFAULT_CHECK_FORMAT
private static final java.lang.String DEFAULT_INFLUENCE_FORMAT
private final java.util.List<SuppressWithNearbyCommentFilter.Tag> tags
private boolean checkC
private boolean checkCPP
private java.util.regex.Pattern commentFormat
private java.lang.String checkFormat
private java.lang.String messageFormat
private java.lang.String influenceFormat
private java.lang.ref.WeakReference<FileContents> fileContentsReference
public final void setCommentFormat(java.util.regex.Pattern pattern)
pattern
- a pattern.public FileContents getFileContents()
public void setFileContents(FileContents fileContents)
fileContents
- the FileContents for this filter.public final void setCheckFormat(java.lang.String format)
format
- a String
valuepublic void setMessageFormat(java.lang.String format)
format
- a String
valuepublic final void setInfluenceFormat(java.lang.String format)
format
- a String
valuepublic void setCheckCPP(boolean checkCpp)
checkCpp
- true
if C++ comments are checked.public void setCheckC(boolean checkC)
checkC
- true
if C comments are checked.public boolean accept(AuditEvent event)
Filter
private boolean matchesTag(AuditEvent event)
tags
.private void tagSuppressions()
private void tagSuppressions(java.util.Collection<TextBlock> comments)
comments
- the set of comments.private void tagCommentLine(java.lang.String text, int line)
text
- the string to tag.line
- the line number of text.private void addTag(java.lang.String text, int line)
Tag
to the list of all tags.text
- the text of the tag.line
- the line number of the tag.