Issue #819: Split config.html into few pages

This commit is contained in:
Andrei Selkin 2015-10-04 12:22:49 +03:00 committed by Roman Ivanov
parent 040436b960
commit 3ebddae1b9
4 changed files with 801 additions and 826 deletions

View File

@ -47,7 +47,7 @@
href="https://plus.google.com/108692338295483568100/posts"
/>
</poweredBy>
<body>
<menu name="About">
<item name="Checkstyle" href="index.html"/>
@ -58,6 +58,7 @@
<menu name="Documentation">
<item name="Configuration" href="config.html">
<item name="Property Types" href="property_types.html"/>
<item name="Filters" href="config_filters.html"/>
</item>
<item name="Running" href="running.html">

View File

@ -245,6 +245,11 @@
copy and maintain the whole configuration.
</p>
<p>
You can find information about property types on
<a href="property_types.html">Property Types</a> page.
</p>
</section>
<section name="Checker">
@ -637,797 +642,10 @@ OR
can accept or reject an audit event. If all Filters accept an
audit event, then the Checker reports the event. If any Filter
rejects an event, then the Checker does not report the
event.
event. For more information please visit
<a href="config_filters.html">filters page</a>.
</p>
<subsection name="SeverityMatchFilter">
<p>
Filter <code>SeverityMatchFilter</code> decides
audit events according to the <a href="#Severity">severity
level</a> of the event.
</p>
<h5>SeverityMatchFilter Properties</h5>
<table>
<tr>
<th>name</th>
<th>description</th>
<th>type</th>
<th>default value</th>
</tr>
<tr>
<td>severity</td>
<td>the severity level of this filter</td>
<td><a href="property_types.html#severity">severity</a></td>
<td><code>error</code></td>
</tr>
<tr>
<td>acceptOnMatch</td>
<td>
If acceptOnMatch is <code>true</code>, then
the filter accepts an audit event if and only if there is
a match between the event's severity level and property
severity. If acceptOnMatch
is <code>false</code>, then the filter
accepts an audit event if and only if there is not a match
between the event's severity level and property severity.
</td>
<td><a href="property_types.html#boolean">boolean</a></td>
<td><code>true</code></td>
</tr>
</table>
<p>
For example, the following configuration fragment directs the
Checker to not report audit events with severity
level <code>info</code>:
</p>
<source>
&lt;module name=&quot;SeverityMatchFilter&quot;&gt;
&lt;property name=&quot;severity&quot; value=&quot;info&quot;/&gt;
&lt;property name=&quot;acceptOnMatch&quot; value=&quot;false&quot;/&gt;
&lt;/module&gt;
</source>
</subsection>
<subsection name="SuppressionFilter">
<p>
Filter <code>SuppressionFilter</code> rejects
audit events for Check errors according to
a <a href="#XML_Details"><em>suppressions XML
document</em></a> in a file. If there is no configured
suppressions file, the Filter accepts all audit events.
</p>
<h5>SuppressionFilter Properties</h5>
<table>
<tr>
<th>name</th>
<th>description</th>
<th>type</th>
<th>default value</th>
</tr>
<tr>
<td>file</td>
<td>
the location of the <em>suppressions XML document</em> file.
The order the location is checked is:
<ol>
<li>as a filesystem location</li>
<li>
if no file found, and the location starts with either
<code>http://</code> or <code>https://</code>, then it
is interpreted as a URL
</li>
<li>
if no file found, then passed to the
<code>ClassLoader.getResource()</code> method.
</li>
</ol>
</td>
<td><a href="property_types.html#string">string</a></td>
<td><code>none</code></td>
</tr>
</table>
<p>
For example, the following configuration fragment directs the
Checker to use a <code>SuppressionFilter</code>
with suppressions
file <code>docs/suppressions.xml</code>:
</p>
<source>
&lt;module name=&quot;SuppressionFilter&quot;&gt;
&lt;property name=&quot;file&quot; value=&quot;docs/suppressions.xml&quot;/&gt;
&lt;/module&gt;
</source>
<p>
A <a href="#XML_Details"><em>suppressions XML
document</em></a> contains a set
of <code>suppress</code> elements, where
each <code>suppress</code> element can have the
following attributes:
</p>
<ul>
<li>
<code>files</code> -
a <a href="property_types.html#regexp">regular expression</a>
matched against the file name associated with an audit
event. It is mandatory.
</li>
<li>
<code>checks</code> -
a <a href="property_types.html#regexp">regular expression</a>
matched against the name of the check associated with an audit
event. Optional if <code>id</code> is specified.
</li>
<li>
<code>id</code> -
a <a href="property_types.html#string">string</a>
matched against the ID of the check associated with an audit
event. Optional if <code>checks</code> is specified.
</li>
<li>
<code>lines</code> - a comma-separated list of
values, where each value is
an <a href="property_types.html#integer">integer</a> or a
range of integers denoted by integer-integer. It is optional.
</li>
<li>
<code>columns</code> - a comma-separated list of
values, where each value is
an <a href="property_types.html#integer">integer</a> or a
range of integers denoted by integer-integer. It is optional.
</li>
</ul>
<p>
Each audit event is checked against
each <code>suppress</code> element. It is
suppressed if all specified attributes match against the audit
event.
</p>
<h5>Examples</h5>
<p> You can download template of empty suppression filter <a href="files/suppressions_none.xml">here</a>.</p>
<p>
The following suppressions XML document directs
a <code>SuppressionFilter</code> to
reject <code>JavadocStyleCheck</code> errors for
lines 82 and 108 to 122 of
file <code>AbstractComplexityCheck.java</code>,
and <code>MagicNumberCheck</code> errors for line
221 of file <code>JavadocStyleCheck.java</code>:
</p>
<source>
&lt;?xml version=&quot;1.0&quot;?&gt;
&lt;!DOCTYPE suppressions PUBLIC
&quot;-//Puppy Crawl//DTD Suppressions 1.1//EN&quot;
&quot;http://www.puppycrawl.com/dtds/suppressions_1_1.dtd&quot;&gt;
&lt;suppressions&gt;
&lt;suppress checks=&quot;JavadocStyleCheck&quot;
files=&quot;AbstractComplexityCheck.java&quot;
lines=&quot;82,108-122&quot;/&gt;
&lt;suppress checks=&quot;MagicNumberCheck&quot;
files=&quot;JavadocStyleCheck.java&quot;
lines=&quot;221&quot;/&gt;
&lt;/suppressions&gt;
</source>
<p>
As another example to suppress Check by module id:
</p>
<source>
&lt;module name=&quot;DescendantToken&quot;&gt;
&lt;property name=&quot;id&quot; value=&quot;stringEqual&quot;/&gt;
&lt;property name=&quot;tokens&quot; value=&quot;EQUAL,NOT_EQUAL&quot;/&gt;
&lt;property name=&quot;limitedTokens&quot; value=&quot;STRING_LITERAL&quot;/&gt;
&lt;property name=&quot;maximumNumber&quot; value=&quot;0&quot;/&gt;
&lt;property name=&quot;maximumDepth&quot; value=&quot;1&quot;/&gt;
&lt;/module&gt;
&lt;module name=&quot;DescendantToken&quot;&gt;
&lt;property name=&quot;id&quot; value=&quot;switchNoDefault&quot;/&gt;
&lt;property name=&quot;tokens&quot; value=&quot;LITERAL_SWITCH&quot;/&gt;
&lt;property name=&quot;maximumDepth&quot; value=&quot;2&quot;/&gt;
&lt;property name=&quot;limitedTokens&quot; value=&quot;LITERAL_DEFAULT&quot;/&gt;
&lt;property name=&quot;minimumNumber&quot; value=&quot;1&quot;/&gt;
&lt;/module&gt;
</source>
<p>
Then the following can be used to suppress only the first
check and not the second by using
the <code>id</code> attribute:
</p>
<source>
&lt;suppress id=&quot;stringEqual&quot; files=&quot;SomeTestCode.java&quot;/&gt;
</source>
<p>
Suppress checks for hidden files and folders:
</p>
<source>
&lt;suppress files=&quot;[/\\]\..+&quot; checks=&quot;.*&quot;/&gt;
</source>
<p>
Suppress checks for Maven-generated code:
</p>
<source>
&lt;suppress files=&quot;[/\\]target[/\\]&quot; checks=&quot;.*&quot;/&gt;
</source>
<p>
Suppress checks for archives, classes and other binary files:
</p>
<source>
&lt;suppress files=&quot;.+\.(?:jar|zip|war|class|tar|bin)$&quot; checks=&quot;.*&quot;/&gt;
</source>
<p>
Suppress checks for image files:
</p>
<source>
&lt;suppress files=&quot;.+\.(?:png|gif|jpg|jpeg)$&quot; checks=&quot;.*&quot;/&gt;
</source>
<p>
Suppress checks for non-java files:
</p>
<source>
&lt;suppress files=&quot;.+\.(?:txt|xml|csv|sh|thrift|html|sql|eot|ttf|woff|css|png)$&quot; checks=&quot;.*&quot;/&gt;
</source>
<p>
Suppress all checks in generated sources:
</p>
<source>
&lt;suppress checks=&quot;.*&quot; files=&quot;com[\\/]mycompany[\\/]app[\\/]gen[\\/]&quot;/&gt;
</source>
<p>
Suppress FileLength check on integration tests in certain folder:
</p>
<source>
&lt;suppress checks=&quot;FileLength&quot; files=&quot;com[\\/]mycompany[\\/]app[\\/].*IT.java&quot;/&gt;
</source>
</subsection>
<subsection name="SuppressionCommentFilter">
<h4>SuppressionCommentFilter</h4>
<p>
Filter <code>SuppressionCommentFilter</code> uses
pairs of comments to suppress audit events.
</p>
<p>
Rationale: Sometimes there are legitimate reasons for violating
a check. When this is a matter of the code in question and not
personal preference, the best place to override the policy is in
the code itself. Semi-structured comments can be associated
with the check. This is sometimes superior to a separate
suppressions file, which must be kept up-to-date as the source
file is edited.
</p>
<p>
Usage: This filter only works in conjunction with a <code>FileContentsHolder</code>, since that check makes
the suppression comments in the Java files available. A configuration that includes this filter must
configure <code>FileContentsHolder</code> as a
child module of <code>TreeWalker</code>.
</p>
<h5>SuppressionCommentFilter Properties</h5>
<table>
<tr>
<th>name</th>
<th>description</th>
<th>type</th>
<th>default value</th>
</tr>
<tr>
<td>offCommentFormat</td>
<td>comment pattern to trigger filter to begin suppression</td>
<td><a href="property_types.html#regexp">regular expression</a></td>
<td><code>CHECKSTYLE\:OFF</code></td>
</tr>
<tr>
<td>onCommentFormat</td>
<td>comment pattern to trigger filter to end suppression</td>
<td><a href="property_types.html#regexp">regular expression</a></td>
<td><code>CHECKSTYLE\:ON</code></td>
</tr>
<tr>
<td>checkFormat</td>
<td>check pattern to suppress</td>
<td><a href="property_types.html#regexp">regular expression</a></td>
<td><code>.*</code> (all checks)</td>
</tr>
<tr>
<td>messageFormat</td>
<td>message pattern to suppress</td>
<td><a href="property_types.html#regexp">regular expression</a></td>
<td>none</td>
</tr>
<tr>
<td>checkCPP</td>
<td>whether to check C++ style comments (<code>//</code>)</td>
<td><a href="property_types.html#boolean">boolean</a></td>
<td><code>true</code></td>
</tr>
<tr>
<td>checkC</td>
<td>whether to check C style comments (<code>/* ... */</code>)</td>
<td><a href="property_types.html#boolean">boolean</a></td>
<td><code>true</code></td>
</tr>
</table>
<h5>Restrictions</h5>
<p>
offCommentFormat and onCommentFormat must have equal <a
href="https://docs.oracle.com/javase/7/docs/api/java/util/regex/Matcher.html#groupCount()">paren counts</a>.
</p>
<h5>Examples</h5>
<p>
Make sure that comments are available to the filter by enabling FileContentsHolder:
</p>
<source>
&lt;module name=&quot;TreeWalker&quot;&gt;
...
&lt;module name=&quot;FileContentsHolder&quot;/&gt;
...
&lt;/module&gt;
</source>
<p>
To configure a filter to suppress audit events between a comment
containing <code>CHECKSTYLE:OFF</code> and a comment containing
<code>CHECKSTYLE:ON</code>:
</p>
<source>
&lt;module name=&quot;Checker&quot;&gt;
...
&lt;module name=&quot;SuppressionCommentFilter&quot;/&gt;
...
&lt;/module&gt;
</source>
<p>
To configure a filter to suppress audit events between a comment
containing line <code>BEGIN GENERATED CODE</code> and a comment
containing line <code>END GENERATED CODE</code>:
</p>
<source>
&lt;module name=&quot;SuppressionCommentFilter&quot;&gt;
&lt;property name=&quot;offCommentFormat&quot; value=&quot;BEGIN GENERATED CODE&quot;/&gt;
&lt;property name=&quot;onCommentFormat&quot; value=&quot;END GENERATED CODE&quot;/&gt;
&lt;/module>
</source>
<source>
//BEGIN GENERATED CODE
@Override
public boolean equals(Object obj) { ... } // No violation events will be reported
@Override
public int hashCode() { ... } // No violation events will be reported
//END GENERATED CODE
. . .
</source>
<p>
To configure a filter so that <code>// stop constant
check</code> and <code>// resume constant check</code> marks
legitimate constant names:
</p>
<source>
&lt;module name=&quot;SuppressionCommentFilter&quot;&gt;
&lt;property name=&quot;offCommentFormat&quot; value=&quot;stop constant check&quot;/&gt;
&lt;property name=&quot;onCommentFormat&quot; value=&quot;resume constant check&quot;/&gt;
&lt;property name=&quot;checkFormat&quot; value=&quot;ConstantNameCheck&quot;/&gt;
&lt;/module>
</source>
<source>
//stop constant check
public static final int someConstant; // won't warn here
//resume constant check
public static final int someConstant; // will warn here as constant's name doesn't match the
// pattern &quot;^[A-Z][A-Z0-9]*$&quot;
</source>
<p>
To configure a filter so that <code>UNUSED OFF:
<i>var</i></code> and <code>UNUSED ON: <i>var</i></code> marks a
variable or parameter known not to be used by the code by
matching the variable name in the message:
</p>
<source>
&lt;module name=&quot;SuppressionCommentFilter&quot;&gt;
&lt;property name=&quot;offCommentFormat&quot; value=&quot;UNUSED OFF\: (\w+)&quot;/&gt;
&lt;property name=&quot;onCommentFormat&quot; value=&quot;UNUSED ON\: (\w+)&quot;/&gt;
&lt;property name=&quot;checkFormat&quot; value=&quot;Unused&quot;/&gt;
&lt;property name=&quot;messageFormat&quot; value=&quot;^Unused \w+ '$1'.$&quot;/&gt;
&lt;/module&gt;
</source>
<source>
private static void foo(int a, int b) // UNUSED OFF: b
{
System.out.println(a);
}
private static void foo1(int a, int b) // UNUSED ON: b
{
System.out.println(a);
}
</source>
<p>
To configure a filter so that name of suppressed check mentioned
in comment <code>CSOFF: <i>regexp</i></code>
and <code>CSN: <i>regexp</i></code> mark a matching check:
</p>
<source>
&lt;module name=&quot;SuppressionCommentFilter&quot;&gt;
&lt;property name=&quot;offCommentFormat&quot; value=&quot;CSOFF\: ([\w\|]+)&quot;/&gt;
&lt;property name=&quot;onCommentFormat&quot; value=&quot;CSON\: ([\w\|]+)&quot;/&gt;
&lt;property name=&quot;checkFormat&quot; value=&quot;$1&quot;/&gt;
&lt;/module&gt;
</source>
<source>
public static final int lowerCaseConstant; // CSOFF: ConstantNameCheck
public static final int lowerCaseConstant1; // CSON: ConstantNameCheck
</source>
<p>
To configure a filter to suppress all audit events between a comment
containing <code>CHECKSTYLE_OFF: ALMOST_ALL</code> and a comment containing
<code>CHECKSTYLE_OFF: ALMOST_ALL</code> except for the <em>EqualsHashCode</em> check:
</p>
<source>
&lt;module name=&quot;SuppressionCommentFilter&quot;&gt;
&lt;property name=&quot;offCommentFormat&quot; value=&quot;CHECKSTYLE_OFF: ALMOST_ALL&quot;/&gt;
&lt;property name=&quot;onCommentFormat&quot; value=&quot;CHECKSTYLE_ON: ALMOST_ALL&quot;/&gt;
&lt;property name=&quot;checkFormat&quot; value=&quot;^((?!(EqualsHashCode)).)*$&quot;/&gt;
&lt;/module&gt;
</source>
<source>
public static final int array []; // CHECKSTYLE_OFF: ALMOST_ALL
private String [] strArray;
private int array1 []; // CHECKSTYLE_ON: ALMOST_ALL
</source>
<p>
To configure a filter to suppress Check's violation message <b>which matches
specified message in messageFormat</b> (so suppression will be not only by
Check's name, but by message text additionally, as the same Check could report
different by message format violations) between a comment
containing <code>stop</code> and comment containing <code>resume</code>:
</p>
<source>
&lt;module name=&quot;SuppressionCommentFilter&quot;&gt;
&lt;property name=&quot;offCommentFormat&quot; value=&quot;stop&quot;/&gt;
&lt;property name=&quot;onCommentFormat&quot; value=&quot;resume&quot;/&gt;
&lt;property name=&quot;checkFormat&quot; value=&quot;IllegalTypeCheck&quot;/&gt;
&lt;property name=&quot;messageFormat&quot; value=&quot;^Declaring variables, return values or parameters of type 'GregorianCalendar' is not allowed.$&quot;/&gt;
&lt;/module&gt;
</source>
<p>
Code before filter above is applied with Check's audit events:
</p>
<source>
...
GregorianCalendar calendar; // Warning here: Declaring variables, return values or parameters of type 'GregorianCalendar' is not allowed.
HashSet hashSet; // Warning here: Declaring variables, return values or parameters of type 'HashSet' is not allowed.
...
</source>
<p>
Code after filter is applied:
</p>
<source>
...
//stop
GregorianCalendar calendar; // No warning here as it is suppressed by filter.
HashSet hashSet; // Warning here: Declaring variables, return values or parameters of type 'HashSet' is not allowed.
//resume
...
</source>
</subsection>
<subsection name="SuppressWithNearbyCommentFilter">
<h4>SuppressWithNearbyCommentFilter</h4>
<p>
Filter <code>SuppressWithNearbyCommentFilter</code> uses
individual comments to suppress audit events.
</p>
<p>
Rationale: Same as <code>SuppressionCommentFilter</code>.
Whereas the SuppressionCommentFilter uses matched pairs of
filters to turn on/off comment matching,
<code>SuppressWithNearbyCommentFilter</code> uses
single comments. This requires fewer lines to mark a region, and
may be aesthetically preferable in some contexts.
</p>
<p>
Usage: This filter only works in conjunction with a <code>FileContentsHolder</code>, since that check makes
the suppression comments in the Java files available. A configuration that includes this filter must
configure <code>FileContentsHolder</code> as a
child module of <code>TreeWalker</code>.
</p>
<h5>SuppressWithNearbyCommentFilter Properties</h5>
<table>
<tr>
<th>name</th>
<th>description</th>
<th>type</th>
<th>default value</th>
</tr>
<tr>
<td>commentFormat</td>
<td>comment pattern to trigger filter to begin suppression</td>
<td><a href="property_types.html#regexp">regular expression</a></td>
<td><code>SUPPRESS CHECKSTYLE (\w+)</code></td>
</tr>
<tr>
<td>checkFormat</td>
<td>check pattern to suppress</td>
<td><a href="property_types.html#regexp">regular expression</a></td>
<td><code>.*</code></td>
</tr>
<tr>
<td>messageFormat</td>
<td>message pattern to suppress</td>
<td><a href="property_types.html#regexp">regular expression</a></td>
<td>none</td>
</tr>
<tr>
<td>influenceFormat</td>
<td>a negative/zero/positive value that defines the number of
lines preceding/at/following the suppression comment</td>
<td><a href="property_types.html#regexp">regular expression</a></td>
<td><code>0</code> (the line containing the comment)</td>
</tr>
<tr>
<td>checkCPP</td>
<td>whether to check C++ style comments (<code>//</code>)</td>
<td><a href="property_types.html#boolean">boolean</a></td>
<td><code>true</code></td>
</tr>
<tr>
<td>checkC</td>
<td>whether to check C style comments (<code>/* ... */</code>)</td>
<td><a href="property_types.html#boolean">boolean</a></td>
<td><code>true</code></td>
</tr>
</table>
<h5>Examples</h5>
<p>
To configure the check that makes comments available to the filter:
</p>
<source>
&lt;module name=&quot;TreeWalker&quot;&gt;
...
&lt;module name=&quot;FileContentsHolder&quot;/&gt;
...
&lt;/module&gt;
</source>
<p>
To configure a filter to suppress audit events for <i>check</i>
on any line with a comment <code>SUPPRESS CHECKSTYLE <i>check</i></code>:
</p>
<source>
&lt;module name=&quot;SuppressWithNearbyCommentFilter&quot;/&gt;
</source>
<source>
private int [] array; // SUPPRESS CHECKSTYLE
</source>
<p>
To configure a filter to suppress all audit events on any line
containing the comment <code>CHECKSTYLE IGNORE THIS LINE</code>:
</p>
<source>
&lt;module name=&quot;SuppressWithNearbyCommentFilter&quot;&gt;
&lt;property name=&quot;commentFormat&quot; value=&quot;CHECKSTYLE IGNORE THIS LINE&quot;/&gt;
&lt;property name=&quot;checkFormat&quot; value=&quot;.*&quot;/&gt;
&lt;property name=&quot;influenceFormat&quot; value=&quot;0&quot;/&gt;
&lt;/module>
</source>
<source>
public static final int lowerCaseConstant; // CHECKSTYLE IGNORE THIS LINE
</source>
<p>
To configure a filter so that
<code>// OK to catch (Throwable|Exception|RuntimeException) here</code>
permits the current and previous line to avoid generating an IllegalCatch
audit event:
</p>
<source>
&lt;module name=&quot;SuppressWithNearbyCommentFilter&quot;&gt;
&lt;property name=&quot;commentFormat&quot; value=&quot;OK to catch (\w+) here&quot;/&gt;
&lt;property name=&quot;checkFormat&quot; value=&quot;IllegalCatchCheck&quot;/&gt;
&lt;property name=&quot;messageFormat&quot; value=&quot;$1&quot;/&gt;
&lt;property name=&quot;influenceFormat&quot; value=&quot;-1&quot;/&gt;
&lt;/module>
</source>
<source>
. . .
catch (RuntimeException re) {
// OK to catch RuntimeException here
}
catch (Throwable th) { ... }
. . .
</source>
<p>
To configure a filter so that <code>CHECKSTYLE IGNORE <i>check</i> FOR NEXT <i>var</i> LINES</code>
avoids triggering any audits for the given check for the current line and the next <i>var</i> lines
(for a total of <i>var</i>+1 lines):
</p>
<source>
&lt;module name=&quot;SuppressWithNearbyCommentFilter&quot;&gt;
&lt;property name=&quot;commentFormat&quot; value=&quot;CHECKSTYLE IGNORE (\w+) FOR NEXT (\d+) LINES&quot;/&gt;
&lt;property name=&quot;checkFormat&quot; value=&quot;$1&quot;/&gt;
&lt;property name=&quot;influenceFormat&quot; value=&quot;$2&quot;/&gt;
&lt;/module&gt;
</source>
<source>
public static final int lowerCaseConstant; // CHECKSTYLE IGNORE ConstantNameCheck FOR NEXT 3 LINES
public static final int lowerCaseConstant1;
public static final int lowerCaseConstant2;
public static final int lowerCaseConstant3;
public static final int lowerCaseConstant4; // will warn here
</source>
<p>
To configure a filter to avoid any audits on code like:
</p>
<source>
&lt;module name=&quot;SuppressWithNearbyCommentFilter&quot;&gt;
&lt;property name=&quot;commentFormat&quot; value=&quot;ALLOW (\\w+) ON PREVIOUS LINE&quot;/&gt;
&lt;property name=&quot;checkFormat&quot; value=&quot;$1&quot;/&gt;
&lt;property name=&quot;influenceFormat&quot; value=&quot;-1&quot;/&gt;
&lt;/module&gt;
</source>
<source>
private int D2;
// ALLOW MemberName ON PREVIOUS LINE
. . .
</source>
<p>
To configure a filter to allow suppress one or more Checks(separated by &quot;|&quot;)
and demand comment no less than 14 symbols:
</p>
<source>
&lt;module name="SuppressWithNearbyCommentFilter&quot;&gt;
&lt;property name="commentFormat" value="@cs.suppress \[(\w(\|\w)*)\] \w[-\.'`,:;\w ]{14,}"/&gt;
&lt;property name="checkFormat" value="$1"/&gt;
&lt;property name="influenceFormat" value="1"/&gt;
&lt;/module>
</source>
<source>
public static final int [] array; // @cs.suppress ConstantName | NoWhitespaceAfter
</source>
</subsection>
<subsection name="SuppressWarningsFilter">
<h4>SuppressWarningsFilter</h4>
<p>
Filter <code>SuppressWarningsFilter</code> uses annotations to
suppress audit events.
</p>
<p>
Rationale: Same as for
<code>SuppressionCommentFilter</code>. In the contrary to it
here, comments are not used comments but the builtin syntax of
<code>@SuppressWarnings</code>. This can be perceived as a
more elegant solution than using comments. Also this approach
maybe supported by various IDE.
</p>
<p>
Usage: This filter only works in conjunction with a
<a href="config_annotation.html#SuppressWarningsHolder">SuppressWarningsHolder</a>, since that check finds
the annotations in the Java files and makes them available for
the filter. Because of that, a configuration that includes
this filter must also include
<code>SuppressWarningsHolder</code> as a child module of the
<code>TreeWalker</code>. Name of check in annotation should
be written in lower case with any dotted prefix or "Check" suffix removed.
</p>
<h5>SuppressWarningsFilter Properties</h5>
<p>This filter does not expose any properties</p>
<h5>Examples</h5>
<p>
To configure the check that makes tha annotations available to
the filter.
</p>
<source>
&lt;module name="TreeWalker"&gt;
...
&lt;module name="SuppressWarningsHolder" /&gt;
...
&lt;/module&gt;
</source>
<p>To configure filter to suppress audit events for annotations add:</p>
<source>
&lt;module name="SuppressWarningsFilter" /&gt;
</source>
<source>
@SuppressWarnings({"membername"})
private int J; // should NOT fail MemberNameCheck
@SuppressWarnings({"membername"})
@SuppressWarnings({"nowhitespaceafter"})
private int [] ARRAY; // should NOT fail MemberNameCheck and NoWhitespaceAfterCheck
</source>
</subsection>
</section>
<section name="AuditListeners">
@ -1539,7 +757,7 @@ private int [] ARRAY; // should NOT fail MemberNameCheck and NoWhitespaceAfterCh
</section>
<section name="XML Details">
<section name="XML Structure">
<h4>Configuration XML Document</h4>
<p>

View File

@ -0,0 +1,756 @@
<?xml version="1.0" encoding="UTF-8"?>
<document xmlns="http://maven.apache.org/XDOC/2.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/XDOC/2.0 http://maven.apache.org/xsd/xdoc-2.0.xsd">
<head>
<title>Filters</title>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"/>
<script type="text/javascript" src="js/anchors.js"/>
<script type="text/javascript" src="js/google-analytics.js"/>
<link rel="icon" href="images/favicon.png" type="image/x-icon" />
<link rel="shortcut icon" href="images/favicon.ico" type="image/ico" />
</head>
<body>
<section name="Content">
<macro name="toc">
<param name="fromDepth" value="1"/>
<param name="toDepth" value="1"/>
</macro>
</section>
<section name="SeverityMatchFilter">
<subsection name="Description">
<p>
Filter <code>SeverityMatchFilter</code> decides
audit events according to the <a href="#Severity">severity
level</a> of the event.
</p>
</subsection>
<subsection name="Properties">
<table>
<tr>
<th>name</th>
<th>description</th>
<th>type</th>
<th>default value</th>
</tr>
<tr>
<td>severity</td>
<td>the severity level of this filter</td>
<td><a href="property_types.html#severity">severity</a></td>
<td><code>error</code></td>
</tr>
<tr>
<td>acceptOnMatch</td>
<td>
If acceptOnMatch is <code>true</code>, then
the filter accepts an audit event if and only if there is
a match between the event's severity level and property
severity. If acceptOnMatch
is <code>false</code>, then the filter
accepts an audit event if and only if there is not a match
between the event's severity level and property severity.
</td>
<td><a href="property_types.html#boolean">boolean</a></td>
<td><code>true</code></td>
</tr>
</table>
</subsection>
<subsection name="Example of Usage">
<p>
For example, the following configuration fragment directs the
Checker to not report audit events with severity
level <code>info</code>:
</p>
<source>
&lt;module name=&quot;SeverityMatchFilter&quot;&gt;
&lt;property name=&quot;severity&quot; value=&quot;info&quot;/&gt;
&lt;property name=&quot;acceptOnMatch&quot; value=&quot;false&quot;/&gt;
&lt;/module&gt;
</source>
</subsection>
<subsection name="Package">
<p> com.puppycrawl.tools.checkstyle.checks.filters </p>
</subsection>
</section>
<section name="SuppressionFilter">
<subsection name="Description">
<p>
Filter <code>SuppressionFilter</code> rejects
audit events for Check errors according to
a <a href="#XML_Details"><em>suppressions XML
document</em></a> in a file. If there is no configured
suppressions file, the Filter accepts all audit events.
</p>
</subsection>
<subsection name="Properties">
<table>
<tr>
<th>name</th>
<th>description</th>
<th>type</th>
<th>default value</th>
</tr>
<tr>
<td>file</td>
<td>
the location of the <em>suppressions XML document</em> file.
The order the location is checked is:
<ol>
<li>as a filesystem location</li>
<li>
if no file found, and the location starts with either
<code>http://</code> or <code>https://</code>, then it
is interpreted as a URL
</li>
<li>
if no file found, then passed to the
<code>ClassLoader.getResource()</code> method.
</li>
</ol>
</td>
<td><a href="property_types.html#string">string</a></td>
<td><code>none</code></td>
</tr>
</table>
</subsection>
<subsection name="Examples">
<p>
For example, the following configuration fragment directs the
Checker to use a <code>SuppressionFilter</code>
with suppressions
file <code>docs/suppressions.xml</code>:
</p>
<source>
&lt;module name=&quot;SuppressionFilter&quot;&gt;
&lt;property name=&quot;file&quot; value=&quot;docs/suppressions.xml&quot;/&gt;
&lt;/module&gt;
</source>
<p>
A <a href="#XML_Details"><em>suppressions XML
document</em></a> contains a set
of <code>suppress</code> elements, where
each <code>suppress</code> element can have the
following attributes:
</p>
<ul>
<li>
<code>files</code> -
a <a href="property_types.html#regexp">regular expression</a>
matched against the file name associated with an audit
event. It is mandatory.
</li>
<li>
<code>checks</code> -
a <a href="property_types.html#regexp">regular expression</a>
matched against the name of the check associated with an audit
event. Optional if <code>id</code> is specified.
</li>
<li>
<code>id</code> -
a <a href="property_types.html#string">string</a>
matched against the ID of the check associated with an audit
event. Optional if <code>checks</code> is specified.
</li>
<li>
<code>lines</code> - a comma-separated list of
values, where each value is
an <a href="property_types.html#integer">integer</a> or a
range of integers denoted by integer-integer. It is optional.
</li>
<li>
<code>columns</code> - a comma-separated list of
values, where each value is
an <a href="property_types.html#integer">integer</a> or a
range of integers denoted by integer-integer. It is optional.
</li>
</ul>
<p>
Each audit event is checked against
each <code>suppress</code> element. It is
suppressed if all specified attributes match against the audit
event.
</p>
</subsection>
<subsection name="Example of Usage">
<p>
You can download template of empty suppression filter
<a href="files/suppressions_none.xml">here</a>.
</p>
<p>
The following suppressions XML document directs
a <code>SuppressionFilter</code> to
reject <code>JavadocStyleCheck</code> errors for
lines 82 and 108 to 122 of
file <code>AbstractComplexityCheck.java</code>,
and <code>MagicNumberCheck</code> errors for line
221 of file <code>JavadocStyleCheck.java</code>:
</p>
<source>
&lt;?xml version=&quot;1.0&quot;?&gt;
&lt;!DOCTYPE suppressions PUBLIC
&quot;-//Puppy Crawl//DTD Suppressions 1.1//EN&quot;
&quot;http://www.puppycrawl.com/dtds/suppressions_1_1.dtd&quot;&gt;
&lt;suppressions&gt;
&lt;suppress checks=&quot;JavadocStyleCheck&quot;
files=&quot;AbstractComplexityCheck.java&quot;
lines=&quot;82,108-122&quot;/&gt;
&lt;suppress checks=&quot;MagicNumberCheck&quot;
files=&quot;JavadocStyleCheck.java&quot;
lines=&quot;221&quot;/&gt;
&lt;/suppressions&gt;
</source>
<p>
As another example to suppress Check by module id:
</p>
<source>
&lt;module name=&quot;DescendantToken&quot;&gt;
&lt;property name=&quot;id&quot; value=&quot;stringEqual&quot;/&gt;
&lt;property name=&quot;tokens&quot; value=&quot;EQUAL,NOT_EQUAL&quot;/&gt;
&lt;property name=&quot;limitedTokens&quot; value=&quot;STRING_LITERAL&quot;/&gt;
&lt;property name=&quot;maximumNumber&quot; value=&quot;0&quot;/&gt;
&lt;property name=&quot;maximumDepth&quot; value=&quot;1&quot;/&gt;
&lt;/module&gt;
&lt;module name=&quot;DescendantToken&quot;&gt;
&lt;property name=&quot;id&quot; value=&quot;switchNoDefault&quot;/&gt;
&lt;property name=&quot;tokens&quot; value=&quot;LITERAL_SWITCH&quot;/&gt;
&lt;property name=&quot;maximumDepth&quot; value=&quot;2&quot;/&gt;
&lt;property name=&quot;limitedTokens&quot; value=&quot;LITERAL_DEFAULT&quot;/&gt;
&lt;property name=&quot;minimumNumber&quot; value=&quot;1&quot;/&gt;
&lt;/module&gt;
</source>
<p>
Then the following can be used to suppress only the first
check and not the second by using
the <code>id</code> attribute:
</p>
<source>
&lt;suppress id=&quot;stringEqual&quot; files=&quot;SomeTestCode.java&quot;/&gt;
</source>
<p>
Suppress checks for hidden files and folders:
</p>
<source>
&lt;suppress files=&quot;[/\\]\..+&quot; checks=&quot;.*&quot;/&gt;
</source>
<p>
Suppress checks for Maven-generated code:
</p>
<source>
&lt;suppress files=&quot;[/\\]target[/\\]&quot; checks=&quot;.*&quot;/&gt;
</source>
<p>
Suppress checks for archives, classes and other binary files:
</p>
<source>
&lt;suppress files=&quot;.+\.(?:jar|zip|war|class|tar|bin)$&quot; checks=&quot;.*&quot;/&gt;
</source>
<p>
Suppress checks for image files:
</p>
<source>
&lt;suppress files=&quot;.+\.(?:png|gif|jpg|jpeg)$&quot; checks=&quot;.*&quot;/&gt;
</source>
<p>
Suppress checks for non-java files:
</p>
<source>
&lt;suppress files=&quot;.+\.(?:txt|xml|csv|sh|thrift|html|sql|eot|ttf|woff|css|png)$&quot; checks=&quot;.*&quot;/&gt;
</source>
<p>
Suppress all checks in generated sources:
</p>
<source>
&lt;suppress checks=&quot;.*&quot; files=&quot;com[\\/]mycompany[\\/]app[\\/]gen[\\/]&quot;/&gt;
</source>
<p>
Suppress FileLength check on integration tests in certain folder:
</p>
<source>
&lt;suppress checks=&quot;FileLength&quot; files=&quot;com[\\/]mycompany[\\/]app[\\/].*IT.java&quot;/&gt;
</source>
</subsection>
<subsection name="Package">
<p> com.puppycrawl.tools.checkstyle.checks.filters </p>
</subsection>
</section>
<section name="SuppressionCommentFilter">
<subsection name="Description">
<p>
Filter <code>SuppressionCommentFilter</code> uses
pairs of comments to suppress audit events.
</p>
<p>
Rationale: Sometimes there are legitimate reasons for violating
a check. When this is a matter of the code in question and not
personal preference, the best place to override the policy is in
the code itself. Semi-structured comments can be associated
with the check. This is sometimes superior to a separate
suppressions file, which must be kept up-to-date as the source
file is edited.
</p>
<p>
Usage: This filter only works in conjunction with a <code>FileContentsHolder</code>, since that check makes
the suppression comments in the Java files available. A configuration that includes this filter must
configure <code>FileContentsHolder</code> as a
child module of <code>TreeWalker</code>.
</p>
</subsection>
<subsection name="Properties">
<table>
<tr>
<th>name</th>
<th>description</th>
<th>type</th>
<th>default value</th>
</tr>
<tr>
<td>offCommentFormat</td>
<td>comment pattern to trigger filter to begin suppression</td>
<td><a href="property_types.html#regexp">regular expression</a></td>
<td><code>CHECKSTYLE\:OFF</code></td>
</tr>
<tr>
<td>onCommentFormat</td>
<td>comment pattern to trigger filter to end suppression</td>
<td><a href="property_types.html#regexp">regular expression</a></td>
<td><code>CHECKSTYLE\:ON</code></td>
</tr>
<tr>
<td>checkFormat</td>
<td>check pattern to suppress</td>
<td><a href="property_types.html#regexp">regular expression</a></td>
<td><code>.*</code> (all checks)</td>
</tr>
<tr>
<td>messageFormat</td>
<td>message pattern to suppress</td>
<td><a href="property_types.html#regexp">regular expression</a></td>
<td>none</td>
</tr>
<tr>
<td>checkCPP</td>
<td>whether to check C++ style comments (<code>//</code>)</td>
<td><a href="property_types.html#boolean">boolean</a></td>
<td><code>true</code></td>
</tr>
<tr>
<td>checkC</td>
<td>whether to check C style comments (<code>/* ... */</code>)</td>
<td><a href="property_types.html#boolean">boolean</a></td>
<td><code>true</code></td>
</tr>
</table>
<p>
offCommentFormat and onCommentFormat must have equal <a
href="https://docs.oracle.com/javase/7/docs/api/java/util/regex/Matcher.html#groupCount()">paren counts</a>.
</p>
</subsection>
<subsection name="Examples">
<p>
Make sure that comments are available to the filter by enabling FileContentsHolder:
</p>
<source>
&lt;module name=&quot;TreeWalker&quot;&gt;
...
&lt;module name=&quot;FileContentsHolder&quot;/&gt;
...
&lt;/module&gt;
</source>
<p>
To configure a filter to suppress audit events between a comment
containing <code>CHECKSTYLE:OFF</code> and a comment containing
<code>CHECKSTYLE:ON</code>:
</p>
<source>
&lt;module name=&quot;Checker&quot;&gt;
...
&lt;module name=&quot;SuppressionCommentFilter&quot;/&gt;
...
&lt;/module&gt;
</source>
<p>
To configure a filter to suppress audit events between a comment
containing line <code>BEGIN GENERATED CODE</code> and a comment
containing line <code>END GENERATED CODE</code>:
</p>
<source>
&lt;module name=&quot;SuppressionCommentFilter&quot;&gt;
&lt;property name=&quot;offCommentFormat&quot; value=&quot;BEGIN GENERATED CODE&quot;/&gt;
&lt;property name=&quot;onCommentFormat&quot; value=&quot;END GENERATED CODE&quot;/&gt;
&lt;/module>
</source>
<source>
//BEGIN GENERATED CODE
@Override
public boolean equals(Object obj) { ... } // No violation events will be reported
@Override
public int hashCode() { ... } // No violation events will be reported
//END GENERATED CODE
. . .
</source>
<p>
To configure a filter so that <code>// stop constant
check</code> and <code>// resume constant check</code> marks
legitimate constant names:
</p>
<source>
&lt;module name=&quot;SuppressionCommentFilter&quot;&gt;
&lt;property name=&quot;offCommentFormat&quot; value=&quot;stop constant check&quot;/&gt;
&lt;property name=&quot;onCommentFormat&quot; value=&quot;resume constant check&quot;/&gt;
&lt;property name=&quot;checkFormat&quot; value=&quot;ConstantNameCheck&quot;/&gt;
&lt;/module>
</source>
<source>
//stop constant check
public static final int someConstant; // won't warn here
//resume constant check
public static final int someConstant; // will warn here as constant's name doesn't match the
// pattern &quot;^[A-Z][A-Z0-9]*$&quot;
</source>
<p>
To configure a filter so that <code>UNUSED OFF:
<i>var</i></code> and <code>UNUSED ON: <i>var</i></code> marks a
variable or parameter known not to be used by the code by
matching the variable name in the message:
</p>
<source>
&lt;module name=&quot;SuppressionCommentFilter&quot;&gt;
&lt;property name=&quot;offCommentFormat&quot; value=&quot;UNUSED OFF\: (\w+)&quot;/&gt;
&lt;property name=&quot;onCommentFormat&quot; value=&quot;UNUSED ON\: (\w+)&quot;/&gt;
&lt;property name=&quot;checkFormat&quot; value=&quot;Unused&quot;/&gt;
&lt;property name=&quot;messageFormat&quot; value=&quot;^Unused \w+ '$1'.$&quot;/&gt;
&lt;/module&gt;
</source>
<source>
private static void foo(int a, int b) // UNUSED OFF: b
{
System.out.println(a);
}
private static void foo1(int a, int b) // UNUSED ON: b
{
System.out.println(a);
}
</source>
<p>
To configure a filter so that name of suppressed check mentioned
in comment <code>CSOFF: <i>regexp</i></code>
and <code>CSN: <i>regexp</i></code> mark a matching check:
</p>
<source>
&lt;module name=&quot;SuppressionCommentFilter&quot;&gt;
&lt;property name=&quot;offCommentFormat&quot; value=&quot;CSOFF\: ([\w\|]+)&quot;/&gt;
&lt;property name=&quot;onCommentFormat&quot; value=&quot;CSON\: ([\w\|]+)&quot;/&gt;
&lt;property name=&quot;checkFormat&quot; value=&quot;$1&quot;/&gt;
&lt;/module&gt;
</source>
<source>
public static final int lowerCaseConstant; // CSOFF: ConstantNameCheck
public static final int lowerCaseConstant1; // CSON: ConstantNameCheck
</source>
<p>
To configure a filter to suppress all audit events between a comment
containing <code>CHECKSTYLE_OFF: ALMOST_ALL</code> and a comment containing
<code>CHECKSTYLE_OFF: ALMOST_ALL</code> except for the <em>EqualsHashCode</em> check:
</p>
<source>
&lt;module name=&quot;SuppressionCommentFilter&quot;&gt;
&lt;property name=&quot;offCommentFormat&quot; value=&quot;CHECKSTYLE_OFF: ALMOST_ALL&quot;/&gt;
&lt;property name=&quot;onCommentFormat&quot; value=&quot;CHECKSTYLE_ON: ALMOST_ALL&quot;/&gt;
&lt;property name=&quot;checkFormat&quot; value=&quot;^((?!(EqualsHashCode)).)*$&quot;/&gt;
&lt;/module&gt;
</source>
<source>
public static final int array []; // CHECKSTYLE_OFF: ALMOST_ALL
private String [] strArray;
private int array1 []; // CHECKSTYLE_ON: ALMOST_ALL
</source>
<p>
To configure a filter to suppress Check's violation message <b>which matches
specified message in messageFormat</b> (so suppression will be not only by
Check's name, but by message text additionally, as the same Check could report
different by message format violations) between a comment
containing <code>stop</code> and comment containing <code>resume</code>:
</p>
<source>
&lt;module name=&quot;SuppressionCommentFilter&quot;&gt;
&lt;property name=&quot;offCommentFormat&quot; value=&quot;stop&quot;/&gt;
&lt;property name=&quot;onCommentFormat&quot; value=&quot;resume&quot;/&gt;
&lt;property name=&quot;checkFormat&quot; value=&quot;IllegalTypeCheck&quot;/&gt;
&lt;property name=&quot;messageFormat&quot; value=&quot;^Declaring variables, return values or parameters of type 'GregorianCalendar' is not allowed.$&quot;/&gt;
&lt;/module&gt;
</source>
<p>
Code before filter above is applied with Check's audit events:
</p>
<source>
...
GregorianCalendar calendar; // Warning here: Declaring variables, return values or parameters of type 'GregorianCalendar' is not allowed.
HashSet hashSet; // Warning here: Declaring variables, return values or parameters of type 'HashSet' is not allowed.
...
</source>
<p>
Code after filter is applied:
</p>
<source>
...
//stop
GregorianCalendar calendar; // No warning here as it is suppressed by filter.
HashSet hashSet; // Warning here: Declaring variables, return values or parameters of type 'HashSet' is not allowed.
//resume
...
</source>
</subsection>
<subsection name="Package">
<p> com.puppycrawl.tools.checkstyle.checks.filters </p>
</subsection>
</section>
<section name="SuppressWithNearbyCommentFilter">
<subsection name="Description">
<p>
Filter <code>SuppressWithNearbyCommentFilter</code> uses
individual comments to suppress audit events.
</p>
<p>
Rationale: Same as <code>SuppressionCommentFilter</code>.
Whereas the SuppressionCommentFilter uses matched pairs of
filters to turn on/off comment matching,
<code>SuppressWithNearbyCommentFilter</code> uses
single comments. This requires fewer lines to mark a region, and
may be aesthetically preferable in some contexts.
</p>
<p>
Usage: This filter only works in conjunction with a <code>FileContentsHolder</code>, since that check makes
the suppression comments in the Java files available. A configuration that includes this filter must
configure <code>FileContentsHolder</code> as a
child module of <code>TreeWalker</code>.
</p>
</subsection>
<subsection name="Properties">
<table>
<tr>
<th>name</th>
<th>description</th>
<th>type</th>
<th>default value</th>
</tr>
<tr>
<td>commentFormat</td>
<td>comment pattern to trigger filter to begin suppression</td>
<td><a href="property_types.html#regexp">regular expression</a></td>
<td><code>SUPPRESS CHECKSTYLE (\w+)</code></td>
</tr>
<tr>
<td>checkFormat</td>
<td>check pattern to suppress</td>
<td><a href="property_types.html#regexp">regular expression</a></td>
<td><code>.*</code></td>
</tr>
<tr>
<td>messageFormat</td>
<td>message pattern to suppress</td>
<td><a href="property_types.html#regexp">regular expression</a></td>
<td>none</td>
</tr>
<tr>
<td>influenceFormat</td>
<td>a negative/zero/positive value that defines the number of
lines preceding/at/following the suppression comment</td>
<td><a href="property_types.html#regexp">regular expression</a></td>
<td><code>0</code> (the line containing the comment)</td>
</tr>
<tr>
<td>checkCPP</td>
<td>whether to check C++ style comments (<code>//</code>)</td>
<td><a href="property_types.html#boolean">boolean</a></td>
<td><code>true</code></td>
</tr>
<tr>
<td>checkC</td>
<td>whether to check C style comments (<code>/* ... */</code>)</td>
<td><a href="property_types.html#boolean">boolean</a></td>
<td><code>true</code></td>
</tr>
</table>
</subsection>
<subsection name="Example of Usage">
<p>
To configure the check that makes comments available to the filter:
</p>
<source>
&lt;module name=&quot;TreeWalker&quot;&gt;
...
&lt;module name=&quot;FileContentsHolder&quot;/&gt;
...
&lt;/module&gt;
</source>
<p>
To configure a filter to suppress audit events for <i>check</i>
on any line with a comment <code>SUPPRESS CHECKSTYLE <i>check</i></code>:
</p>
<source>
&lt;module name=&quot;SuppressWithNearbyCommentFilter&quot;/&gt;
</source>
<source>
private int [] array; // SUPPRESS CHECKSTYLE
</source>
<p>
To configure a filter to suppress all audit events on any line
containing the comment <code>CHECKSTYLE IGNORE THIS LINE</code>:
</p>
<source>
&lt;module name=&quot;SuppressWithNearbyCommentFilter&quot;&gt;
&lt;property name=&quot;commentFormat&quot; value=&quot;CHECKSTYLE IGNORE THIS LINE&quot;/&gt;
&lt;property name=&quot;checkFormat&quot; value=&quot;.*&quot;/&gt;
&lt;property name=&quot;influenceFormat&quot; value=&quot;0&quot;/&gt;
&lt;/module>
</source>
<source>
public static final int lowerCaseConstant; // CHECKSTYLE IGNORE THIS LINE
</source>
<p>
To configure a filter so that
<code>// OK to catch (Throwable|Exception|RuntimeException) here</code>
permits the current and previous line to avoid generating an IllegalCatch
audit event:
</p>
<source>
&lt;module name=&quot;SuppressWithNearbyCommentFilter&quot;&gt;
&lt;property name=&quot;commentFormat&quot; value=&quot;OK to catch (\w+) here&quot;/&gt;
&lt;property name=&quot;checkFormat&quot; value=&quot;IllegalCatchCheck&quot;/&gt;
&lt;property name=&quot;messageFormat&quot; value=&quot;$1&quot;/&gt;
&lt;property name=&quot;influenceFormat&quot; value=&quot;-1&quot;/&gt;
&lt;/module>
</source>
<source>
. . .
catch (RuntimeException re) {
// OK to catch RuntimeException here
}
catch (Throwable th) { ... }
. . .
</source>
<p>
To configure a filter so that <code>CHECKSTYLE IGNORE <i>check</i> FOR NEXT <i>var</i> LINES</code>
avoids triggering any audits for the given check for the current line and the next <i>var</i> lines
(for a total of <i>var</i>+1 lines):
</p>
<source>
&lt;module name=&quot;SuppressWithNearbyCommentFilter&quot;&gt;
&lt;property name=&quot;commentFormat&quot; value=&quot;CHECKSTYLE IGNORE (\w+) FOR NEXT (\d+) LINES&quot;/&gt;
&lt;property name=&quot;checkFormat&quot; value=&quot;$1&quot;/&gt;
&lt;property name=&quot;influenceFormat&quot; value=&quot;$2&quot;/&gt;
&lt;/module&gt;
</source>
<source>
public static final int lowerCaseConstant; // CHECKSTYLE IGNORE ConstantNameCheck FOR NEXT 3 LINES
public static final int lowerCaseConstant1;
public static final int lowerCaseConstant2;
public static final int lowerCaseConstant3;
public static final int lowerCaseConstant4; // will warn here
</source>
<p>
To configure a filter to avoid any audits on code like:
</p>
<source>
&lt;module name=&quot;SuppressWithNearbyCommentFilter&quot;&gt;
&lt;property name=&quot;commentFormat&quot; value=&quot;ALLOW (\\w+) ON PREVIOUS LINE&quot;/&gt;
&lt;property name=&quot;checkFormat&quot; value=&quot;$1&quot;/&gt;
&lt;property name=&quot;influenceFormat&quot; value=&quot;-1&quot;/&gt;
&lt;/module&gt;
</source>
<source>
private int D2;
// ALLOW MemberName ON PREVIOUS LINE
. . .
</source>
<p>
To configure a filter to allow suppress one or more Checks(separated by &quot;|&quot;)
and demand comment no less than 14 symbols:
</p>
<source>
&lt;module name="SuppressWithNearbyCommentFilter&quot;&gt;
&lt;property name="commentFormat" value="@cs.suppress \[(\w(\|\w)*)\] \w[-\.'`,:;\w ]{14,}"/&gt;
&lt;property name="checkFormat" value="$1"/&gt;
&lt;property name="influenceFormat" value="1"/&gt;
&lt;/module>
</source>
<source>
public static final int [] array; // @cs.suppress ConstantName | NoWhitespaceAfter
</source>
</subsection>
<subsection name="Package">
<p> com.puppycrawl.tools.checkstyle.checks.filters </p>
</subsection>
</section>
<section name="SuppressWarningsFilter">
<subsection name="Description">
<p>
Filter <code>SuppressWarningsFilter</code> uses annotations to
suppress audit events.
</p>
<p>
Rationale: Same as for
<code>SuppressionCommentFilter</code>. In the contrary to it
here, comments are not used comments but the builtin syntax of
<code>@SuppressWarnings</code>. This can be perceived as a
more elegant solution than using comments. Also this approach
maybe supported by various IDE.
</p>
<p>
Usage: This filter only works in conjunction with a
<a href="config_annotation.html#SuppressWarningsHolder">SuppressWarningsHolder</a>, since that check finds
the annotations in the Java files and makes them available for
the filter. Because of that, a configuration that includes
this filter must also include
<code>SuppressWarningsHolder</code> as a child module of the
<code>TreeWalker</code>. Name of check in annotation should
be written in lower case with any dotted prefix or "Check" suffix removed.
</p>
</subsection>
<subsection name="Properties">
<p>This filter does not expose any properties</p>
</subsection>
<subsection name="Example of Usage">
<p>
To configure the check that makes tha annotations available to
the filter.
</p>
<source>
&lt;module name="TreeWalker"&gt;
...
&lt;module name="SuppressWarningsHolder" /&gt;
...
&lt;/module&gt;
</source>
<p>To configure filter to suppress audit events for annotations add:</p>
<source>
&lt;module name="SuppressWarningsFilter" /&gt;
</source>
<source>
@SuppressWarnings({"membername"})
private int J; // should NOT fail MemberNameCheck
@SuppressWarnings({"membername"})
@SuppressWarnings({"nowhitespaceafter"})
private int [] ARRAY; // should NOT fail MemberNameCheck and NoWhitespaceAfterCheck
</source>
</subsection>
<subsection name="Package">
<p> com.puppycrawl.tools.checkstyle.checks.filters </p>
</subsection>
</section>
</body>
</document>

View File

@ -21,28 +21,29 @@
</macro>
</section>
<section name="Property Types">
<section name="Overview">
<p>
Checkstyle is configured using properties, which are string
representations. This document describes how these string
representations are mapped to typed properties.
</p>
</section>
<subsection name="integer">
<section name="integer">
<p>
This property represents an integer. The string representation is
parsed using the <code>java.lang.Integer</code> class.
</p>
</subsection>
</section>
<subsection name="string">
<section name="string">
<p>
This property represents a string. The literal string representation
is used.
</p>
</subsection>
</section>
<subsection name="boolean">
<section name="boolean">
<p>
This property represents a boolean. The default value is <code>false</code>. The following string representations will
map to <code>true</code>:
@ -55,9 +56,9 @@
</ul>
<p>Anything else will map to <code>false</code>.</p>
</subsection>
</section>
<subsection name="stringSet">
<section name="stringSet">
<p>
This property represents a set of strings. The string representation
is parsed as a set of comma (',') separated strings.
@ -75,9 +76,9 @@
&lt;property name=&quot;tokens&quot; value=&quot;DIV_ASSIGN&quot;/&gt;
&lt;property name=&quot;tokens&quot; value=&quot;PLUS_ASSIGN&quot;/&gt;
</source>
</subsection>
</section>
<subsection name="intSet">
<section name="intSet">
<p>
This property represents a set of integers. The string representation
is parsed as a set of comma (',') separated integers that are parsed
@ -96,18 +97,18 @@
&lt;property name=&quot;tokens&quot; value=&quot;42&quot;/&gt;
&lt;property name=&quot;tokens&quot; value=&quot;666&quot;/&gt;
</source>
</subsection>
</section>
<subsection name="regexp">
<section name="regexp">
<p>
This property represents a regular expression. The string
representation is parsed using <a
href="http://docs.oracle.com/javase/7/docs/api/index.html?java/util/regex/package-summary.html">java.util.regex
package</a>.
</p>
</subsection>
</section>
<subsection name="parenPad">
<section name="parenPad">
<p>
This property represents the policy for padding with white space. The
following table describes the valid options:
@ -132,9 +133,9 @@
</td>
</tr>
</table>
</subsection>
</section>
<subsection name="wrapOp">
<section name="wrapOp">
<p>
This property represents the policy for wrapping lines.
The following table describes the valid options:
@ -166,9 +167,9 @@
</td>
</tr>
</table>
</subsection>
</section>
<subsection name="block">
<section name="block">
<p>
This property represents the policy for checking block statements. The
following table describes the valid options:
@ -202,9 +203,9 @@
</td>
</tr>
</table>
</subsection>
</section>
<subsection name="lcurly">
<section name="lcurly">
<p>
This property represents the policy for checking the placement of a
left curly brace (<code>'{'</code>). The following table
@ -263,9 +264,9 @@
</td>
</tr>
</table>
</subsection>
</section>
<subsection name="rcurly">
<section name="rcurly">
<p>
This property represents the policy for checking the placement of a
right curly brace (<code>'}'</code>). The following table
@ -375,9 +376,9 @@
</td>
</tr>
</table>
</subsection>
</section>
<subsection name="scope">
<section name="scope">
<p>This property represents a Java scope. The scope is treated
inclusively (as javadoc does): 'package' means all 'package', 'protected'
and 'public' methods/fields/classes. The valid options are:</p>
@ -390,9 +391,9 @@
<li><code>private</code></li>
<li><code>anoninner</code></li>
</ul>
</subsection>
</section>
<subsection name="severity">
<section name="severity">
<p>
This property represents the severity level of a check violation. The
valid options are:
@ -404,9 +405,9 @@
<li><code>warning</code></li>
<li><code>error</code></li>
</ul>
</subsection>
</section>
<subsection name="importOrder">
<section name="importOrder">
<p>
This property represents the policy for checking imports order.
The following table describes the valid options:
@ -479,9 +480,9 @@
</td>
</tr>
</table>
</subsection>
</section>
<subsection name="elementStyle">
<section name="elementStyle">
<p>
This property represents the policy for the styles for defining
elements in an annotation. The following table
@ -535,9 +536,9 @@
</td>
</tr>
</table>
</subsection>
</section>
<subsection name="closingParens">
<section name="closingParens">
<p>
This property represents the policy for the styles for the ending
parenthesis. The following table describes the valid options:
@ -572,9 +573,9 @@
</td>
</tr>
</table>
</subsection>
</section>
<subsection name="trailingArrayComma">
<section name="trailingArrayComma">
<p>
This property represents the policy for the styles for the trailing
array comma. The following table describes the valid options:
@ -609,7 +610,6 @@
</td>
</tr>
</table>
</subsection>
</section>
</body>
</document>