<?xml version="1.0" encoding="ISO-8859-1"?>

<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">

  <properties>
    <title>Annotations</title>
    <author>Checkstyle Development Team</author>
  </properties>

  <body>
    <section name="AnnotationUseStyle">
      <subsection name="Description">
        <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>
          </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>
          </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>
          </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>
          </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="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> 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="Examples">
        <p> To configure the check:</p>
        <source> &lt;module name=&quot;MissingDeprecated&quot;/&gt;
        </source>
      </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> 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>
          </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>
          </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="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>  This check makes sure that all package annotations are in the
             package-info.java file.
        </p>
        <p>
             According to the Java JLS 3rd ed.
        </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="http://java.sun.com/docs/books/jls/third_edition/html/j3TOC.html">
            Java Language specification, sections 7.4.1.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="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> 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: @SupressWarnings((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.
        </p>
      </subsection>
      <subsection name="Properties">
        <table>
          <tr>
            <th>name</th>
            <th>description</th>
            <th>type</th>
            <th>default value</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">regexp</a>
            </td>
            <td>
              <code>^$|^\s+$</code>
            </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>
          </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="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>
  </body>
</document>
