<?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>Annotations</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="AnnotationLocation">
      <subsection name="Description">
        <p>Since Checkstyle 6.0</p>
        <p>
          Check location of annotation on language elements.
          By default, Check enforce to locate annotations immediately
          after documentation block and before target element, annotation should be located on separate line from target element.
        </p>
        <p>
          Attention: Annotations among modifiers are ignored (looks like false-negative)
          as there might be a problem with annotations for return types <source>public @Nullable Long getStartTimeOrNull() { ... }</source>
          Such annotations are better to keep close to type.
          Due to limitations Checkstyle can not examine target of annotation.
        </p>
        <p>
          Example:
        </p>
        <source>
@Override
@Nullable
public String getNameIfPresent() { ... }
        </source>
      </subsection>

      <subsection name="Properties">
        <table>
          <tr>
            <th>name</th>
            <th>description</th>
            <th>type</th>
            <th>default value</th>
            <th>since</th>
          </tr>
          <tr>
            <td>allowSamelineMultipleAnnotations</td>
            <td>To allow annotation(s) to be located on the same line as target element.</td>
            <td><a href="property_types.html#boolean">Boolean</a></td>
           <td><code>false</code></td>
            <td>6.0</td>
          </tr>
          <tr>
            <td>allowSamelineSingleParameterlessAnnotation</td>
            <td>To allow single parameterless annotation to be located on the same line as target element.</td>
            <td><a href="property_types.html#boolean">Boolean</a></td>
            <td><code>true</code></td>
            <td>6.1</td>
          </tr>
          <tr>
            <td>allowSamelineParameterizedAnnotation</td>
            <td>To allow one and only parameterized annotation to be located on the same line as target element.</td>
            <td><a href="property_types.html#boolean">Boolean</a></td>
            <td><code>false</code></td>
            <td>6.4</td>
          </tr>
          <tr>
            <td>tokens</td>
            <td>tokens to check</td>
            <td>subset of tokens
              <a href="apidocs/com/puppycrawl/tools/checkstyle/api/TokenTypes.html#CLASS_DEF">CLASS_DEF</a>,
              <a href="apidocs/com/puppycrawl/tools/checkstyle/api/TokenTypes.html#INTERFACE_DEF">INTERFACE_DEF</a>,
              <a href="apidocs/com/puppycrawl/tools/checkstyle/api/TokenTypes.html#ENUM_DEF">ENUM_DEF</a>,
              <a href="apidocs/com/puppycrawl/tools/checkstyle/api/TokenTypes.html#METHOD_DEF">METHOD_DEF</a>,
              <a href="apidocs/com/puppycrawl/tools/checkstyle/api/TokenTypes.html#CTOR_DEF">CTOR_DEF</a>,
              <a href="apidocs/com/puppycrawl/tools/checkstyle/api/TokenTypes.html#VARIABLE_DEF">VARIABLE_DEF</a>,
              <a href="apidocs/com/puppycrawl/tools/checkstyle/api/TokenTypes.html#PARAMETER_DEF">PARAMETER_DEF</a>,
              <a href="apidocs/com/puppycrawl/tools/checkstyle/api/TokenTypes.html#ANNOTATION_DEF">ANNOTATION_DEF</a>,
              <a href="apidocs/com/puppycrawl/tools/checkstyle/api/TokenTypes.html#TYPECAST">TYPECAST</a>,
              <a href="apidocs/com/puppycrawl/tools/checkstyle/api/TokenTypes.html#LITERAL_THROWS">LITERAL_THROWS</a>,
              <a href="apidocs/com/puppycrawl/tools/checkstyle/api/TokenTypes.html#IMPLEMENTS_CLAUSE">IMPLEMENTS_CLAUSE</a>,
              <a href="apidocs/com/puppycrawl/tools/checkstyle/api/TokenTypes.html#TYPE_ARGUMENT">TYPE_ARGUMENT</a>,
              <a href="apidocs/com/puppycrawl/tools/checkstyle/api/TokenTypes.html#LITERAL_NEW">LITERAL_NEW</a>,
              <a href="apidocs/com/puppycrawl/tools/checkstyle/api/TokenTypes.html#DOT">DOT</a>,
              <a href="apidocs/com/puppycrawl/tools/checkstyle/api/TokenTypes.html#ANNOTATION_FIELD_DEF">ANNOTATION_FIELD_DEF</a>.
            </td>
            <td>
              <a href="apidocs/com/puppycrawl/tools/checkstyle/api/TokenTypes.html#CLASS_DEF">CLASS_DEF</a>,
              <a href="apidocs/com/puppycrawl/tools/checkstyle/api/TokenTypes.html#INTERFACE_DEF">INTERFACE_DEF</a>,
              <a href="apidocs/com/puppycrawl/tools/checkstyle/api/TokenTypes.html#ENUM_DEF">ENUM_DEF</a>,
              <a href="apidocs/com/puppycrawl/tools/checkstyle/api/TokenTypes.html#METHOD_DEF">METHOD_DEF</a>,
              <a href="apidocs/com/puppycrawl/tools/checkstyle/api/TokenTypes.html#CTOR_DEF">CTOR_DEF</a>,
              <a href="apidocs/com/puppycrawl/tools/checkstyle/api/TokenTypes.html#VARIABLE_DEF">VARIABLE_DEF</a>.
            </td>
            <td>6.0</td>
          </tr>
        </table>
      </subsection>

      <subsection name="Examples">
        <p>
          Example to allow multiple annotations on the same line
        </p>
        <source>
@SuppressWarnings("deprecation") @Mock DataLoader loader; // no violations
        </source>
        <p>
          Use following configuration:
        </p>
        <source>
&lt;module name=&quot;AnnotationLocation&quot;&gt;
    &lt;property name=&quot;allowSamelineMultipleAnnotations&quot; value=&quot;true&quot;/&gt;
    &lt;property name=&quot;allowSamelineSingleParameterlessAnnotation&quot; value=&quot;false&quot;/&gt;
    &lt;property name=&quot;allowSamelineParameterizedAnnotation&quot; value=&quot;false&quot;/&gt;
&lt;/module&gt;
        </source>
        <p>
          Example to allow one single parameterless annotation on the same line
        </p>
        <source>
@Override public int hashCode() { ... } // no violations
@SuppressWarnings("deprecation") public int foo() { ... } // violation
        </source>
        <p>
          Use following configuration:
        </p>
        <source>
&lt;module name=&quot;AnnotationLocation&quot;&gt;
    &lt;property name=&quot;allowSamelineMultipleAnnotations&quot; value=&quot;false&quot;/&gt;
    &lt;property name=&quot;allowSamelineSingleParameterlessAnnotation&quot; value=&quot;true&quot;/&gt;
    &lt;property name=&quot;allowSamelineParameterizedAnnotation&quot; value=&quot;false&quot;/&gt;
&lt;/module&gt;
        </source>
        <p>
          Example to allow only one and only pametrized annotation on the same line
        </p>
        <source>
@SuppressWarnings("deprecation") DataLoader loader; // no violations
@Mock DataLoader loader; // violation
        </source>
        <p>
          Use following configuration:
        </p>
        <source>
&lt;module name=&quot;AnnotationLocation&quot;&gt;
    &lt;property name=&quot;allowSamelineMultipleAnnotations&quot; value=&quot;false&quot;/&gt;
    &lt;property name=&quot;allowSamelineSingleParameterlessAnnotation&quot; value=&quot;false&quot;/&gt;
    &lt;property name=&quot;allowSamelineParameterizedAnnotation&quot; value=&quot;true&quot;/&gt;
&lt;/module&gt;
        </source>
       <p>
         The following example demonstrates how the check validates annotations of method parameters,
         catch parameters, foreach, for-loop variable definitions.
       </p>
       <p>Configuration:</p>
       <source>
&lt;module name=&quot;AnnotationLocation&quot;&gt;
    &lt;property name=&quot;allowSamelineMultipleAnnotations&quot; value=&quot;false&quot;/&gt;
    &lt;property name=&quot;allowSamelineSingleParameterlessAnnotation&quot; value=&quot;false&quot;/&gt;
    &lt;property name=&quot;allowSamelineParameterizedAnnotation&quot; value=&quot;false&quot;/&gt;
    &lt;property name=&quot;tokens&quot; value=&quot;VARIABLE_DEF, PARAMETER_DEF&quot;/&gt;
 &lt;/module&gt;
       </source>
       <p>Code example:</p>
       <source>
public void test(&#64;MyAnnotation String s) { // OK
  ...
  for (&#64;MyAnnotation char c : s.toCharArray()) { ... }  // OK
  ...
  try { ... }
  catch (&#64;MyAnnotation Exception ex) { ... } // OK
  ...
  for (&#64;MyAnnotation int i = 0; i &lt; 10; i++) { ... } // OK
  ...
  MathOperation c = (&#64;MyAnnotation int a, &#64;MyAnnotation int b) -&gt; a + b; // OK
  ...
}
       </source>
      </subsection>

      <subsection name="Example of Usage">
        <ul>
          <li>
            <a href="https://github.com/search?q=path%3Asrc%2Fmain%2Fresources+filename%3Agoogle_checks.xml+repo%3Acheckstyle%2Fcheckstyle+AnnotationLocation">
            Google Style</a>
          </li>
          <li>
            <a href="https://github.com/search?q=path%3Aconfig+filename%3Acheckstyle_checks.xml+repo%3Acheckstyle%2Fcheckstyle+AnnotationLocation">
            Checkstyle Style</a>
          </li>
        </ul>
      </subsection>

      <subsection name="Error Messages">
        <ul>
          <li>
            <a href="https://github.com/search?q=path%3Asrc%2Fmain%2Fresources%2Fcom%2Fpuppycrawl%2Ftools%2Fcheckstyle%2Fchecks%2Fannotation+filename%3Amessages*.properties+repo%3Acheckstyle%2Fcheckstyle+%22annotation.location%22">
            annotation.location</a>
          </li>
          <li>
            <a href="https://github.com/search?q=path%3Asrc%2Fmain%2Fresources%2Fcom%2Fpuppycrawl%2Ftools%2Fcheckstyle%2Fchecks%2Fannotation+filename%3Amessages*.properties+repo%3Acheckstyle%2Fcheckstyle+%22annotation.location.alone%22">
            annotation.location.alone</a>
          </li>
        </ul>
        <p>
          All messages can be customized if the default message doesn't suit you.
          Please <a href="config.html#Custom_messages">see the documentation</a> to learn how to.
        </p>
      </subsection>

      <subsection name="Package">
        <p> com.puppycrawl.tools.checkstyle.checks.annotation </p>
      </subsection>

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

    <section name="AnnotationOnSameLine">
      <subsection name="Description">
        <p>Since Checkstyle 8.2</p>
        <p>
          The check does verifying that annotations are located on the same line with their targets.
          Verifying with this check is not good practice, but it is using by some style guides.
        </p>
      </subsection>

      <subsection name="Properties">
        <table>
          <tr>
            <th>name</th>
            <th>description</th>
            <th>type</th>
            <th>default value</th>
            <th>since</th>
          </tr>
          <tr>
            <td>tokens</td>
            <td>tokens to check</td>
            <td>subset of tokens
              <a href="apidocs/com/puppycrawl/tools/checkstyle/api/TokenTypes.html#CLASS_DEF">CLASS_DEF</a>,
              <a href="apidocs/com/puppycrawl/tools/checkstyle/api/TokenTypes.html#INTERFACE_DEF">INTERFACE_DEF</a>,
              <a href="apidocs/com/puppycrawl/tools/checkstyle/api/TokenTypes.html#ENUM_DEF">ENUM_DEF</a>,
              <a href="apidocs/com/puppycrawl/tools/checkstyle/api/TokenTypes.html#METHOD_DEF">METHOD_DEF</a>,
              <a href="apidocs/com/puppycrawl/tools/checkstyle/api/TokenTypes.html#CTOR_DEF">CTOR_DEF</a>,
              <a href="apidocs/com/puppycrawl/tools/checkstyle/api/TokenTypes.html#VARIABLE_DEF">VARIABLE_DEF</a>,
              <a href="apidocs/com/puppycrawl/tools/checkstyle/api/TokenTypes.html#PARAMETER_DEF">PARAMETER_DEF</a>,
              <a href="apidocs/com/puppycrawl/tools/checkstyle/api/TokenTypes.html#ANNOTATION_DEF">ANNOTATION_DEF</a>,
              <a href="apidocs/com/puppycrawl/tools/checkstyle/api/TokenTypes.html#TYPECAST">TYPECAST</a>,
              <a href="apidocs/com/puppycrawl/tools/checkstyle/api/TokenTypes.html#LITERAL_THROWS">LITERAL_THROWS</a>,
              <a href="apidocs/com/puppycrawl/tools/checkstyle/api/TokenTypes.html#IMPLEMENTS_CLAUSE">IMPLEMENTS_CLAUSE</a>,
              <a href="apidocs/com/puppycrawl/tools/checkstyle/api/TokenTypes.html#TYPE_ARGUMENT">TYPE_ARGUMENT</a>,
              <a href="apidocs/com/puppycrawl/tools/checkstyle/api/TokenTypes.html#LITERAL_NEW">LITERAL_NEW</a>,
              <a href="apidocs/com/puppycrawl/tools/checkstyle/api/TokenTypes.html#DOT">DOT</a>,
              <a href="apidocs/com/puppycrawl/tools/checkstyle/api/TokenTypes.html#ANNOTATION_FIELD_DEF">ANNOTATION_FIELD_DEF</a>.
            </td>
            <td>
              <a href="apidocs/com/puppycrawl/tools/checkstyle/api/TokenTypes.html#CLASS_DEF">CLASS_DEF</a>,
              <a href="apidocs/com/puppycrawl/tools/checkstyle/api/TokenTypes.html#INTERFACE_DEF">INTERFACE_DEF</a>,
              <a href="apidocs/com/puppycrawl/tools/checkstyle/api/TokenTypes.html#ENUM_DEF">ENUM_DEF</a>,
              <a href="apidocs/com/puppycrawl/tools/checkstyle/api/TokenTypes.html#METHOD_DEF">METHOD_DEF</a>,
              <a href="apidocs/com/puppycrawl/tools/checkstyle/api/TokenTypes.html#CTOR_DEF">CTOR_DEF</a>,
              <a href="apidocs/com/puppycrawl/tools/checkstyle/api/TokenTypes.html#VARIABLE_DEF">VARIABLE_DEF</a>.
            </td>
            <td>8.2</td>
          </tr>
        </table>
      </subsection>

      <subsection name="Examples">
        <p>
          To configure the check:
        </p>
        <source>
&lt;module name=&quot;AnnotationOnSameLine&quot;/&gt;
        </source>
        <p>
          Example to allow annotations on the same line
        </p>
        <source>
@Override public int toString() { ... } // no violations
@Before @Override public void set() { ... } // no violation
        </source>
        <p>
          Example to disallow annotations on previous line
        </p>
        <source>
@SuppressWarnings("deprecation") // violation
@Override // violation
public int foo() { ... }
        </source>
      </subsection>

      <subsection name="Example of Usage">
        <ul>
          <li>
            <a href="https://github.com/search?q=path%3Aconfig+filename%3Acheckstyle_checks.xml+repo%3Acheckstyle%2Fcheckstyle+AnnotationOnSameLine">
            Checkstyle Style</a>
          </li>
        </ul>
      </subsection>

      <subsection name="Error Messages">
        <ul>
          <li>
            <a href="https://github.com/search?q=path%3Asrc%2Fmain%2Fresources%2Fcom%2Fpuppycrawl%2Ftools%2Fcheckstyle%2Fchecks%2Fannotation+filename%3Amessages*.properties+repo%3Acheckstyle%2Fcheckstyle+%22annotation.same.line%22">
            annotation.same.line</a>
          </li>
        </ul>
        <p>
          All messages can be customized if the default message doesn't suit you.
          Please <a href="config.html#Custom_messages">see the documentation</a> to learn how to.
        </p>
      </subsection>

      <subsection name="Package">
        <p> com.puppycrawl.tools.checkstyle.checks.annotation </p>
      </subsection>

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

    <section name="AnnotationUseStyle">
      <subsection name="Description">
        <p>Since Checkstyle 5.0</p>
        <p> This check controls the style with the usage of annotations.
        </p>
      </subsection>
      <subsection name="Properties">
        <table>
          <tr>
            <th>name</th>
            <th>description</th>
            <th>type</th>
            <th>default value</th>
            <th>since</th>
          </tr>
          <tr>
            <td>elementStyle</td>
            <td>
              <p>
                Defines the annotation element styles.
              </p>
            </td>
            <td>
              <a href="property_types.html#elementStyle">element style</a>
            </td>
            <td>
              <code>compact_no_array</code>
            </td>
            <td>5.0</td>
          </tr>
          <tr>
            <td>closingParens</td>
            <td>
              Defines the policy for ending parenthesis.
            </td>
            <td>
              <a href="property_types.html#closingParens">closing parens</a>
            </td>
            <td>
              <code>never</code>
            </td>
            <td>5.0</td>
          </tr>
          <tr>
            <td>trailingArrayComma</td>
            <td>
              Defines the policy for trailing comma in arrays.
            </td>
            <td>
              <a href="property_types.html#trailingArrayComma">trailing comma</a>
            </td>
            <td>
              <code>never</code>
            </td>
            <td>5.0</td>
          </tr>
        </table>
      </subsection>
      <subsection name="Examples">
        <p> To configure the check:</p>
        <source> &lt;module name=&quot;AnnotationUseStyle&quot;/&gt;
        </source>

        <p>
          To configure the check to enforce an
          <code>expanded</code> style, with a
          trailing array comma set to <code>never</code>
          and always including the closing
          parenthesis.
        </p>
        <source>
&lt;module name=&quot;AnnotationUseStyle&quot;&gt;
    &lt;property name=&quot;elementStyle&quot; value=&quot;expanded&quot;/&gt;
    &lt;property name=&quot;trailingArrayComma&quot; value=&quot;never&quot;/&gt;
    &lt;property name=&quot;closingParens&quot; value=&quot;always&quot;/&gt;
&lt;/module&gt;
        </source>
      </subsection>

      <subsection name="Example of Usage">
        <ul>
          <li>
            <a href="https://github.com/search?q=path%3Aconfig+filename%3Acheckstyle_checks.xml+repo%3Acheckstyle%2Fcheckstyle+AnnotationUseStyle">
            Checkstyle Style</a>
          </li>
        </ul>
      </subsection>

      <subsection name="Error Messages">
        <ul>
          <li>
            <a href="https://github.com/search?q=path%3Asrc%2Fmain%2Fresources%2Fcom%2Fpuppycrawl%2Ftools%2Fcheckstyle%2Fchecks%2Fannotation+filename%3Amessages*.properties+repo%3Acheckstyle%2Fcheckstyle+%22annotation.incorrect.style%22">
            annotation.incorrect.style</a>
          </li>
          <li>
            <a href="https://github.com/search?q=path%3Asrc%2Fmain%2Fresources%2Fcom%2Fpuppycrawl%2Ftools%2Fcheckstyle%2Fchecks%2Fannotation+filename%3Amessages*.properties+repo%3Acheckstyle%2Fcheckstyle+%22annotation.parens.missing%22">
            annotation.parens.missing</a>
          </li>
          <li>
            <a href="https://github.com/search?q=path%3Asrc%2Fmain%2Fresources%2Fcom%2Fpuppycrawl%2Ftools%2Fcheckstyle%2Fchecks%2Fannotation+filename%3Amessages*.properties+repo%3Acheckstyle%2Fcheckstyle+%22annotation.parens.present%22">
            annotation.parens.present</a>
          </li>
          <li>
            <a href="https://github.com/search?q=path%3Asrc%2Fmain%2Fresources%2Fcom%2Fpuppycrawl%2Ftools%2Fcheckstyle%2Fchecks%2Fannotation+filename%3Amessages*.properties+repo%3Acheckstyle%2Fcheckstyle+%22annotation.trailing.comma.missing%22">
            annotation.trailing.comma.missing</a>
          </li>
          <li>
            <a href="https://github.com/search?q=path%3Asrc%2Fmain%2Fresources%2Fcom%2Fpuppycrawl%2Ftools%2Fcheckstyle%2Fchecks%2Fannotation+filename%3Amessages*.properties+repo%3Acheckstyle%2Fcheckstyle+%22annotation.trailing.comma.present%22">
            annotation.trailing.comma.present</a>
          </li>
        </ul>
        <p>
          All messages can be customized if the default message doesn't suit you.
          Please <a href="config.html#Custom_messages">see the documentation</a> to learn how to.
        </p>
      </subsection>

      <subsection name="Package">
        <p> com.puppycrawl.tools.checkstyle.checks.annotation </p>
      </subsection>

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

    <section name="MissingDeprecated">
      <subsection name="Description">
        <p>Since Checkstyle 5.0</p>
        <p> Verifies that both the java.lang.Deprecated annotation is
            present and the @deprecated Javadoc tag is present when
            either is present.</p>
      </subsection>
      <subsection name="Properties">
        <table>
          <tr>
            <th>name</th>
            <th>description</th>
            <th>type</th>
            <th>default value</th>
            <th>since</th>
          </tr>
          <tr>
            <td>skipNoJavadoc</td>
            <td>When this property is set to true check ignore cases
            when JavaDoc is missing, but still warns when JavaDoc is
            present but either @deprecated is missing from JavaDoc or
            @deprecated is missing from the element.
            </td>
            <td><a href="property_types.html#boolean">Boolean</a></td>
            <td>false</td>
            <td>6.16</td>
          </tr>
        </table>
      </subsection>
      <subsection name="Examples">
        <p> To configure the check:</p>
        <source>
&lt;module name=&quot;MissingDeprecated&quot;/&gt;
        </source>
        <p> In addition you can configure this check with skipNoJavadoc option: </p>
        <source>
&lt;module name=&quot;MissingDeprecated&quot;&gt;
    &lt;property name="skipNoJavadoc" value="true" /&gt;
&lt;/module&gt;
        </source>
        <p>Examples of validating source code with skipNoJavadoc:</p>
        <source>
@deprecated
public static final int MY_CONST = 123456; // no violation

/** This javadoc is missing deprecated tag. */
@deprecated
public static final int COUNTER = 10; // violation as javadoc exists
        </source>
      </subsection>

      <subsection name="Example of Usage">
        <ul>
          <li>
            <a href="https://github.com/search?q=path%3Aconfig+filename%3Acheckstyle_checks.xml+repo%3Acheckstyle%2Fcheckstyle+MissingDeprecated">
            Checkstyle Style</a>
          </li>
        </ul>
      </subsection>

      <subsection name="Error Messages">
        <ul>
          <li>
            <a href="https://github.com/search?q=path%3Asrc%2Fmain%2Fresources%2Fcom%2Fpuppycrawl%2Ftools%2Fcheckstyle%2Fchecks%2Fannotation+filename%3Amessages*.properties+repo%3Acheckstyle%2Fcheckstyle+%22annotation.missing.deprecated%22">
            annotation.missing.deprecated</a>
          </li>
          <li>
            <a href="https://github.com/search?q=path%3Asrc%2Fmain%2Fresources%2Fcom%2Fpuppycrawl%2Ftools%2Fcheckstyle%2Fchecks%2Fannotation+filename%3Amessages*.properties+repo%3Acheckstyle%2Fcheckstyle+%22javadoc.duplicateTag%22">
            javadoc.duplicateTag</a>
          </li>
          <li>
            <a href="https://github.com/search?q=path%3Asrc%2Fmain%2Fresources%2Fcom%2Fpuppycrawl%2Ftools%2Fcheckstyle%2Fchecks%2Fannotation+filename%3Amessages*.properties+repo%3Acheckstyle%2Fcheckstyle+%22javadoc.missing%22">
            javadoc.missing</a>
          </li>
        </ul>
        <p>
          All messages can be customized if the default message doesn't suit you.
          Please <a href="config.html#Custom_messages">see the documentation</a> to learn how to.
        </p>
      </subsection>

      <subsection name="Package">
        <p> com.puppycrawl.tools.checkstyle.checks.annotation </p>
      </subsection>

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

    <section name="MissingOverride">
      <subsection name="Description">
        <p>Since Checkstyle 5.0</p>
        <p> Verifies that the java.lang.Override annotation is present
          when the {@inheritDoc} javadoc tag is present.</p>
      </subsection>
      <subsection name="Properties">
        <table>
          <tr>
            <th>name</th>
            <th>description</th>
            <th>type</th>
            <th>default value</th>
            <th>since</th>
          </tr>
          <tr>
            <td>javaFiveCompatibility</td>
            <td>
              When this property is true this check will only check
              classes, interfaces, etc. that do not contain the extends
              or implements keyword or are not anonymous classes. This
              means it only checks methods overridden from
              <code>java.lang.Object</code>
              <b>Java 5 Compatibility mode severely limits this
                check. It is recommended to only use it on Java 5 source </b>
            </td>
            <td>
              <a href="property_types.html#boolean">Boolean</a>
            </td>
            <td>
              <code>false</code>
            </td>
            <td>5.0</td>
          </tr>
        </table>
      </subsection>
      <subsection name="Examples">
        <p> To configure the check:</p>
        <source> &lt;module name=&quot;MissingOverride&quot;/&gt;
        </source>

        <p>
          To configure the check for the <code>javaFiveCompatibility</code>
          mode:
        </p>
        <source>
   &lt;module name=&quot;MissingOverride&quot;&gt;
      &lt;property name=&quot;javaFiveCompatibility&quot;
          value=&quot;true&quot;/&gt;
   &lt;/module&gt;
        </source>
      </subsection>

      <subsection name="Example of Usage">
        <ul>
          <li>
            <a href="https://github.com/search?q=path%3Aconfig+filename%3Acheckstyle_checks.xml+repo%3Acheckstyle%2Fcheckstyle+MissingOverride">
            Checkstyle Style</a>
          </li>
        </ul>
      </subsection>

      <subsection name="Error Messages">
        <ul>
          <li>
            <a href="https://github.com/search?q=path%3Asrc%2Fmain%2Fresources%2Fcom%2Fpuppycrawl%2Ftools%2Fcheckstyle%2Fchecks%2Fannotation+filename%3Amessages*.properties+repo%3Acheckstyle%2Fcheckstyle+%22annotation.missing.override%22">
            annotation.missing.override</a>
          </li>
          <li>
            <a href="https://github.com/search?q=path%3Asrc%2Fmain%2Fresources%2Fcom%2Fpuppycrawl%2Ftools%2Fcheckstyle%2Fchecks%2Fannotation+filename%3Amessages*.properties+repo%3Acheckstyle%2Fcheckstyle+%22tag.not.valid.on%22">
            tag.not.valid.on</a>
          </li>
        </ul>
        <p>
          All messages can be customized if the default message doesn't suit you.
          Please <a href="config.html#Custom_messages">see the documentation</a> to learn how to.
        </p>
      </subsection>

      <subsection name="Package">
        <p> com.puppycrawl.tools.checkstyle.checks.annotation </p>
      </subsection>

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

    <section name="PackageAnnotation">
      <subsection name="Description">
        <p>Since Checkstyle 5.0</p>
        <p>  This check makes sure that all package annotations are in the
             package-info.java file.
        </p>
        <p>
             According to the Java Language Specification.
        </p>

        <p>
            The JLS does not enforce the placement of package annotations.
            This placement may vary based on implementation. The JLS
            does highly recommend that all package annotations are
            placed in the package-info.java file.

            See <a
            href="https://docs.oracle.com/javase/specs/jls/se8/html/jls-7.html#jls-7.4.1">
            Java Language Specification, section 7.4.1</a>.
        </p>
      </subsection>

      <subsection name="Examples">
        <p> To configure the check:</p>
        <source> &lt;module name=&quot;PackageAnnotation&quot;/&gt;
        </source>
      </subsection>

      <subsection name="Example of Usage">
        <ul>
          <li>
            <a href="https://github.com/search?q=path%3Aconfig+filename%3Acheckstyle_checks.xml+repo%3Acheckstyle%2Fcheckstyle+PackageAnnotation">
            Checkstyle Style</a>
          </li>
        </ul>
      </subsection>

      <subsection name="Error Messages">
        <ul>
          <li>
            <a href="https://github.com/search?q=path%3Asrc%2Fmain%2Fresources%2Fcom%2Fpuppycrawl%2Ftools%2Fcheckstyle%2Fchecks%2Fannotation+filename%3Amessages*.properties+repo%3Acheckstyle%2Fcheckstyle+%22annotation.package.location%22">
            annotation.package.location</a>
          </li>
        </ul>
        <p>
          All messages can be customized if the default message doesn't suit you.
          Please <a href="config.html#Custom_messages">see the documentation</a> to learn how to.
        </p>
      </subsection>

      <subsection name="Package">
        <p> com.puppycrawl.tools.checkstyle.checks.annotation </p>
      </subsection>

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

    <section name="SuppressWarnings">
      <subsection name="Description">
        <p>Since Checkstyle 5.0</p>
        <p> This check allows you to specify what warnings that
        SuppressWarnings is not allowed to suppress.
        You can also specify a list of TokenTypes that
        the configured warning(s) cannot be suppressed on.</p>

        <p>
        Limitations:  This check does not consider conditionals
        inside the SuppressWarnings annotation. <br/>
        For example: @SuppressWarnings((false) ? (true) ? "unchecked" : "foo" : "unused")
        According to the above example, the "unused" warning is being suppressed
        not the "unchecked" or "foo" warnings.  All of these warnings will be
        considered and matched against regardless of what the conditional
        evaluates to.
        <br/>
        The check also does not support code like <code>@SuppressWarnings("un" + "used")</code>,
        <code>@SuppressWarnings((String) "unused")</code> or
        <code>@SuppressWarnings({('u' + (char)'n') + (""+("used" + (String)"")),})</code>.
        </p>
      </subsection>
      <subsection name="Properties">
        <table>
          <tr>
            <th>name</th>
            <th>description</th>
            <th>type</th>
            <th>default value</th>
            <th>since</th>
          </tr>
          <tr>
            <td>format</td>
            <td>
               The warnings property is a regex pattern.  Any warning
               being suppressed matching this pattern will be flagged.
            </td>
            <td>
              <a href="property_types.html#regexp">Regular Expression</a>
            </td>
            <td>
              <code>"^$|^\s+$"</code>
            </td>
            <td>5.0</td>
          </tr>

          <tr>
            <td>tokens</td>
            <td>tokens to check</td>

            <td>
              subset of tokens
              <a href="apidocs/com/puppycrawl/tools/checkstyle/api/TokenTypes.html#CLASS_DEF">CLASS_DEF</a>,
              <a href="apidocs/com/puppycrawl/tools/checkstyle/api/TokenTypes.html#INTERFACE_DEF">INTERFACE_DEF</a>,
              <a href="apidocs/com/puppycrawl/tools/checkstyle/api/TokenTypes.html#ENUM_DEF">ENUM_DEF</a>,
              <a href="apidocs/com/puppycrawl/tools/checkstyle/api/TokenTypes.html#ANNOTATION_DEF">ANNOTATION_DEF</a>,
              <a href="apidocs/com/puppycrawl/tools/checkstyle/api/TokenTypes.html#ANNOTATION_FIELD_DEF">ANNOTATION_FIELD_DEF</a>,
              <a href="apidocs/com/puppycrawl/tools/checkstyle/api/TokenTypes.html#ENUM_CONSTANT_DEF">ENUM_CONSTANT_DEF</a>,
              <a href="apidocs/com/puppycrawl/tools/checkstyle/api/TokenTypes.html#PARAMETER_DEF">PARAMETER_DEF</a>,
              <a href="apidocs/com/puppycrawl/tools/checkstyle/api/TokenTypes.html#VARIABLE_DEF">VARIABLE_DEF</a>,
              <a href="apidocs/com/puppycrawl/tools/checkstyle/api/TokenTypes.html#METHOD_DEF">METHOD_DEF</a>,
              <a href="apidocs/com/puppycrawl/tools/checkstyle/api/TokenTypes.html#CTOR_DEF">CTOR_DEF</a>.
            </td>

            <td>
              <a href="apidocs/com/puppycrawl/tools/checkstyle/api/TokenTypes.html#CLASS_DEF">CLASS_DEF</a>,
              <a href="apidocs/com/puppycrawl/tools/checkstyle/api/TokenTypes.html#INTERFACE_DEF">INTERFACE_DEF</a>,
              <a href="apidocs/com/puppycrawl/tools/checkstyle/api/TokenTypes.html#ENUM_DEF">ENUM_DEF</a>,
              <a href="apidocs/com/puppycrawl/tools/checkstyle/api/TokenTypes.html#ANNOTATION_DEF">ANNOTATION_DEF</a>,
              <a href="apidocs/com/puppycrawl/tools/checkstyle/api/TokenTypes.html#ANNOTATION_FIELD_DEF">ANNOTATION_FIELD_DEF</a>,
              <a href="apidocs/com/puppycrawl/tools/checkstyle/api/TokenTypes.html#ENUM_CONSTANT_DEF">ENUM_CONSTANT_DEF</a>,
              <a href="apidocs/com/puppycrawl/tools/checkstyle/api/TokenTypes.html#PARAMETER_DEF">PARAMETER_DEF</a>,
              <a href="apidocs/com/puppycrawl/tools/checkstyle/api/TokenTypes.html#VARIABLE_DEF">VARIABLE_DEF</a>,
              <a href="apidocs/com/puppycrawl/tools/checkstyle/api/TokenTypes.html#METHOD_DEF">METHOD_DEF</a>,
              <a href="apidocs/com/puppycrawl/tools/checkstyle/api/TokenTypes.html#CTOR_DEF">CTOR_DEF</a>.
            </td>
            <td>5.0</td>
          </tr>

        </table>
      </subsection>
      <subsection name="Examples">
        <p> To configure the check:</p>
        <source> &lt;module name=&quot;SuppressWarnings&quot;/&gt;
        </source>

        <p>
          To configure the check so that the "unchecked" and "unused"
          warnings cannot be suppressed on anything
          but variable and parameter declarations.
        </p>
        <source>
   &lt;module name=&quot;SuppressWarnings&quot;&gt;
      &lt;property name=&quot;format&quot;
          value=&quot;^unchecked$|^unused$&quot;/&gt;
      &lt;property name=&quot;tokens&quot;
          value=&quot;
          CLASS_DEF,INTERFACE_DEF,ENUM_DEF,
          ANNOTATION_DEF,ANNOTATION_FIELD_DEF,
          ENUM_CONSTANT_DEF,METHOD_DEF,CTOR_DEF
          &quot;/&gt;
   &lt;/module&gt;
        </source>
      </subsection>

      <subsection name="Example of Usage">
        <ul>
          <li>
            <a href="https://github.com/search?q=path%3Aconfig+filename%3Acheckstyle_checks.xml+repo%3Acheckstyle%2Fcheckstyle+SuppressWarnings">
            Checkstyle Style</a>
          </li>
        </ul>
      </subsection>

      <subsection name="Error Messages">
        <ul>
          <li>
            <a href="https://github.com/search?q=path%3Asrc%2Fmain%2Fresources%2Fcom%2Fpuppycrawl%2Ftools%2Fcheckstyle%2Fchecks%2Fannotation+filename%3Amessages*.properties+repo%3Acheckstyle%2Fcheckstyle+%22suppressed.warning.not.allowed%22">
            suppressed.warning.not.allowed</a>
          </li>
        </ul>
        <p>
          All messages can be customized if the default message doesn't suit you.
          Please <a href="config.html#Custom_messages">see the documentation</a> to learn how to.
        </p>
      </subsection>

      <subsection name="Package">
        <p> com.puppycrawl.tools.checkstyle.checks.annotation </p>
      </subsection>

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

    <section name="SuppressWarningsHolder">
      <subsection name="Description">
        <p>Since Checkstyle 5.7</p>
        <p>
          Maintains a set of check suppressions from
          <code>@SuppressWarnings</code> annotations. It allows to
          prevent Checkstyle from reporting errors from parts of code
          that were annotated with <code>@SuppressWarnings</code> and
          using name of the check to be excluded. You can also define
          aliases for check names that need to be suppressed.
         </p>
      </subsection>

      <subsection name="Properties">
        <table>
          <tr>
            <th>name</th>
            <th>description</th>
            <th>type</th>
            <th>default value</th>
            <th>since</th>
          </tr>
          <tr>
            <td>aliasList</td>
            <td>Aliases for check names that can be used in code within <code>SuppressWarnings</code></td>
            <td><a href="property_types.html#stringSet">String Set</a> in a format of comma separated attribute=value entries.
            The attribute is the fully qualified name of the Check and value is its alias.</td>
            <td>null</td>
            <td>5.7</td>
          </tr>
        </table>
      </subsection>

      <subsection name="Examples">
        <p>To prevent <code>FooCheck</code> errors from being reported write:</p>
        <source>
        @SuppressWarnings("foo") interface I { }
        @SuppressWarnings("foo") enum E { }
        @SuppressWarnings("foo") InputSuppressWarningsFilter() { }
        </source>
        <br />
        <p>Some real check examples:</p>
        <p>This will prevent from invocation of the MemberNameCheck:
          <source>
         @SuppressWarnings({"membername"})
         private int J;
           </source>
        </p>

        <p>You can also use a <code>checkstyle</code> prefix to prevent compiler from processing this annotations.
        For example this will prevent ConstantNameCheck
          <source>
            @SuppressWarnings("checkstyle:constantname")
            private static final int m = 0;
          </source>
        </p>

        <p>The general rule is that the argument of the <code>@SuppressWarnings</code> will be matched against class name of the checker in lower case
          and without <code>Check</code> suffix if present</p>
          <p>If <code>aliasList</code> property was provided you can use your own names e.g below code will work if there was provided a <code>ParameterNumberCheck=paramnum</code> in the <code>aliasList</code>
          <source>
            @SuppressWarnings("paramnum")
            public void needsLotsOfParameters(@SuppressWarnings("unused") int a,
              int b, int c, int d, int e, int f, int g, int h) {
              ...
            }
          </source>
      </p>

      <p>It is possible to suppress all the checkstyle warnings with the argument <code>"all"</code>:
          <source>
            @SuppressWarnings("all")
            public void someFunctionWithInvalidStyle() {
              //...
            }
          </source>
      </p>

      </subsection>

      <subsection name="Example of Usage">
        <ul>
          <li>
            <a href="https://github.com/search?q=path%3Aconfig+filename%3Acheckstyle_checks.xml+repo%3Acheckstyle%2Fcheckstyle+SuppressWarningsHolder">
            Checkstyle Style</a>
          </li>
        </ul>
      </subsection>

      <subsection name="Error Messages">
        <ul>
          <li>
            <a href="https://github.com/search?q=path%3Asrc%2Fmain%2Fresources%2Fcom%2Fpuppycrawl%2Ftools%2Fcheckstyle%2Fchecks+filename%3Amessages*.properties+repo%3Acheckstyle%2Fcheckstyle+%22suppress.warnings.invalid.target%22">
            suppress.warnings.invalid.target</a>
          </li>
        </ul>
        <p>
          All messages can be customized if the default message doesn't suit you.
          Please <a href="config.html#Custom_messages">see the documentation</a> to learn how to.
        </p>
      </subsection>

      <subsection name="Package">
        <p> com.puppycrawl.tools.checkstyle.checks </p>
      </subsection>

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

    </section>
  </body>
</document>
