<?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">
      <p>Since Checkstyle 3.2</p>
      <subsection name="Description" id="SeverityMatchFilter_Description">
        <p>
          Filter <code>SeverityMatchFilter</code> decides
          audit events according to the <a href="config.html#Severity">severity
          level</a> of the event.
        </p>
      </subsection>
      <subsection name="Properties" id="SeverityMatchFilter_Properties">
        <div class="wrapper">
          <table>
            <tr>
              <th>name</th>
              <th>description</th>
              <th>type</th>
              <th>default value</th>
              <th>since</th>
            </tr>
            <tr>
              <td>severity</td>
              <td>Specify the severity level of this filter.</td>
              <td><a href="property_types.html#severity">Severity</a></td>
              <td><code>error</code></td>
              <td>3.2</td>
            </tr>
            <tr>
              <td>acceptOnMatch</td>
              <td>
                 Control whether 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>
              <td>3.2</td>
            </tr>
          </table>
        </div>
      </subsection>
      <subsection name="Examples" id="SeverityMatchFilter_Examples">
          <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="Example of Usage" id="SeverityMatchFilter_Example_of_Usage">
        <ul>
          <li>
            <a href="https://github.com/search?q=path%3Aconfig+filename%3Acheckstyle_checks.xml+repo%3Acheckstyle%2Fcheckstyle+SeverityMatchFilter">
            Checkstyle Style</a>
          </li>
        </ul>
      </subsection>
      <subsection name="Package" id="SeverityMatchFilter_Package">
        <p> com.puppycrawl.tools.checkstyle.filters </p>
      </subsection>

      <subsection name="Parent Module" id="SeverityMatchFilter_Parent_Module">
        <p> <a href="config.html#Checker">Checker</a> </p>
      </subsection>
    </section>

    <section name="SuppressionCommentFilter">
      <p>Since Checkstyle 3.5</p>
      <subsection name="Description" id="SuppressionCommentFilter_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>
            Note that the suppression comment should be put before the violation. You can use more
            than one suppression comment each on separate line.
          </p>
          <p>
            Attention: This filter may only be specified within the TreeWalker module
            (<code>&lt;module name=&quot;TreeWalker&quot;/&gt;</code>) and only
            applies to checks which are also defined within this module.
            To filter non-TreeWalker checks like <code>RegexpSingleline</code>,
            a <a href="config_filters.html#SuppressWithPlainTextCommentFilter">
            SuppressWithPlainTextCommentFilter</a> or similar filter must be used.
          </p>
      </subsection>
      <subsection name="Notes" id="SuppressionCommentFilter_Notes">
        <p>
          <code>offCommentFormat</code> and <code>onCommentFormat</code> must have equal
          <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/regex/Matcher.html#groupCount()">
            paren counts</a>.
        </p>
      </subsection>
      <subsection name="Properties" id="SuppressionCommentFilter_Properties">
        <div class="wrapper">
          <table>
              <tr>
                  <th>name</th>
                  <th>description</th>
                  <th>type</th>
                  <th>default value</th>
                  <th>since</th>
              </tr>
              <tr>
                  <td>offCommentFormat</td>
                  <td>Specify 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>
                  <td>3.5</td>
              </tr>
              <tr>
                  <td>onCommentFormat</td>
                  <td>Specify 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>
                  <td>3.5</td>
              </tr>
              <tr>
                  <td>checkFormat</td>
                  <td>Specify check pattern to suppress.</td>
                  <td><a href="property_types.html#regexp">Regular Expression</a></td>
                  <td><code>".*"</code></td>
                  <td>3.5</td>
              </tr>
              <tr>
                  <td>messageFormat</td>
                  <td>Specify message pattern to suppress.</td>
                  <td><a href="property_types.html#regexp">Regular Expression</a></td>
                  <td><code>null</code></td>
                  <td>3.5</td>
              </tr>
              <tr>
                  <td>idFormat</td>
                  <td>Specify check ID pattern to suppress.</td>
                  <td><a href="property_types.html#regexp">Regular Expression</a></td>
                  <td><code>null</code></td>
                  <td>8.24</td>
              </tr>
              <tr>
                  <td>checkCPP</td>
                  <td>Control whether to check C++ style comments (<code>//</code>).</td>
                  <td><a href="property_types.html#boolean">Boolean</a></td>
                  <td><code>true</code></td>
                  <td>3.5</td>
              </tr>
              <tr>
                  <td>checkC</td>
                  <td>Control whether to check C style comments (<code>/* ... */</code>).</td>
                  <td><a href="property_types.html#boolean">Boolean</a></td>
                  <td><code>true</code></td>
                  <td>3.5</td>
              </tr>
          </table>
        </div>
      </subsection>
      <subsection name="Examples" id="SuppressionCommentFilter_Examples">
          <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;TreeWalker&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>CSON: <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>
...
// Warning below: Declaring variables, return values or parameters of type 'GregorianCalendar'
// is not allowed.
GregorianCalendar calendar;
// Warning below here: Declaring variables, return values or parameters of type 'HashSet'
// is not allowed.
HashSet hashSet;
...
          </source>
          <p>
              Code after filter is applied:
          </p>
          <source>
...
//stop
GregorianCalendar calendar; // No warning here as it is suppressed by filter.
HashSet hashSet;
// Warning above here: Declaring variables, return values or parameters of type 'HashSet'
//is not allowed.

//resume
...
          </source>
          <p>
            It is possible to specify an ID of checks, so that it can be leveraged by the
            SuppressionCommentFilter to skip validations. The following examples show how to skip
            validations near code that is surrounded with <code>// CSOFF &lt;ID> (reason)</code>
            and <code>// CSON &lt;ID></code>, where ID is the ID of checks you want to suppress.
          </p>
          <p>
            Examples of Checkstyle checks configuration:
          </p>
          <source>
&lt;module name=&quot;RegexpSinglelineJava&quot;&gt;
  &lt;property name=&quot;id&quot; value=&quot;ignore&quot;/&gt;
  &lt;property name="format" value="^.*@Ignore\s*$"/&gt;
  &lt;property name="message" value="@Ignore should have a reason."/&gt;
&lt;/module&gt;

&lt;module name=&quot;RegexpSinglelineJava&quot;&gt;
  &lt;property name=&quot;id&quot; value=&quot;systemout&quot;/&gt;
  &lt;property name="format" value="^.*System\.(out|err).*$"/&gt;
  &lt;property name="message" value="Don't use System.out/err, use SLF4J instead."/&gt;
&lt;/module&gt;
          </source>
          <p>
            Example of SuppressionCommentFilter configuration (checkFormat which is set to '$1'
            points that ID of the checks is in the first group of offCommentFormat and
            onCommentFormat regular expressions):
          </p>
          <source>
&lt;module name="SuppressionCommentFilter&quot;&gt;
  &lt;property name="offCommentFormat" value="CSOFF (\w+) \(\w+\)"/&gt;
  &lt;property name="onCommentFormat" value="CSON (\w+)"/&gt;
  &lt;property name="idFormat" value="$1"/&gt;
&lt;/module&gt;
          </source>
          <source>
// CSOFF ignore (test has not been implemented yet)
@Ignore // should NOT fail RegexpSinglelineJava
@Test
public void testMethod() { }
// CSON ignore

// CSOFF systemout (debug)
public static void foo() {
  System.out.println("Debug info."); // should NOT fail RegexpSinglelineJava
}
// CSON systemout
          </source>
          <p>
            Example of how to configure the check to suppress more than one checks.
          </p>
          <source>
&lt;module name="SuppressionCommentFilter&quot;&gt;
  &lt;property name="offCommentFormat" value="@cs-\: ([\w\|]+)"/&gt;
  &lt;property name="checkFormat" value="$1"/&gt;
&lt;/module&gt;
          </source>
          <source>
// @cs-: ClassDataAbstractionCoupling
// @cs-: MagicNumber
@Service // no violations from ClassDataAbstractionCoupling here
@Transactional
public class UserService {
  private int value = 10022; // no violations from MagicNumber here
}
          </source>
      </subsection>
      <subsection name="Example of Usage" id="SuppressionCommentFilter_Example_of_Usage">
        <ul>
          <li>
            <a href="https://github.com/search?q=path%3Aconfig+filename%3Acheckstyle_checks.xml+repo%3Acheckstyle%2Fcheckstyle+SuppressionCommentFilter">
            Checkstyle Style</a>
          </li>
        </ul>
      </subsection>
      <subsection name="Package" id="SuppressionCommentFilter_Package">
        <p> com.puppycrawl.tools.checkstyle.filters </p>
      </subsection>

      <subsection name="Parent Module" id="SuppressionCommentFilter_Parent_Module">
        <p> <a href="config.html#TreeWalker">TreeWalker</a> </p>
      </subsection>
    </section>

    <section name="SuppressionFilter">
      <p>Since Checkstyle 3.2</p>
      <subsection name="Description" id="SuppressionFilter_Description">
          <p>
            Filter <code>SuppressionFilter</code> rejects
            audit events for Check violations according to
            a <a href="/dtds/suppressions_1_2.dtd">suppressions XML
            document</a> in a file. If there is no configured
            suppressions file or the optional is set to true and
            suppressions file was not found the Filter accepts all audit events.
          </p>
      </subsection>
      <subsection name="Properties" id="SuppressionFilter_Properties">
        <div class="wrapper">
          <table>
            <tr>
              <th>name</th>
              <th>description</th>
              <th>type</th>
              <th>default value</th>
              <th>since</th>
            </tr>
            <tr>
              <td>file</td>
              <td>
                Specify the location of the <em>suppressions XML document</em> file.
              </td>
              <td><a href="property_types.html#string">String</a></td>
              <td><code>null</code></td>
              <td>3.2</td>
            </tr>
            <tr>
              <td>optional</td>
              <td>
                Control what to do when the file is not existing. If
                <code>optional</code> is set to <code>false</code> the file must exist, or else
                it ends with error. On the other hand if optional is
                <code>true</code> and file is not found, the filter accept all
                audit events.
              </td>
              <td><a href="property_types.html#boolean">Boolean</a></td>
              <td><code>false</code></td>
              <td>6.15</td>
            </tr>
          </table>
        </div>
      </subsection>
      <subsection name="Notes" id="SuppressionFilter_Notes">
        <p>
          A <a href="/dtds/suppressions_1_2.dtd">suppressions XML
          document</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 optional.
          </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 as long as <code>id</code> or <code>message</code> is specified.
          </li>
          <li>
            <code>message</code> -
            a <a href="property_types.html#regexp">Regular Expression</a>
            matched against the message of the check associated with an audit
            event. Optional as long as <code>checks</code> or <code>id</code> is specified.
          </li>
          <li>
            <code>id</code> -
            a <a href="property_types.html#string">string</a>
            matched against the <a href="config.html#Id">check id</a> associated with an audit
            event. Optional as long as <code>checks</code> or <code>message</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>
        <p>
          ATTENTION: filtering by message is dependant on runtime locale. If project is running
          in different languages it is better to avoid filtering by message.
        </p>
        <p>
          You can download template of empty suppression filter
          <a href="files/suppressions_none.xml">here</a>.
        </p>
        <p>
          Location of the file defined in <code>file</code> property is checked
          in the following order:
        </p>
        <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>
      </subsection>
      <subsection name="Examples" id="SuppressionFilter_Examples">
          <p>
              For example, the following configuration fragment directs the
              Checker to use a <code>SuppressionFilter</code>
              with suppressions
              file <code>config/suppressions.xml</code>:
          </p>
          <source>
&lt;module name=&quot;SuppressionFilter&quot;&gt;
  &lt;property name=&quot;file&quot; value=&quot;config/suppressions.xml&quot;/&gt;
  &lt;property name=&quot;optional&quot; value=&quot;false&quot;/&gt;
&lt;/module&gt;
          </source>
          <p>
            The following suppressions XML document directs
            a <code>SuppressionFilter</code> to
            reject <code>JavadocStyleCheck</code> violations for
            lines 82 and 108 to 122 of
            file <code>AbstractComplexityCheck.java</code>,
            and <code>MagicNumberCheck</code> violations for line
            221 of file <code>JavadocStyleCheck.java</code>,
            and <code>'Missing a Javadoc comment'</code> violations
            for all lines and files:
          </p>
          <source>
&lt;?xml version=&quot;1.0&quot;?&gt;

&lt;!DOCTYPE suppressions PUBLIC
  &quot;-//Checkstyle//DTD SuppressionFilter Configuration 1.2//EN&quot;
  &quot;https://checkstyle.org/dtds/suppressions_1_2.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;suppress message=&quot;Missing a Javadoc comment&quot;/&gt;
&lt;/suppressions&gt;
          </source>
          <p>
            Suppress check by <a href="config.html#Id">module id</a>
            when config have two instances on the same check:
          </p>
          <source>
&lt;suppress id=&quot;stringEqual&quot; files=&quot;SomeTestCode.java&quot;/&gt;
          </source>
          <p>
            Suppress all checks for hidden files and folders:
          </p>
          <source>
&lt;suppress files=&quot;[/\\]\..+&quot; checks=&quot;.*&quot;/&gt;
          </source>
          <p>
            Suppress all checks for Maven-generated code:
          </p>
          <source>
&lt;suppress files=&quot;[/\\]target[/\\]&quot; checks=&quot;.*&quot;/&gt;
          </source>
          <p>
            Suppress all 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 all checks for image files:
          </p>
          <source>
&lt;suppress files=&quot;.+\.(?:png|gif|jpg|jpeg)$&quot; checks=&quot;.*&quot;/&gt;
          </source>
          <p>
            Suppress all 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>
          <p>
            Suppress naming violations on variable named 'log' in all files:
          </p>
          <source>
&lt;suppress message=&quot;Name 'log' must match pattern&quot;/&gt;
          </source>
      </subsection>
      <subsection name="Example of Usage" id="SuppressionFilter_Example_of_Usage">
        <ul>
          <li>
            <a href="https://github.com/search?q=path%3Asrc%2Fmain%2Fresources+filename%3Agoogle_checks.xml+repo%3Acheckstyle%2Fcheckstyle+SuppressionFilter">
              Google Style</a>
          </li>
          <li>
            <a href="https://github.com/search?q=path%3Asrc%2Fmain%2Fresources+filename%3Asun_checks.xml+repo%3Acheckstyle%2Fcheckstyle+SuppressionFilter">
              Sun Style</a>
          </li>
          <li>
            <a href="https://github.com/search?q=path%3Aconfig+filename%3Acheckstyle_checks.xml+repo%3Acheckstyle%2Fcheckstyle+SuppressionFilter">
            Checkstyle Style</a>
          </li>
        </ul>
      </subsection>
      <subsection name="Package" id="SuppressionFilter_Package">
        <p> com.puppycrawl.tools.checkstyle.filters </p>
      </subsection>

      <subsection name="Parent Module" id="SuppressionFilter_Parent_Module">
        <p> <a href="config.html#Checker">Checker</a> </p>
      </subsection>
    </section>

    <section name="SuppressionSingleFilter">
      <p>Since Checkstyle 8.23</p>
      <subsection name="Description" id="SuppressionSingleFilter_Description">
        <p>
          Filter <code>SuppressionSingleFilter</code> suppresses audit events for
          Checks violations in the specified file, class, checks, message, module id,
          lines, and columns.
        </p>
        <p>
          Rationale: To allow users use suppressions configured in the same config with
          other modules. SuppressionFilter and SuppressionXpathFilter are require separate
          file.
        </p>
        <p>
          Advice: If checkstyle configuration is used for several projects, single suppressions
          on common files/folders is better to put in checkstyle configuration as common rule.
          All suppression that are for specific file names is better to keep in project specific
          config file.
        </p>
        <p>
          Attention: This filter only supports single suppression, and will need
          multiple instances if users wants to suppress multiple violations.
        </p>
      </subsection>
      <subsection name="Properties" id="SuppressionSingleFilter_Properties">
        <div class="wrapper">
          <table>
            <tr>
              <th>name</th>
              <th>description</th>
              <th>type</th>
              <th>default value</th>
              <th>since</th>
            </tr>
            <tr>
              <td>files</td>
              <td>Define the RegExp for matching against the file name associated
                  with an audit event.</td>
              <td><a href="property_types.html#regexp">Regular Expression</a></td>
              <td><code>null</code></td>
              <td>8.23</td>
            </tr>
            <tr>
              <td>checks</td>
              <td>Define the RegExp for matching against the name of the check
                  associated with an audit event.</td>
              <td><a href="property_types.html#regexp">Regular Expression</a></td>
              <td><code>null</code></td>
              <td>8.23</td>
            </tr>
            <tr>
              <td>message</td>
              <td>Define the RegExp for matching against the message of the check associated
                  with an audit event.</td>
              <td><a href="property_types.html#regexp">Regular Expression</a></td>
              <td><code>null</code></td>
              <td>8.23</td>
            </tr>
            <tr>
              <td>id</td>
              <td>Specify a string matched against the ID of the check associated with an audit
                  event.</td>
              <td><a href="property_types.html#string">String</a></td>
              <td><code>null</code></td>
              <td>8.23</td>
            </tr>
            <tr>
              <td>lines</td>
              <td>Specify a comma-separated list of values, where each value is an integer or a
                range of integers denoted by integer-integer.</td>
              <td><a href="property_types.html#string">String</a></td>
              <td><code>null</code></td>
              <td>8.23</td>
            </tr>
            <tr>
              <td>columns</td>
              <td>Specify a comma-separated list of values, where each value is an integer or a
                range of integers denoted by integer-integer.</td>
              <td><a href="property_types.html#string">String</a></td>
              <td><code>null</code></td>
              <td>8.23</td>
            </tr>
          </table>
        </div>
      </subsection>
      <subsection name="Examples" id="SuppressionSingleFilter_Examples">
          <p>
            The following suppressions directs
            a <code>SuppressionSingleFilter</code> to
            reject <code>JavadocStyleCheck</code> violations for
            lines 82 and 108 to 122 of
            file <code>AbstractComplexityCheck.java</code>,
            and <code>MagicNumberCheck</code> violations for line
            221 of file <code>JavadocStyleCheck.java</code>,
            and <code>'Missing a Javadoc comment'</code> violations
            for all lines and files:
          </p>
          <source>
&lt;module name=&quot;SuppressionSingleFilter&quot;&gt;
  &lt;property name=&quot;checks&quot; value=&quot;JavadocStyleCheck&quot;/&gt;
  &lt;property name=&quot;files&quot; value=&quot;AbstractComplexityCheck.java&quot;/&gt;
  &lt;property name=&quot;lines&quot; value=&quot;82,108-122&quot;/&gt;
&lt;/module&gt;
&lt;module name=&quot;SuppressionSingleFilter&quot;&gt;
  &lt;property name=&quot;checks&quot; value=&quot;MagicNumberCheck&quot;/&gt;
  &lt;property name=&quot;files&quot; value=&quot;JavadocStyleCheck.java&quot;/&gt;
  &lt;property name=&quot;lines&quot; value=&quot;221&quot;/&gt;
&lt;/module&gt;
&lt;module name=&quot;SuppressionSingleFilter&quot;&gt;
  &lt;property name=&quot;message&quot; value=&quot;Missing a Javadoc comment&quot;/&gt;
&lt;/module&gt;
          </source>
          <p>
            Suppress check by <a href="https://checkstyle.org/config.html#Id">module id</a>
            when config have two instances on the same check:
          </p>
          <source>
&lt;module name=&quot;SuppressionSingleFilter&quot;&gt;
  &lt;property name=&quot;id&quot; value=&quot;stringEqual&quot;/&gt;
  &lt;property name=&quot;files&quot; value=&quot;SomeTestCode.java&quot;/&gt;
&lt;/module&gt;
          </source>
          <p>
            Suppress all checks for hidden files and folders:
          </p>
          <source>
&lt;module name=&quot;SuppressionSingleFilter&quot;&gt;
  &lt;property name=&quot;files&quot; value=&quot;[/\\]\..+&quot;/&gt;
  &lt;property name=&quot;checks&quot; value=&quot;.*&quot;/&gt;
&lt;/module&gt;
          </source>
          <p>
            Suppress all checks for Maven-generated code:
          </p>
          <source>
&lt;module name=&quot;SuppressionSingleFilter&quot;&gt;
  &lt;property name=&quot;files&quot; value=&quot;[/\\]target[/\\]&quot;/&gt;
  &lt;property name=&quot;checks&quot; value=&quot;.*&quot;/&gt;
&lt;/module&gt;
          </source>
          <p>
            Suppress all checks for archives, classes and other binary files:
          </p>
          <source>
&lt;module name=&quot;SuppressionSingleFilter&quot;&gt;
  &lt;property name=&quot;files&quot; value=&quot;.+\.(?:jar|zip|war|class|tar|bin)$&quot;/&gt;
  &lt;property name=&quot;checks&quot; value=&quot;.*&quot;/&gt;
&lt;/module&gt;
          </source>
          <p>
            Suppress all checks for image files:
          </p>
          <source>
&lt;module name=&quot;SuppressionSingleFilter&quot;&gt;
  &lt;property name=&quot;files&quot; value=&quot;.+\.(?:png|gif|jpg|jpeg)$&quot;/&gt;
  &lt;property name=&quot;checks&quot; value=&quot;.*&quot;/&gt;
&lt;/module&gt;
          </source>
          <p>
            Suppress all checks for non-java files:
          </p>
          <source>
&lt;module name=&quot;SuppressionSingleFilter&quot;&gt;
  &lt;property name=&quot;files&quot;
    value=&quot;.+\.(?:txt|xml|csv|sh|thrift|html|sql|eot|ttf|woff|css|png)$&quot;/&gt;
  &lt;property name=&quot;checks&quot; value=&quot;.*&quot;/&gt;
&lt;/module&gt;
          </source>
          <p>
            Suppress all checks in generated sources:
          </p>
          <source>
&lt;module name=&quot;SuppressionSingleFilter&quot;&gt;
  &lt;property name=&quot;files&quot; value=&quot;com[\\/]mycompany[\\/]app[\\/]gen[\\/]&quot;/&gt;
  &lt;property name=&quot;checks&quot; value=&quot;.*&quot;/&gt;
&lt;/module&gt;
          </source>
          <p>
            Suppress FileLength check on integration tests in certain folder:
          </p>
          <source>
&lt;module name=&quot;SuppressionSingleFilter&quot;&gt;
  &lt;property name=&quot;files&quot; value=&quot;com[\\/]mycompany[\\/]app[\\/].*IT.java&quot;/&gt;
  &lt;property name=&quot;checks&quot; value=&quot;FileLength&quot;/&gt;
&lt;/module&gt;
          </source>
          <p>
            Suppress naming violations on variable named 'log' in all files:
          </p>
          <source>
&lt;module name=&quot;SuppressionSingleFilter&quot;&gt;
  &lt;property name=&quot;message&quot; value=&quot;Name 'log' must match pattern&quot;/&gt;
&lt;/module&gt;
          </source>
      </subsection>
      <subsection name="Example of Usage" id="SuppressionSingleFilter_Example_of_Usage">
        <ul>
          <li>
            <a href="https://github.com/search?q=path%3Aconfig+filename%3Acheckstyle_checks.xml+repo%3Acheckstyle%2Fcheckstyle+SuppressionSingleFilter">
            Checkstyle Style</a>
          </li>
        </ul>
      </subsection>
      <subsection name="Package" id="SuppressionSingleFilter_Package">
        <p> com.puppycrawl.tools.checkstyle.filters </p>
      </subsection>
      <subsection name="Parent Module" id="SuppressionSingleFilter_Parent_Module">
        <p> <a href="config.html#Checker">Checker</a> </p>
      </subsection>
    </section>

    <section name="SuppressionXpathFilter">
      <p>Since Checkstyle 8.6</p>
      <subsection name="Description" id="SuppressionXpathFilter_Description">
        <p>
          Filter <code>SuppressionXpathFilter</code> works as
          <a href="config_filters.html#SuppressionFilter">
          SuppressionFilter</a>.
          Additionally, filter processes <code>suppress-xpath</code> elements,
          which contains xpath-expressions. Xpath-expressions
          are queries for suppressed nodes inside the AST tree.
        </p>
        <p>
          Currently, filter does not support the following checks:
        </p>
        <ul id="SuppressionXpathFilter_IncompatibleChecks">
          <li>AnnotationLocation</li>
          <li>AnnotationOnSameLine</li>
          <li>AnnotationUseStyle</li>
          <li>ArrayTrailingComma</li>
          <li>AvoidEscapedUnicodeCharacters</li>
          <li>AvoidStarImport</li>
          <li>AvoidStaticImport</li>
          <li>CommentsIndentation</li>
          <li>CustomImportOrder</li>
          <li>EmptyCatchBlock</li>
          <li>EmptyLineSeparator</li>
          <li>FinalClass</li>
          <li>IllegalCatch</li>
          <li>ImportOrder</li>
          <li>Indentation</li>
          <li>InterfaceIsType</li>
          <li>InterfaceMemberImpliedModifier</li>
          <li>InvalidJavadocPosition</li>
          <li>JavadocContentLocation</li>
          <li>JavadocMethod</li>
          <li>JavadocStyle</li>
          <li>JavadocType</li>
          <li>LambdaParameterName</li>
          <li>MethodCount</li>
          <li>MissingCtor</li>
          <li>MissingJavadocMethod</li>
          <li>MissingJavadocPackage</li>
          <li>MissingJavadocType</li>
          <li>MissingOverride</li>
          <li>MissingSwitchDefault</li>
          <li>NeedBraces</li>
          <li>NoClone</li>
          <li>NoFinalizer</li>
          <li>NoLineWrap</li>
          <li>OneTopLevelClass</li>
          <li>OuterTypeFilename</li>
          <li>OverloadMethodsDeclarationOrder</li>
          <li>PackageAnnotation</li>
          <li>PackageDeclaration</li>
          <li>Regexp</li>
          <li>RegexpSinglelineJava</li>
          <li>SuppressWarningsHolder</li>
          <li>TodoComment</li>
          <li>TrailingComment</li>
          <li>UncommentedMain</li>
          <li>UnnecessaryParentheses</li>
          <li>VariableDeclarationUsageDistance</li>
          <li>WriteTag</li>
        </ul>
        <p>
          Also, the filter does not support Javadoc checks:
        </p>
        <ul id="SuppressionXpathFilter_JavadocChecks">
          <li>AtclauseOrder</li>
          <li>JavadocBlockTagLocation</li>
          <li>JavadocParagraph</li>
          <li>JavadocTagContinuationIndentation</li>
          <li>MissingDeprecated</li>
          <li>NonEmptyAtclauseDescription</li>
          <li>SingleLineJavadoc</li>
          <li>SummaryJavadoc</li>
        </ul>
        <p>
          Note, that support for these Checks will be available after resolving issues
          <a href="https://github.com/checkstyle/checkstyle/issues/5770">#5770</a> and
          <a href="https://github.com/checkstyle/checkstyle/issues/5777">#5777</a>.
        </p>
        <p>
          Currently, filter supports the following
          xpath axes:
        </p>
        <ul>
          <li>ancestor</li>
          <li>ancestor-or-self</li>
          <li>attribute</li>
          <li>child</li>
          <li>descendant</li>
          <li>descendant-or-self</li>
          <li>following</li>
          <li>following-sibling</li>
          <li>parent</li>
          <li>preceding</li>
          <li>preceding-sibling</li>
          <li>self</li>
        </ul>
        <p>
          You can use the command line helper tool to generate xpath
          suppressions based on your configuration file and input files.
          See
          <a href="cmdline.html">here</a>
          for more details.
        </p>
      </subsection>
      <subsection name="Notes" id="SuppressionXpathFilter_Notes">
        <p>
          The suppression file location is checked in following order:
        </p>
        <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>
      </subsection>
      <subsection name="Properties" id="SuppressionXpathFilter_Properties">
        <div class="wrapper">
          <table>
            <tr>
              <th>name</th>
              <th>description</th>
              <th>type</th>
              <th>default value</th>
              <th>since</th>
            </tr>
            <tr>
              <td>file</td>
              <td>
                Specify the location of the <em>suppressions XML document</em> file.
              </td>
              <td><a href="property_types.html#string">String</a></td>
              <td><code>null</code></td>
              <td>8.6</td>
            </tr>
            <tr>
              <td>optional</td>
              <td>
                Control what to do when the file is not existing. If
                optional is set to false the file must exist, or else
                it ends with error. On the other hand if optional is
                true and file is not found, the filter accepts all
                audit events.
              </td>
              <td><a href="property_types.html#boolean">Boolean</a></td>
              <td><code>false</code></td>
              <td>8.6</td>
            </tr>
          </table>
        </div>
      </subsection>
      <subsection name="Examples" id="SuppressionXpathFilter_Examples">
        <p>
          For example, the following configuration fragment directs the
          Checker to use a <code>SuppressionXpathFilter</code>
          with suppressions
          file <code>config/suppressions.xml</code>:
        </p>
        <source>
&lt;module name=&quot;SuppressionXpathFilter&quot;&gt;
  &lt;property name=&quot;file&quot; value=&quot;config/suppressions.xml&quot;/&gt;
  &lt;property name=&quot;optional&quot; value=&quot;false&quot;/&gt;
&lt;/module&gt;
        </source>
        <p>
          A <a href="/dtds/suppressions_1_2_xpath_experimental.dtd"><em>suppressions XML
          document</em></a> contains a set
          of <code>suppress</code> and <code>suppress-xpath</code> elements, where
          each <code>suppress-xpath</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 optional.
          </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 as long as <code>id</code> or <code>message</code> is specified.
          </li>
          <li>
            <code>message</code> -
            a <a href="property_types.html#regexp">Regular Expression</a>
            matched against the message of the check associated with an audit
            event. Optional as long as <code>checks</code> or <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 as long as <code>checks</code> or <code>message</code> is specified.
          </li>
          <li>
            <code>query</code> -
            a <a href="property_types.html#string">string</a>
            xpath query. It is optional.
          </li>
        </ul>
        <p>
          Each audit event is checked against
          each <code>suppress</code> and <code>suppress-xpath</code> element. It is
          suppressed if all specified attributes match against the audit
          event.
        </p>
        <p>
          ATTENTION: filtering by message is dependant on runtime locale. If project is running
          in different languages it is better to avoid filtering by message.
        </p>
        <p>
          The following suppressions XML document directs
          a <code>SuppressionXpathFilter</code> to
          reject <code>CyclomaticComplexity</code> violations for
          all methods with name <i>sayHelloWorld</i> inside <i>FileOne</i>
          and <i>FileTwo</i> files:
        </p>
        <p>
        Currently, xpath queries support one type of attribute <code>@text</code>.
        <code>@text</code> - addresses to the text value of the node. For example: variable name,
        annotation name, text content and etc.
        Only the following token types support <code>@text</code> attribute:
        <code>TokenTypes.IDENT</code>, <code>TokenTypes.STRING_LITERAL</code>,
        <code>TokenTypes.CHAR_LITERAL</code>, <code>TokenTypes.NUM_LONG</code>,
        <code>TokenTypes.NUM_INT</code>, <code>TokenTypes.NUM_DOUBLE</code>,
        <code>TokenTypes.NUM_FLOAT</code>.
        These token types were selected because only their text values are different in content
        from token type and represent text value from file and can be used in xpath queries for
        more accurate results.
        Other token types always have constant values.
        </p>
        <source>
&lt;?xml version=&quot;1.0&quot;?&gt;

&lt;!DOCTYPE suppressions PUBLIC
&quot;-//Checkstyle//DTD SuppressionXpathFilter Experimental Configuration 1.2//EN&quot;
&quot;https://checkstyle.org/dtds/suppressions_1_2_xpath_experimental.dtd&quot;&gt;

&lt;suppressions&gt;
  &lt;suppress-xpath checks=&quot;CyclomaticComplexity&quot;
  files=&quot;FileOne.java,FileTwo.java&quot;
  query=&quot;//METHOD_DEF[./IDENT[@text='sayHelloWorld']]&quot;/&gt;
&lt;/suppressions&gt;
        </source>
        <p>
          Suppress checks for package definitions:
        </p>
        <source>
&lt;suppress-xpath checks=&quot;.*&quot; query=&quot;/PACKAGE_DEF&quot;/&gt;
        </source>
        <p>
          Suppress checks for parent element of the first variable definition:
        </p>
        <source>
&lt;suppress-xpath checks=&quot;.*&quot; query=&quot;(//VARIABLE_DEF)[1]/..&quot;/&gt;
        </source>
        <p>
          Suppress checks for elements which are either class definitions,
          either method definitions.
        </p>
        <source>
&lt;suppress-xpath checks=&quot;.*&quot; query=&quot;//CLASS_DEF | //METHOD_DEF&quot;/&gt;
        </source>
        <p>
          Suppress checks for certain methods:
        </p>
        <source>
&lt;suppress-xpath checks=&quot;.*&quot; query=&quot;//METHOD_DEF[./IDENT[@text='getSomeVar'
          or @text='setSomeVar']]&quot;/&gt;
        </source>
        <p>
          Suppress checks for variable <i>testVariable</i> inside <i>testMethod</i> method
          inside <i>TestClass</i> class.
        </p>
        <source>
&lt;suppress-xpath checks=&quot;.*&quot; query=&quot;/CLASS_DEF[@text='TestClass']
          //METHOD_DEF[./IDENT[@text='testMethod']]
          //VARIABLE_DEF[./IDENT[@text='testVariable']]&quot;/&gt;
        </source>
        <p>
          In the following sample, violations for <code>LeftCurly</code> check will be suppressed
          for classes with name <i>Main</i> or for methods with name <i>calculate</i>.
        </p>
        <source>
&lt;suppress-xpath checks=&quot;LeftCurly&quot; query=&quot;/CLASS_DEF[./IDENT[@text='Main']]//*
          | //METHOD_DEF[./IDENT[@text='calculate']]/*&quot;/&gt;
        </source>
        <p>
          The following example demonstrates how to suppress <code>RequireThis</code> violations for
          variable <i>age</i> inside <i>changeAge</i> method.
        </p>
        <source>
&lt;suppress-xpath checks=&quot;RequireThis&quot;
     query=&quot;/CLASS_DEF[./IDENT[@text='InputTest']]
          //METHOD_DEF[./IDENT[@text='changeAge']]//ASSIGN/IDENT[@text='age']&quot;/&gt;
        </source>
        <source>
public class InputTest {
  private int age = 23;

  public void changeAge() {
    age = 24; //violation will be suppressed
  }
}
        </source>
        <p>
          Suppress <code>IllegalThrows</code> violations only for methods with name
          <i>throwsMethod</i> and only for <code>RuntimeException</code> exceptions.
          Double colon is used for axis iterations. In the following example <code>ancestor</code>
          axis is used to iterate all ancestor nodes of the current node with type
          <code>METHOD_DEF</code> and name <i>throwsMethod</i>. Please read more about xpath axes at
          <a href="https://www.w3schools.com/xml/xpath_axes.asp">W3Schools Xpath Axes</a>.
        </p>
        <source>
&lt;suppress-xpath checks=&quot;IllegalThrows&quot; query=&quot;//LITERAL_THROWS
          /IDENT[@text='RuntimeException' and
          ./ancestor::METHOD_DEF[./IDENT[@text='throwsMethod']]]&quot;/&gt;
        </source>
        <source>
public class InputTest {
  public void throwsMethod() throws RuntimeException { // violation will be suppressed
  }

  public void sampleMethod() throws RuntimeException { // will throw violation here
  }
}
        </source>
        <p>
          The following sample demonstrates how to suppress all violations for method itself and
          all descendants. <code>descendant-or-self</code> axis iterates through current node and
          all children nodes at any level. Keyword <code>node()</code> selects node elements.
          Please read more about xpath syntax at
          <a href="https://www.w3schools.com/xml/xpath_syntax.asp">W3Schools Xpath Syntax</a>.
        </p>
        <source>
&lt;suppress-xpath checks=&quot;.*&quot; query=&quot;//METHOD_DEF[./IDENT[@text='legacyMethod']]
          /descendant-or-self::node()&quot;/&gt;
        </source>

        <p>Some elements can be suppressed in different ways.
          For example, to suppress violation on variable <code>wordCount</code> in following code:
        </p>
        <source>
public class InputTest {
    private int wordCount = 11;
}
        </source>
        <p>You need to look at AST of such code by our CLI tool:</p>
        <source>
$ java -jar checkstyle-X.XX-all.jar -t InputTest.java
CLASS_DEF -> CLASS_DEF [1:0]
|--MODIFIERS -> MODIFIERS [1:0]
|   `--LITERAL_PUBLIC -> public [1:0]
|--LITERAL_CLASS -> class [1:7]
|--IDENT -> InputTest [1:13]
`--OBJBLOCK -> OBJBLOCK [1:23]
|--LCURLY -> { [1:23]
|--VARIABLE_DEF -> VARIABLE_DEF [2:4]
|   |--MODIFIERS -> MODIFIERS [2:4]
|   |   `--LITERAL_PRIVATE -> private [2:4]
|   |--TYPE -> TYPE [2:12]
|   |   `--LITERAL_INT -> int [2:12]
|   |--IDENT -> wordCount [2:16]
|   |--ASSIGN -> = [2:26]
|   |   `--EXPR -> EXPR [2:28]
|   |       `--NUM_INT -> 11 [2:28]
|   `--SEMI -> ; [2:30]
`--RCURLY -> } [3:0]
        </source>
        <p>The easiest way is to suppress by variable name. As you can see <code>VARIABLE_DEF</code>
        node refers to variable declaration statement and has child node with token type
        <code>IDENT</code> which is used for storing class, method, variable names. </p>
        <p>The following example demonstrates how variable can be queried by its name:</p>
        <source>
&lt;suppress-xpath checks=&quot;.&quot; query=&quot;//VARIABLE_DEF[
            ./IDENT[@text='wordCount']]&quot;/&gt;
        </source>
        <p>Another way is to suppress by variable value. Again, if you look at the printed AST tree
        above, you will notice that one of the grandchildren of <code>VARIABLE_DEF</code> node is
        responsible for storing variable value - <code>NUM_INT</code> with value <b>11</b>.</p>
        <p>The following example demonstrates how variable can be queried by its value, same
        approach applies to <code>String, char, float, double, int, long</code> data types:</p>
        <source>
&lt;suppress-xpath checks=&quot;.&quot; query=&quot;//VARIABLE_DEF[.//NUM_INT[@text=11]]&quot;/&gt;
        </source>
        <p>Next example is about suppressing method with certain annotation by its name and
        element value.</p>
        <source>
        public class InputTest {
            @Generated("first") // should not be suppressed
            public void test1() {
            }

            @Generated("second") // should be suppressed
            public void test2() {
            }
        }
        </source>
        <p>First of all we need to look at AST tree printed by our CLI tool: </p>
        <source>
$ java -jar checkstyle-X.XX-all.jar -t InputTest.java
CLASS_DEF -> CLASS_DEF [1:0]
|--MODIFIERS -> MODIFIERS [1:0]
|   `--LITERAL_PUBLIC -> public [1:0]
|--LITERAL_CLASS -> class [1:7]
|--IDENT -> InputTest [1:13]
`--OBJBLOCK -> OBJBLOCK [1:23]
|--LCURLY -> { [1:23]
|--METHOD_DEF -> METHOD_DEF [2:4]
|   |--MODIFIERS -> MODIFIERS [2:4]
|   |   |--ANNOTATION -> ANNOTATION [2:4]
|   |   |   |--AT -> @ [2:4]
|   |   |   |--IDENT -> Generated [2:5]
|   |   |   |--LPAREN -> ( [2:14]
|   |   |   |--EXPR -> EXPR [2:15]
|   |   |   |   `--STRING_LITERAL -> "first" [2:15]
|   |   |   `--RPAREN -> ) [2:22]
|   |   `--LITERAL_PUBLIC -> public [3:4]
|   |--TYPE -> TYPE [3:11]
|   |   `--LITERAL_VOID -> void [3:11]
|   |--IDENT -> test1 [3:16]
|   |--LPAREN -> ( [3:21]
|   |--PARAMETERS -> PARAMETERS [3:22]
|   |--RPAREN -> ) [3:22]
|   `--SLIST -> { [3:24]
|       `--RCURLY -> } [4:4]
|--METHOD_DEF -> METHOD_DEF [6:4]
|   |--MODIFIERS -> MODIFIERS [6:4]
|   |   |--ANNOTATION -> ANNOTATION [6:4]
|   |   |   |--AT -> @ [6:4]
|   |   |   |--IDENT -> Generated [6:5]
|   |   |   |--LPAREN -> ( [6:14]
|   |   |   |--EXPR -> EXPR [6:15]
|   |   |   |   `--STRING_LITERAL -> "second" [6:15]
|   |   |   `--RPAREN -> ) [6:23]
|   |   `--LITERAL_PUBLIC -> public [7:4]
|   |--TYPE -> TYPE [7:11]
|   |   `--LITERAL_VOID -> void [7:11]
|   |--IDENT -> test2 [7:16]
|   |--LPAREN -> ( [7:21]
|   |--PARAMETERS -> PARAMETERS [7:22]
|   |--RPAREN -> ) [7:22]
|   `--SLIST -> { [7:24]
|       `--RCURLY -> } [8:4]
`--RCURLY -> } [9:0]
        </source>
        <p>AST node <code>ANNOTATION -> ANNOTATION [6:4]</code> has direct child
        <code>IDENT -> Generated [6:5]</code>, therefore can be queried by <code>IDENT</code> value:
        </p>
        <source>
&lt;suppress-xpath checks=&quot;.&quot; query=&quot;//METHOD_DEF[
            .//ANNOTATION/IDENT[@text='Generated']]&quot;/&gt;
        </source>
        <p>The problem with query above that it will suppress violations for all methods with
        annotation <code>@Generated</code>. In order to suppress methods with
        <code>@Generated("second")</code> annotations only, you need to look at AST tree again.
        Value of the <code>ANNOTATION</code> node is stored inside sub-node with token type
        <code>STRING_LITERAL</code>. Use the following query to suppress methods with
        <code>@Generated("second")</code> annotation:</p>
        <source>
&lt;suppress-xpath checks=&quot;.&quot; query=&quot;//METHOD_DEF[.//ANNOTATION[
            ./IDENT[@text='Generated'] and ./EXPR/STRING_LITERAL[@text='second']]]&quot;/&gt;
        </source>
      </subsection>
      <subsection name="Example of Usage" id="SuppressionXpathFilter_Example_of_Usage">
        <ul>
          <li>
            <a href="https://github.com/search?q=path%3Asrc%2Fmain%2Fresources+filename%3Agoogle_checks.xml+repo%3Acheckstyle%2Fcheckstyle+SuppressionXpathFilter">
              Google Style</a>
          </li>
          <li>
            <a href="https://github.com/search?q=path%3Asrc%2Fmain%2Fresources+filename%3Asun_checks.xml+repo%3Acheckstyle%2Fcheckstyle+SuppressionXpathFilter">
              Sun Style</a>
          </li>
          <li>
            <a href="https://github.com/search?q=path%3Aconfig+filename%3Acheckstyle_checks.xml+repo%3Acheckstyle%2Fcheckstyle+SuppressionXpathFilter">
              Checkstyle Style</a>
          </li>
        </ul>
      </subsection>
      <subsection name="Package" id="SuppressionXpathFilter_Package">
        <p> com.puppycrawl.tools.checkstyle.filters </p>
      </subsection>

      <subsection name="Parent Module" id="SuppressionXpathFilter_Parent_Module">
        <p> <a href="config.html#TreeWalker">TreeWalker</a> </p>
      </subsection>
    </section>

    <section name="SuppressionXpathSingleFilter">
      <p>Since Checkstyle 8.18</p>
      <subsection name="Description" id="SuppressionXpathSingleFilter_Description">
        <p>
          Filter <code>SuppressionXpathSingleFilter</code> suppresses audit events for
          Checks violations in the specified file, class, checks, message, module id,
          and xpath.
        </p>
        <p>
          Rationale: To allow users use suppressions configured in the same config with
          other modules. SuppressionFilter and SuppressionXpathFilter are require separate
          file.
        </p>
        <p>
          Advice: If checkstyle configuration is used for several projects, single suppressions
          on common files/folders is better to put in checkstyle configuration as common rule.
          All suppression that are for specific file names is better to keep in project specific
          config file.
        </p>
        <p>
          Attention: This filter only supports single suppression, and will need
          multiple instances if users wants to suppress multiple violations.
        </p>
      </subsection>
      <subsection name="Properties" id="SuppressionXpathSingleFilter_Properties">
        <div class="wrapper">
          <table>
            <tr>
              <th>name</th>
              <th>description</th>
              <th>type</th>
              <th>default value</th>
              <th>since</th>
            </tr>
            <tr>
              <td>files</td>
              <td>Define a Regular Expression matched against the file name associated
                  with an audit event.</td>
              <td><a href="property_types.html#regexp">Regular Expression</a></td>
              <td><code>null</code></td>
              <td>8.18</td>
            </tr>
            <tr>
              <td>checks</td>
              <td>Define a Regular Expression matched against the name of the check
                  associated with an audit event.</td>
              <td><a href="property_types.html#regexp">Regular Expression</a></td>
              <td><code>null</code></td>
              <td>8.18</td>
            </tr>
            <tr>
              <td>message</td>
              <td>Define a Regular Expression matched against the message of the check associated
                  with an audit event.</td>
              <td><a href="property_types.html#regexp">Regular Expression</a></td>
              <td><code>null</code></td>
              <td>8.18</td>
            </tr>
            <tr>
              <td>id</td>
              <td>Define a string matched against the ID of the check associated with an audit
                  event.</td>
              <td><a href="property_types.html#string">String</a></td>
              <td><code>null</code></td>
              <td>8.18</td>
            </tr>
            <tr>
              <td>query</td>
              <td>Define a string xpath query.</td>
              <td><a href="property_types.html#string">String</a></td>
              <td><code>null</code></td>
              <td>8.18</td>
            </tr>
          </table>
        </div>
      </subsection>
      <subsection name="Examples" id="SuppressionXpathSingleFilter_Examples">
        <p>
          To configure to suppress the MethodName check
          for all methods with name MyMethod
          inside FileOne and FileTwo files:
        </p>
        <div class="wrapper">
          <pre>
&lt;module name="SuppressionXpathSingleFilter"&gt;
  &lt;property name="files" value="File(One|Two)\.java"/&gt;
  &lt;property name="checks" value="MethodName"/&gt;
  &lt;property name="query" value="(/CLASS_DEF[@text='FileOne']/OBJBLOCK/
            METHOD_DEF[@text='MyMethod']/IDENT)|
            (/CLASS_DEF[@text='FileTwo']/OBJBLOCK/METHOD_DEF[@text='MyMethod']/IDENT)"/&gt;
&lt;/module&gt;
          </pre>
        </div>
        <p>Code example:</p>
        <div class="wrapper">
          <pre>
public class FileOne {
  public void MyMethod() {} // OK
}

public class FileTwo {
  public void MyMethod() {} // OK
}

public class FileThree {
  public void MyMethod() {} // violation, name 'MyMethod'
                            // must match pattern '^[a-z](_?[a-zA-Z0-9]+)*$'
}
          </pre>
        </div>
        <p>
          To suppress MethodName check for method names matched pattern 'MyMethod[0-9]':
        </p>
        <div class="wrapper">
          <pre>
&lt;module name="SuppressionXpathSingleFilter"&gt;
  &lt;property name="checks" value="MethodName"/&gt;
  &lt;property name="message" value="MyMethod[0-9]"/&gt;
&lt;/module&gt;
          </pre>
        </div>
        <p>Code Example:</p>
        <div class="wrapper">
          <pre>
public class FileOne {
  public void MyMethod1() {} // OK
  public void MyMethod2() {} // OK
  public void MyMethodA() {} // violation, name 'MyMethodA' must
                             // match pattern '^[a-z](_?[a-zA-Z0-9]+)*$'
}
          </pre>
        </div>
        <p>
          To suppress checks being specified by id property:
        </p>
        <div class="wrapper">
          <pre>
&lt;module name="MethodName"&gt;
  &lt;property name="id" value="MethodName1"/&gt;
  &lt;property name="format" value="^[a-z](_?[a-zA-Z0-9]+)*$"/&gt;
&lt;module/&gt;
&lt;module name="SuppressionXpathSingleFilter"&gt;
  &lt;property name="files" value="FileOne.java"/&gt;
  &lt;property name="id" value="MethodName1"/&gt;
&lt;module/&gt;
          </pre>
        </div>
        <p>Code example:</p>
        <div class="wrapper">
          <pre>
public class FileOne {
  public void MyMethod() {} // OK
}
public class FileTwo {
  public void MyMethod() {} // violation,  name 'MyMethod' must
                            //match pattern '^[a-z](_?[a-zA-Z0-9]+)*$'
}
          </pre>
        </div>
        <p>
          To suppress checks for all package definitions:
        </p>
        <div class="wrapper">
          <pre>
&lt;module name="SuppressionXpathSingleFilter&gt;
  &lt;property name="checks" value="PackageName"/&gt;
  &lt;property name="query" query="/PACKAGE_DEF[@text='File']/IDENT"/&gt;
&lt;/module&gt;
          </pre>
        </div>
        <p>Code example:</p>
        <div class="wrapper">
          <pre>
package File; // OK

public class FileOne {}
          </pre>
        </div>
        <p>
          To suppress RedundantModifier check for interface definitions:
        </p>
        <div class="wrapper">
          <pre>
&lt;module name="SuppressionXpathSingleFilter"&gt;
  &lt;property name="checks" value="RedundantModifier"/&gt;
  &lt;property name="query" value="/INTERFACE_DEF//*"/&gt;
&lt;module/&gt;
          </pre>
        </div>
        <p>Code Example:</p>
        <div class="wrapper">
          <pre>
public interface TestClass {
  public static final int CONSTANT1 = 1;  // OK
}
          </pre>
        </div>
        <p>
          To suppress checks in the FileOne file by non-query:
        </p>
        <div class="wrapper">
          <pre>
&lt;module name="SuppressionXpathSingleFilter"&gt;
  &lt;property name="files" value="FileOne.java"/&gt;
  &lt;property name="checks" value="MyMethod"/&gt;
&lt;/module&gt;
          </pre>
        </div>
        <p>Code example:</p>
        <div class="wrapper">
          <pre>
public class FileOne {
  public void MyMethod() {} // OK
}

public class FileTwo {
  public void MyMethod() {} // violation, name 'MyMethod'
                            // must match pattern '^[a-z](_?[a-zA-Z0-9]+)*$'
}
          </pre>
        </div>
        <p>
          Suppress checks for elements which are either class definitions,
          either method definitions:
        </p>
        <div class="wrapper">
          <pre>
&lt;module name="SuppressionXpathSingleFilter"&gt;
  &lt;property name="checks" value=".*"/&gt;
  &lt;property name="query"
            value="(/CLASS_DEF[@text='FileOne'])|
            (/CLASS_DEF[@text='FileOne']/OBJBLOCK/METHOD_DEF[@text='MyMethod']/IDENT)"/&gt;
&lt;/module&gt;
          </pre>
        </div>
        <p>Code example:</p>
        <div class="wrapper">
          <pre>
abstract class FileOne { // OK
  public void MyMethod() {} // OK
}

abstract class FileTwo { // violation of the AbstractClassName check,
                         // it should match the pattern "^Abstract.+$"
  public void MyMethod() {} // violation, name 'MyMethod'
                            // must match pattern '^[a-z](_?[a-zA-Z0-9]+)*$'
}
          </pre>
        </div>
        <p>
          Suppress checks for MyMethod1 or MyMethod2 methods:
        </p>
        <div class="wrapper">
          <pre>
&lt;module name="SuppressionXpathSingleFilter"&gt;
  &lt;property name="checks" value="MethodName"/&gt;
  &lt;property name="query" value="/CLASS_DEF[@text='FileOne']/OBJBLOCK/
            METHOD_DEF[@text='MyMethod1' or @text='MyMethod2']/IDENT"/&gt;
&lt;/module&gt;
          </pre>
        </div>
        <p>Code example:</p>
        <div class="wrapper">
          <pre>
public class FileOne {
  public void MyMethod1() {} // OK
  public void MyMethod2() {} // OK
  public void MyMethod3() {} // violation, name 'MyMethod3' must
                             // match pattern '^[a-z](_?[a-zA-Z0-9]+)*$'
}
          </pre>
        </div>
        <p>
          Suppress checks for variable testVariable inside
          testMethod method inside TestClass class:
        </p>
        <div class="wrapper">
          <pre>
&lt;module name="SuppressionXpathSingleFilter"&gt;
  &lt;property name="checks" value="LocalFinalVariableName"/&gt;
  &lt;property name="query" value="/CLASS_DEF[@text='TestClass']/OBJBLOCK
        /METHOD_DEF[@text='testMethod']/SLIST
        /VARIABLE_DEF[@text='testVariable1']/IDENT"/&gt;
&lt;/module&gt;
          </pre>
        </div>
        <p>Code Example:</p>
        <div class="wrapper">
          <pre>
public class TestClass {
  public void testMethod() {
    final int testVariable1 = 10; // OK
    final int testVariable2 = 10; // violation of the LocalFinalVariableName check,
                                  // name 'testVariable2' must match pattern '^[A-Z][A-Z0-9]*$'
  }
}
          </pre>
        </div>
        <p>
          In the following sample, violations for LeftCurly check
          will be suppressed for classes with name Main or for methods
          with name calculate.
        </p>
        <div class="wrapper">
          <pre>
&lt;module name="SuppressionXpathSingleFilter"&gt;
  &lt;property name="checks" value="LeftCurly"/&gt;
  &lt;property name="query" value="/CLASS_DEF[@text='TestClass']/OBJBLOCK
        /METHOD_DEF[@text='testMethod1']/SLIST*"/&gt;
&lt;/module&gt;
          </pre>
        </div>
        <p>Code Example:</p>
        <div class="wrapper">
          <pre>
public class TestClass {
  public void testMethod1()
  { // OK
  }

  public void testMethod2()
  { // violation, '{' should be on the previous line
  }
}
          </pre>
        </div>
        <p>
          The following example demonstrates how to suppress
          RequireThis violations for variable age inside changeAge method.
        </p>
        <div class="wrapper">
          <pre>
&lt;module name="SuppressionXpathSingleFilter"&gt;
  &lt;property name="checks" value="RequireThis"/&gt;
  &lt;property name="query" value="/CLASS_DEF[@text='InputTest']
        //METHOD_DEF[@text='changeAge']//ASSIGN[@text='age']/IDENT"/&gt;
&lt;/module&gt;
          </pre>
        </div>
        <p>Code Example:</p>
        <div class="wrapper">
          <pre>
public class InputTest {
  private int age = 23;

  public void changeAge() {
    age = 24; // violation will be suppressed
  }
}
          </pre>
        </div>
        <p>
          Suppress <code>IllegalThrows</code> violations only for methods with name
          <i>throwsMethod</i> and only for <code>RuntimeException</code> exceptions.
          Double colon is used for axis iterations. In the following example <code>ancestor</code>
          axis is used to iterate all ancestor nodes of the current node with type
          <code>METHOD_DEF</code> and name <i>throwsMethod</i>. Please read more about xpath axes at
          <a href="https://www.w3schools.com/xml/xpath_axes.asp">W3Schools Xpath Axes</a>.
        </p>
        <div class="wrapper">
          <pre>
&lt;module name="SuppressionXpathSingleFilter"&gt;
  &lt;property name="checks" value="IllegalThrows"/&gt;
  &lt;property name="query" value="//LITERAL_THROWS/IDENT[
      ..[@text='RuntimeException'] and ./ancestor::METHOD_DEF[@text='throwsMethod']]"/&gt;
&lt;/module&gt;
          </pre>
        </div>
        <p>Code Example:</p>
        <div class="wrapper">
          <pre>
public class InputTest {
  public void throwsMethod() throws RuntimeException { // violation will be suppressed
  }

  public void sampleMethod() throws RuntimeException { // will throw violation here
  }
}
          </pre>
        </div>
        <p>
          The following sample demonstrates how to suppress all violations for method itself and
          all descendants. <code>descendant-or-self</code> axis iterates through current node and
          all children nodes at any level. Keyword <code>node()</code> selects node elements.
          Please read more about xpath syntax at
          <a href="https://www.w3schools.com/xml/xpath_syntax.asp">W3Schools Xpath Syntax</a>.
        </p>
        <div class="wrapper">
          <pre>
&lt;module name="SuppressionXpathSingleFilter"&gt;
  &lt;property name="checks" value=".*"/&gt;
  &lt;property name="query" value="//METHOD_DEF[@text='TestMethod1']
        /descendant-or-self::node()"/&gt;
&lt;/module&gt;
          </pre>
        </div>
        <p>Code Example:</p>
        <div class="wrapper">
          <pre>
public class TestClass {
  public void TestMethod1() { // OK
    final int num = 10; // OK
  }

  public void TestMethod2() { // violation of the MethodName check,
                              // name 'TestMethod2' must match pattern '^[a-z](_?[a-zA-Z0-9]+)*$'
    final int num = 10; // violation of the LocalFinalVariableName check,
                        // name 'num' must match pattern '^[A-Z][A-Z0-9]*$'
  }
}
          </pre>
        </div>
        <p>
          The following example is an example of what checks would be suppressed
          while building Spring projects with checkstyle plugin.
          Please find more information at:
          <a href="https://github.com/spring-io/spring-javaformat">spring-javaformat</a>
        </p>
        <div class="wrapper">
          <pre>
&lt;module name="SuppressionXpathSingleFilter"&gt;
  &lt;property name="files" value="[\\/]src[\\/]test[\\/]java[\\/]"/&gt;
  &lt;property name="checks" value="Javadoc*"/&gt;
&lt;/module&gt;
&lt;module name="SuppressionXpathSingleFilter"&gt;
  &lt;property name="files" value=".*Tests\.java"&gt;
  &lt;property name="checks" value="Javadoc*"&gt;
&lt;/module&gt;
&lt;module name="SuppressionXpathSingleFilter"&gt;
  &lt;property name="files" value="generated-sources"&gt;
  &lt;property name="checks" value="[a-zA-Z0-9]*"&gt;
&lt;/module&gt;
          </pre>
        </div>
      </subsection>
      <subsection name="Example of Usage" id="SuppressionXpathSingleFilter_Example_of_Usage">
        <ul>
          <li>
            <a href="https://github.com/search?q=path%3Aconfig+filename%3Acheckstyle_checks.xml+repo%3Acheckstyle%2Fcheckstyle+SuppressionXpathSingleFilter">
            Checkstyle Style</a>
          </li>
        </ul>
      </subsection>
      <subsection name="Package" id="SuppressionXpathSingleFilter_Package">
        <p> com.puppycrawl.tools.checkstyle.filters </p>
      </subsection>
      <subsection name="Parent Module" id="SuppressionXpathSingleFilter_Parent_Module">
        <p> <a href="config.html#TreeWalker">TreeWalker</a> </p>
      </subsection>
    </section>

    <section name="SuppressWarningsFilter">
      <p>Since Checkstyle 5.7</p>
      <subsection name="Description" id="SuppressWarningsFilter_Description">
          <p>
              Filter <code>SuppressWarningsFilter</code> uses annotation
              {@code SuppressWarnings} 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 is case-insensitive
              and should be written with any dotted prefix or "Check" suffix removed.
          </p>
      </subsection>
      <subsection name="Examples" id="SuppressWarningsFilter_Examples">
          <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>
          <p>
            It is possible to specify an ID of checks, so that it can be leveraged by the
            SuppressWarningsFilter to skip validations. The following examples show how to skip
            validations near code that has  <code>@SuppressWarnings("checkstyle:&lt;ID>")</code> or
            just <code>@SuppressWarnings("&lt;ID>")</code> annotation, where ID is the ID of checks
            you want to suppress.
          </p>
          <p>
            Example of Checkstyle check configuration:
          </p>
          <source>
&lt;module name="RegexpSinglelineJava&quot;&gt;
  &lt;property name="id" value="systemout"/&gt;
  &lt;property name="format" value=&quot;^.*System\.(out|err).*$&quot;/&gt;
  &lt;property name="message"
    value="Don't use System.out/err, use SLF4J instead."/&gt;
&lt;/module&gt;
          </source>
          <p>
            To make the annotations available to the filter.
          </p>
          <source>
&lt;module name=&quot;TreeWalker&quot;&gt;
  ...
  &lt;module name=&quot;SuppressWarningsHolder&quot; /&gt;
  ...
&lt;/module&gt;
          </source>
          <p>
            To configure filter to suppress audit events for annotations add:
          </p>
          <source>
&lt;module name=&quot;SuppressWarningsFilter&quot; /&gt;
          </source>
          <source>
@SuppressWarnings("checkstyle:systemout")
public static void foo() {
  System.out.println("Debug info."); // should NOT fail RegexpSinglelineJava
}
          </source>
      </subsection>
      <subsection name="Example of Usage" id="SuppressWarningsFilter_Example_of_Usage">
        <ul>
          <li>
            <a href="https://github.com/search?q=path%3Aconfig+filename%3Acheckstyle_checks.xml+repo%3Acheckstyle%2Fcheckstyle+SuppressWarningsFilter">
            Checkstyle Style</a>
          </li>
        </ul>
      </subsection>
      <subsection name="Package" id="SuppressWarningsFilter_Package">
        <p> com.puppycrawl.tools.checkstyle.filters </p>
      </subsection>

      <subsection name="Parent Module" id="SuppressWarningsFilter_Parent_Module">
        <p> <a href="config.html#Checker">Checker</a> </p>
      </subsection>
    </section>

    <section name="SuppressWithNearbyCommentFilter">
      <p>Since Checkstyle 5.0</p>
      <subsection name="Description" id="SuppressWithNearbyCommentFilter_Description">
            <p>
                Filter <code>SuppressWithNearbyCommentFilter</code> uses
                nearby 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>
                Attention: This filter may only be specified within the TreeWalker module
                (<code>&lt;module name=&quot;TreeWalker&quot;/&gt;</code>) and only
                applies to checks which are also defined within this module.
                To filter non-TreeWalker checks like <code>RegexpSingleline</code>,
                a <a href="config_filters.html#SuppressWithPlainTextCommentFilter">
                SuppressWithPlainTextCommentFilter</a> or similar filter must be used.
            </p>
        </subsection>
        <subsection name="Properties" id="SuppressWithNearbyCommentFilter_Properties">
          <div class="wrapper">
            <table>
                <tr>
                    <th>name</th>
                    <th>description</th>
                    <th>type</th>
                    <th>default value</th>
                    <th>since</th>
                </tr>
                <tr>
                    <td>commentFormat</td>
                    <td>Specify 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>
                    <td>5.0</td>
                </tr>
                <tr>
                    <td>checkFormat</td>
                    <td>Specify check pattern to suppress.</td>
                    <td><a href="property_types.html#regexp">Regular Expression</a></td>
                    <td><code>".*"</code></td>
                    <td>5.0</td>
                </tr>
                <tr>
                    <td>messageFormat</td>
                    <td>Define message pattern to suppress.</td>
                    <td><a href="property_types.html#regexp">Regular Expression</a></td>
                    <td><code>null</code></td>
                    <td>5.0</td>
                </tr>
                <tr>
                    <td>idFormat</td>
                    <td>Specify check ID pattern to suppress.</td>
                    <td><a href="property_types.html#regexp">Regular Expression</a></td>
                    <td><code>null</code></td>
                    <td>8.24</td>
                </tr>
                <tr>
                    <td>influenceFormat</td>
                    <td>Specify 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></td>
                    <td>5.0</td>
                </tr>
                <tr>
                    <td>checkCPP</td>
                    <td>Control whether to check C++ style comments (<code>//</code>).</td>
                    <td><a href="property_types.html#boolean">Boolean</a></td>
                    <td><code>true</code></td>
                    <td>5.0</td>
                </tr>
                <tr>
                    <td>checkC</td>
                    <td>Control whether to check C style comments (<code>/* ... */</code>).</td>
                    <td><a href="property_types.html#boolean">Boolean</a></td>
                    <td><code>true</code></td>
                    <td>5.0</td>
                </tr>
            </table>
          </div>
        </subsection>
        <subsection name="Examples" id="SuppressWithNearbyCommentFilter_Examples">
            <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>
static final int lowerCaseConstant; // CHECKSTYLE IGNORE ConstantNameCheck FOR NEXT 3 LINES
static final int lowerCaseConstant1;
static final int lowerCaseConstant2;
static final int lowerCaseConstant3;
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] A comment here
            </source>
            <p>
              It is possible to specify an ID of checks, so that it can be leveraged by the
              SuppressWithNearbyCommentFilter to skip validations. The following examples
              show how to skip validations near code that has comment like
              <code>// @cs-: &lt;ID/> (reason)</code>, where ID is the ID of checks you want to
              suppress.
            </p>
            <p>
              Examples of Checkstyle checks configuration:
            </p>
            <source>
&lt;module name=&quot;RegexpSinglelineJava&quot;&gt;
  &lt;property name=&quot;id&quot; value=&quot;ignore&quot;/&gt;
  &lt;property name="format" value="^.*@Ignore\s*$"/&gt;
  &lt;property name="message" value="@Ignore should have a reason."/&gt;
&lt;/module&gt;

&lt;module name=&quot;RegexpSinglelineJava&quot;&gt;
  &lt;property name=&quot;id&quot; value=&quot;systemout&quot;/&gt;
  &lt;property name="format" value="^.*System\.(out|err).*$"/&gt;
  &lt;property name="message" value="Don't use System.out/err, use SLF4J instead."/&gt;
&lt;/module&gt;
            </source>
            <p>
              Example of SuppressWithNearbyCommentFilter configuration (idFormat which
              is set to '$1' points that ID of the checks is in the first group of
              commentFormat regular expressions):
            </p>
            <source>
&lt;module name=&quot;SuppressWithNearbyCommentFilter&quot;&gt;
  &lt;property name=&quot;commentFormat&quot; value=&quot;@cs-: (\w+) \(.*\)"/&gt;
  &lt;property name=&quot;idFormat&quot; value=&quot;$1&quot;/&gt;
  &lt;property name=&quot;influenceFormat&quot; value=&quot;0&quot;/&gt;
&lt;/module&gt;
            </source>
            <source>
@Ignore // @cs-: ignore (test has not been implemented yet)
@Test
public void testMethod() { }

public static void foo() {
  System.out.println("Debug info."); // @cs-: systemout (should not fail RegexpSinglelineJava)
}
            </source>
            <p>
              Example of how to configure the check to suppress more than one checks.
              The influence format format is specified in the second regexp group.
            </p>
            <source>
&lt;module name="SuppressWithNearbyCommentFilter&quot;&gt;
  &lt;property name="commentFormat" value="@cs-\: ([\w\|]+) influence (\d+)"/&gt;
  &lt;property name="checkFormat" value="$1"/&gt;
  &lt;property name="influenceFormat" value="$2"/&gt;
&lt;/module&gt;
            </source>
            <source>
// @cs-: ClassDataAbstractionCoupling influence 2
// @cs-: MagicNumber influence 4
@Service // no violations from ClassDataAbstractionCoupling here
@Transactional
public class UserService {
  private int value = 10022; // no violations from MagicNumber here
}
            </source>
        </subsection>
        <subsection name="Example of Usage" id="SuppressWithNearbyCommentFilter_Example_of_Usage">
        <ul>
          <li>
            <a href="https://github.com/search?q=path%3Aconfig+filename%3Acheckstyle_checks.xml+repo%3Acheckstyle%2Fcheckstyle+SuppressWithNearbyCommentFilter">
            Checkstyle Style</a>
          </li>
        </ul>
        </subsection>
        <subsection name="Package" id="SuppressWithNearbyCommentFilter_Package">
            <p> com.puppycrawl.tools.checkstyle.filters </p>
        </subsection>

        <subsection name="Parent Module" id="SuppressWithNearbyCommentFilter_Parent_Module">
          <p> <a href="config.html#TreeWalker">TreeWalker</a> </p>
        </subsection>
      </section>

    <section name="SuppressWithPlainTextCommentFilter">
          <p>Since Checkstyle 8.6</p>
          <subsection name="Description" id="SuppressWithPlainTextCommentFilter_Description">
              <p>
                  Filter <code>SuppressWithPlainTextCommentFilter</code> uses plain text to suppress
                  audit events. The filter can be used only to suppress audit events received from
                  the checks which implement FileSetCheck interface. In other words, the checks
                  which have Checker as a parent module. The filter knows nothing about AST,
                  it treats only plain text comments and extracts the information required
                  for suppression from the plain text comments. Currently the filter supports
                  only single line comments.
              </p>
              <p>
                  Please, be aware of the fact that, it is not recommended to use the filter
                  for Java code anymore, however you still are able to use it to suppress audit
                  events received from the checks which implement FileSetCheck interface.
              </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>
                  Note that the suppression comment should be put before the violation.
                  You can use more than one suppression comment each on separate line.
              </p>
          </subsection>
          <subsection name="Properties" id="SuppressWithPlainTextCommentFilter_Properties">
            <div class="wrapper">
              <table>
                  <tr>
                      <th>name</th>
                      <th>description</th>
                      <th>type</th>
                      <th>default value</th>
                      <th>since</th>
                  </tr>
                  <tr>
                      <td>offCommentFormat</td>
                      <td>Specify 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>
                      <td>8.6</td>
                  </tr>
                  <tr>
                      <td>onCommentFormat</td>
                      <td>Specify 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>
                      <td>8.6</td>
                  </tr>
                  <tr>
                      <td>checkFormat</td>
                      <td>Specify check pattern to suppress.</td>
                      <td><a href="property_types.html#regexp">Regular Expression</a></td>
                      <td><code>".*"</code></td>
                      <td>8.6</td>
                  </tr>
                  <tr>
                      <td>messageFormat</td>
                      <td>Specify message pattern to suppress.</td>
                      <td><a href="property_types.html#regexp">Regular Expression</a></td>
                      <td><code>null</code></td>
                      <td>8.6</td>
                  </tr>
                  <tr>
                      <td>idFormat</td>
                      <td>Specify check ID pattern to suppress.</td>
                      <td><a href="property_types.html#regexp">Regular Expression</a></td>
                      <td><code>null</code></td>
                      <td>8.24</td>
                  </tr>
              </table>
            </div>
          </subsection>
          <subsection name="Notes" id="SuppressWithPlainTextCommentFilter_Notes">
              <p>
                  Properties <code>offCommentFormat</code> and <code>onCommentFormat</code>
                  must have equal
                  <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/regex/Matcher.html#groupCount()">
                  paren counts</a>.
              </p>
          </subsection>
          <subsection name="Examples" id="SuppressWithPlainTextCommentFilter_Examples">
              <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;SuppressWithPlainTextCommentFilter&quot;/&gt;
  ...
&lt;/module&gt;
              </source>
              <p>
                  To configure a filter to suppress audit events between a comment
                  containing line <code>BEGIN GENERATED CONTENT</code> and a comment
                  containing line <code>END GENERATED CONTENT</code>
                  (Checker is configured to check only properties files):
              </p>
              <source>
&lt;module name=&quot;Checker&quot;&gt;
  &lt;property name=&quot;fileExtensions&quot; value=&quot;properties&quot;/&gt;

  &lt;module name=&quot;SuppressWithPlainTextCommentFilter&quot;&gt;
    &lt;property name=&quot;offCommentFormat&quot; value=&quot;BEGIN GENERATED CONTENT&quot;/&gt;
    &lt;property name=&quot;onCommentFormat&quot; value=&quot;END GENERATED CONTENT&quot;/&gt;
  &lt;/module>

&lt;/module&gt;
              </source>
              <source>
//BEGIN GENERATED CONTENT
my.property=value1 // No violation events will be reported
my.property=value2 // No violation events will be reported
//END GENERATED CONTENT
. . .
              </source>
              <p>
                  To configure a filter so that <code>-- stop tab
                  check</code> and <code>-- resume tab check</code> marks allowed tab positions
                  (Checker is configured to check only sql files):
              </p>
              <source>
&lt;module name=&quot;Checker&quot;&gt;
  &lt;property name=&quot;fileExtensions&quot; value=&quot;sql&quot;/&gt;

  &lt;module name=&quot;SuppressWithPlainTextCommentFilter&quot;&gt;
    &lt;property name=&quot;offCommentFormat&quot; value=&quot;stop tab check&quot;/&gt;
    &lt;property name=&quot;onCommentFormat&quot; value=&quot;resume tab check&quot;/&gt;
    &lt;property name=&quot;checkFormat&quot; value=&quot;FileTabCharacterCheck&quot;/&gt;
  &lt;/module>

&lt;/module>
              </source>
              <source>
-- stop tab check
  SELECT * FROM users // won't warn here if there is a tab character on line
-- resume tab check
  SELECT 1 // will warn here if there is a tab character on line
              </source>
              <p>
                  To configure a filter so that name of suppressed check mentioned
                  in comment <code>CSOFF: <i>regexp</i></code>
                  and <code>CSON: <i>regexp</i></code> mark a matching check
                  (Checker is configured to check only xml files):
              </p>
              <source>
&lt;module name=&quot;Checker&quot;&gt;
  &lt;property name=&quot;fileExtensions&quot; value=&quot;xml&quot;/&gt;

  &lt;module name=&quot;SuppressWithPlainTextCommentFilter&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;

&lt;/module>
              </source>
              <source>
// CSOFF: RegexpSinglelineCheck
 // RegexpSingleline check won't warn any lines below here if the line matches regexp
&lt;condition property=&quot;checkstyle.ant.skip&quot;&gt;
  &lt;isset property=&quot;checkstyle.ant.skip&quot;/&gt;
&lt;/condition&gt;
// CSON: RegexpSinglelineCheck
// RegexpSingleline check will warn below here if the line matches regexp
&lt;property name=&quot;checkstyle.pattern.todo&quot; value=&quot;NOTHingWillMatCH_-&quot;/&gt;
              </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 (Checker is configured to check only java files):
              </p>
              <source>
&lt;module name=&quot;Checker&quot;&gt;
  &lt;property name=&quot;fileExtensions&quot; value=&quot;java&quot;/&gt;

  &lt;module name=&quot;SuppressWithPlainTextCommentFilter&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;^((?!(FileTabCharacterCheck)).)*$&quot;/&gt;
  &lt;/module&gt;

&lt;/module>
              </source>
              <source>
// CHECKSTYLE_OFF: ALMOST_ALL
public static final int array [];
private String [] strArray;
// CHECKSTYLE_ON: ALMOST_ALL
private int array1 [];
              </source>
              <p>
                  To configure a filter to suppress Check's violation message <b>which matches
                  specified message in messageFormat</b> (so suppression will not be only by
                  Check's name, but also by message text, as the same Check can report
                  violations with different message format) between a comment
                  containing <code>stop</code> and comment containing <code>resume</code>:
              </p>
              <source>
&lt;module name=&quot;Checker&quot;&gt;
  &lt;module name=&quot;SuppressWithPlainTextCommentFilter&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;FileTabCharacterCheck&quot;/&gt;
    &lt;property name=&quot;messageFormat&quot;
        value=&quot;^File contains tab characters (this is the first instance)\.$&quot;/&gt;
  &lt;/module&gt;
&lt;/module>
              </source>
              <p>
                  It is possible to specify an ID of checks, so that it can be leveraged by the
                  SuppressWithPlainTextCommentFilter to skip validations.
                  The following examples show how to skip validations near code that is surrounded
                  with <code>-- CSOFF &lt;ID> (reason)</code> and <code>-- CSON &lt;ID></code>,
                  where ID is the ID of checks you want to suppress.
              </p>
              <p>
                  Examples of Checkstyle checks configuration:
              </p>
              <source>
&lt;module name=&quot;RegexpSinglelineJava&quot;&gt;
  &lt;property name=&quot;id&quot; value=&quot;count&quot;/&gt;
  &lt;property name="format" value="^.*COUNT(*).*$"/&gt;
  &lt;property name="message"
    value="Don't use COUNT(*), use COUNT(1) instead."/&gt;
&lt;/module&gt;

&lt;module name=&quot;RegexpSinglelineJava&quot;&gt;
  &lt;property name=&quot;id&quot; value=&quot;join&quot;/&gt;
  &lt;property name="format" value="^.*JOIN\s.+\s(ON|USING)$"/&gt;
  &lt;property name="message"
    value="Don't use JOIN, use sub-select instead."/&gt;
&lt;/module&gt;
              </source>
              <p>
                  Example of SuppressWithPlainTextCommentFilter configuration
                  (checkFormat which is set to '$1' points that ID of the checks
                  is in the first group of offCommentFormat and onCommentFormat
                  regular expressions):
              </p>
              <source>
&lt;module name=&quot;Checker&quot;&gt;
  &lt;property name=&quot;fileExtensions&quot; value=&quot;sql&quot;/&gt;

  &lt;module name="SuppressWithPlainTextCommentFilter&quot;&gt;
    &lt;property name="offCommentFormat" value="CSOFF (\w+) \(\w+\)"/&gt;
    &lt;property name="onCommentFormat" value="CSON (\w+)"/&gt;
    &lt;property name="idFormat" value="$1"/&gt;
  &lt;/module&gt;

&lt;/module&gt;
              </source>
              <source>
-- CSOFF join (it is ok to use join here for performance reasons)
SELECT name, job_name
FROM users AS u
JOIN jobs AS j ON u.job_id = j.id
-- CSON join

-- CSOFF count (test query execution plan)
EXPLAIN SELECT COUNT(*) FROM restaurants
-- CSON count
              </source>
              <p>
                  Example of how to configure the check to suppress more than one check
                  (Checker is configured to check only sql files).
              </p>
              <source>
&lt;module name=&quot;Checker&quot;&gt;
  &lt;property name=&quot;fileExtensions&quot; value=&quot;sql&quot;/&gt;

  &lt;module name="SuppressWithPlainTextCommentFilter&quot;&gt;
    &lt;property name="offCommentFormat" value="@cs-\: ([\w\|]+)"/&gt;
    &lt;property name="checkFormat" value="$1"/&gt;
  &lt;/module&gt;

&lt;/module&gt;
              </source>
              <source>
-- @cs-: RegexpSinglelineCheck
-- @cs-: FileTabCharacterCheck
CREATE TABLE STATION (
  ID INTEGER PRIMARY KEY,
  CITY CHAR(20),
  STATE CHAR(2),
  LAT_N REAL,
  LONG_W REAL);
              </source>
          </subsection>
          <subsection name="Example of Usage"
            id="SuppressWithPlainTextCommentFilter_Example_of_Usage">
              <ul>
                  <li>
                      <a href="https://github.com/search?q=path%3Aconfig+filename%3Acheckstyle_checks.xml+repo%3Acheckstyle%2Fcheckstyle+SuppressWithPlainTextCommentFilter">
                          Checkstyle Style</a>
                  </li>
              </ul>
          </subsection>
          <subsection name="Package" id="SuppressWithPlainTextCommentFilter_Package">
              <p> com.puppycrawl.tools.checkstyle.filters </p>
          </subsection>

          <subsection name="Parent Module" id="SuppressWithPlainTextCommentFilter_Parent_Module">
              <p> <a href="config.html#Checker">Checker</a> </p>
          </subsection>
      </section>
  </body>
</document>
