<?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>Checks</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="Standard Checks">
    <p>
      The Standard Checkstyle Checks are applicable to general Java coding style
      and require no external libraries. The standard checks are included in
      the base distribution.
    </p>

    <p>
      The site navigation menu lets you browse the individual checks by functionality.
    </p>

    <p>
      Checkstyle provides many checks that you can apply to your
      source code. Below is an alphabetical reference, the site
      navigation menu provides a reference organized by functionality.
    </p>
    <table>
      <tr>
        <td><a href="config_naming.html#AbbreviationAsWordInName">AbbreviationAsWordInName</a></td>
        <td>The Check validate abbreviations(consecutive capital letters)
         length in identifier name, it also allow in enforce camel case naming.</td>
      </tr>
      <tr>
        <td><a href="config_naming.html#AbstractClassName">AbstractClassName</a></td>
        <td>
          Ensures that the names of abstract classes conforming to some
          regular expression.
        </td>
      </tr>
      <tr>
        <td><a href="config_annotation.html#AnnotationLocation">AnnotationLocation</a></td>
        <td>Check location of annotation on language elements.</td>
      </tr>
      <tr>
        <td><a href="config_annotation.html#AnnotationOnSameLine">AnnotationOnSameLine</a></td>
        <td>The check does verifying that annotations are located on the same line with their targets.</td>
      </tr>
      <tr>
        <td><a href="config_annotation.html#AnnotationUseStyle">AnnotationUseStyle</a></td>
        <td>This check controls the style with the usage of annotations.</td>
      </tr>
      <tr>
        <td><a href="config_sizes.html#AnonInnerLength">AnonInnerLength</a></td>
        <td>Checks for long anonymous inner classes.</td>
      </tr>
      <tr>
        <td><a href="config_coding.html#ArrayTrailingComma">ArrayTrailingComma</a></td>
        <td>Checks if array initialization contains optional trailing comma.</td>
      </tr>
      <tr>
        <td><a href="config_misc.html#ArrayTypeStyle">ArrayTypeStyle</a></td>
        <td>Checks the style of array type definitions.</td>
      </tr>
      <tr>
        <td><a href="config_javadoc.html#AtclauseOrder">AtclauseOrder</a></td>
        <td>Checks the order of at-clauses.</td>
      </tr>
      <tr>
        <td><a href="config_misc.html#AvoidEscapedUnicodeCharacters">AvoidEscapedUnicodeCharacters</a></td>
        <td>Restrict using Unicode escapes.</td>
      </tr>
      <tr>
        <td><a href="config_coding.html#AvoidInlineConditionals">AvoidInlineConditionals</a></td>
        <td>Detects inline conditionals.</td>
      </tr>
      <tr>
        <td><a href="config_blocks.html#AvoidNestedBlocks">AvoidNestedBlocks</a></td>
        <td>Finds nested blocks.</td>
      </tr>
      <tr>
        <td><a href="config_imports.html#AvoidStarImport">AvoidStarImport</a></td>
        <td>Check that finds import statements that use the * notation.</td>
      </tr>
      <tr>
        <td><a href="config_imports.html#AvoidStaticImport">AvoidStaticImport</a></td>
        <td>Check that finds static imports.</td>
      </tr>
      <tr>
        <td><a href="config_metrics.html#BooleanExpressionComplexity">BooleanExpressionComplexity</a></td>
        <td>
          Restricts nested boolean operators (&amp;&amp;, ||, &amp;, |
          and ^) to a specified depth (default = 3).
        </td>
      </tr>
      <tr>
        <td><a href="config_naming.html#CatchParameterName">CatchParameterName</a></td>
        <td>Checks that catch parameter names conform to a format specified by the format property.</td>
      </tr>
      <tr>
        <td><a href="config_metrics.html#ClassDataAbstractionCoupling">ClassDataAbstractionCoupling</a></td>
        <td>This metric measures the number of instantiations of other classes within the given class.</td>
      </tr>
      <tr>
        <td><a href="config_metrics.html#ClassFanOutComplexity">ClassFanOutComplexity</a></td>
        <td>The number of other classes a given class relies on.</td>
      </tr>
      <tr>
        <td><a href="config_naming.html#ClassTypeParameterName">ClassTypeParameterName</a></td>
        <td>
          Checks that class type parameter names conform to a format
          specified by the format property.
        </td>
      </tr>
      <tr>
        <td><a href="config_misc.html#CommentsIndentation">CommentsIndentation</a></td>
        <td>Controls the indentation between comments and surrounding code.</td>
      </tr>
      <tr>
        <td><a href="config_naming.html#ConstantName">ConstantName</a></td>
        <td>Checks that constant names conform to a format specified by the format property.</td>
      </tr>
      <tr>
        <td><a href="config_coding.html#CovariantEquals">CovariantEquals</a></td>
        <td>
          Checks that if a class defines a covariant method equals, then
          it defines method equals(java.lang.Object).
        </td>
      </tr>
      <tr>
        <td><a href="config_imports.html#CustomImportOrder">CustomImportOrder</a></td>
        <td>
          Checks that the groups of import declarations appear in the order specified
          by the user.
        </td>
      </tr>
      <tr>
        <td><a href="config_metrics.html#CyclomaticComplexity">CyclomaticComplexity</a></td>
        <td>Checks cyclomatic complexity against a specified limit.</td>
      </tr>
      <tr>
        <td><a href="config_coding.html#DeclarationOrder">DeclarationOrder</a></td>
        <td>
          Checks that the parts of a class or interface declaration
          appear in the order suggested by the <a
          href="http://www.oracle.com/technetwork/java/javase/documentation/codeconventions-141855.html#1852"
          >Code Conventions for the Java Programming Language</a>.
        </td>
      </tr>
      <tr>
        <td><a href="config_coding.html#DefaultComesLast">DefaultComesLast</a></td>
        <td>
          Check that the <code>default</code> is after all the
          <code>case</code>s in a <code>switch</code> statement.
        </td>
      </tr>
      <tr>
        <td><a href="config_misc.html#DescendantToken">DescendantToken</a></td>
        <td>Checks for restricted tokens beneath other tokens.</td>
      </tr>
      <tr>
        <td><a href="config_design.html#DesignForExtension">DesignForExtension</a></td>
        <td>Checks that classes are designed for inheritance.</td>
      </tr>
      <tr>
        <td><a href="config_blocks.html#EmptyBlock">EmptyBlock</a></td>
        <td>Checks for empty blocks but does not validate sequential blocks.</td>
      </tr>
      <tr>
        <td><a href="config_blocks.html#EmptyCatchBlock">EmptyCatchBlock</a></td>
        <td>Checks for empty catch blocks with few options to skip violation.</td>
      </tr>
      <tr>
        <td><a href="config_whitespace.html#EmptyForInitializerPad">EmptyForInitializerPad</a></td>
        <td>Checks the padding of an empty for initializer; that is whether a
        space is required at an empty for initializer, or such spaces are
        forbidden.</td>
      </tr>
      <tr>
        <td><a href="config_whitespace.html#EmptyForIteratorPad">EmptyForIteratorPad</a></td>
        <td>Checks the padding of an empty for iterator; that is whether a
        space is required at an empty for iterator, or such spaces are
        forbidden.</td>
      </tr>
      <tr>
        <td><a href="config_whitespace.html#EmptyLineSeparator">EmptyLineSeparator</a></td>
        <td>Checks for blank line separators.</td>
      </tr>
      <tr>
        <td><a href="config_coding.html#EmptyStatement">EmptyStatement</a></td>
        <td>
        Detects empty statements (standalone ';').</td>
      </tr>
      <tr>
        <td><a href="config_coding.html#EqualsAvoidNull">EqualsAvoidNull</a></td>
        <td>
          Checks that any combination of String literals
          is on the left side of an equals() comparison.</td>
      </tr>
      <tr>
        <td><a href="config_coding.html#EqualsHashCode">EqualsHashCode</a></td>
        <td>
        Checks that classes that override equals() also override hashCode().</td>
      </tr>
      <tr>
        <td><a href="config_sizes.html#ExecutableStatementCount">ExecutableStatementCount</a></td>
        <td>
          Restricts the number of executable statements to a specified
          limit (default = 30).
        </td>
      </tr>
      <tr>
        <td><a href="config_coding.html#ExplicitInitialization">ExplicitInitialization</a></td>
        <td>
          Checks if any class or object member explicitly initialized
          to default for its type value (<code>null</code> for object
          references, zero for numeric types and <code>char</code>
          and <code>false</code> for <code>boolean</code>.
        </td>
      </tr>
      <tr>
        <td><a href="config_coding.html#FallThrough">FallThrough</a></td>
        <td>Checks for fall through in switch statements
        Finds locations where a case contains Java code -
        but lacks a break, return, throw or continue statement.</td>
      </tr>
      <tr>
        <td><a href="config_sizes.html#FileLength">FileLength</a></td>
        <td>
        Checks for long source files.</td>
      </tr>
      <tr>
        <td><a href="config_whitespace.html#FileTabCharacter">FileTabCharacter</a></td>
        <td>Checks to see if a file contains a tab character.</td>
      </tr>
      <tr>
        <td><a href="config_design.html#FinalClass">FinalClass</a></td>
        <td>
          Checks that class which has only private constructors
        is declared as final.</td>
      </tr>
      <tr>
        <td><a href="config_coding.html#FinalLocalVariable">FinalLocalVariable</a></td>
        <td>
          Ensures that local variables that never get their values changed,
        must be declared final.</td>
      </tr>
      <tr>
        <td><a href="config_misc.html#FinalParameters">FinalParameters</a></td>
        <td>Check that method/constructor/catch/foreach parameters are final.</td>
      </tr>
      <tr>
        <td><a href="config_whitespace.html#GenericWhitespace">GenericWhitespace</a></td>
        <td>Checks that the whitespace around the Generic tokens &lt; and &gt; are
        correct to the <i>typical</i> convention.</td>
      </tr>
      <tr>
        <td><a href="config_header.html#Header">Header</a></td>
        <td>Checks the header of the source against a fixed header file.</td>
      </tr>
      <tr>
        <td><a href="config_coding.html#HiddenField">HiddenField</a></td>
        <td>Checks that a local variable or a parameter does not shadow
        a field that is defined in the same class.</td>
      </tr>
      <tr>
        <td><a href="config_design.html#HideUtilityClassConstructor">HideUtilityClassConstructor</a></td>
        <td>Make sure that utility classes (classes that contain only static methods)
        do not have a public constructor.</td>
      </tr>
      <tr>
        <td><a href="config_coding.html#IllegalCatch">IllegalCatch</a></td>
        <td>Catching java.lang.Exception, java.lang.Error or java.lang.RuntimeException
        is almost never acceptable.</td>
      </tr>
      <tr>
        <td><a href="config_imports.html#IllegalImport">IllegalImport</a></td>
        <td>
        Checks for imports from a set of illegal packages.</td>
      </tr>
      <tr>
        <td><a href="config_coding.html#IllegalInstantiation">IllegalInstantiation</a></td>
        <td>
        Checks for illegal instantiations where a factory method is preferred.</td>
      </tr>
      <tr>
        <td><a href="config_coding.html#IllegalThrows">IllegalThrows</a></td>
        <td>Throwing java.lang.Error or java.lang.RuntimeException
        is almost never acceptable.</td>
      </tr>
      <tr>
        <td><a href="config_coding.html#IllegalToken">IllegalToken</a></td>
        <td>
        Checks for illegal tokens.</td>
      </tr>
      <tr>
        <td><a href="config_coding.html#IllegalTokenText">IllegalTokenText</a></td>
        <td>
        Checks for illegal token text.</td>
      </tr>
      <tr>
        <td><a href="config_coding.html#IllegalType">IllegalType</a></td>
        <td>
          Checks that particular class are never used as types in variable
        declarations, return values or parameters.</td>
      </tr>
      <tr>
        <td><a href="config_imports.html#ImportControl">ImportControl</a></td>
        <td>Check that controls what packages can be imported in each package.</td>
      </tr>
      <tr>
        <td><a href="config_imports.html#ImportOrder">ImportOrder</a></td>
        <td>Ensures that groups of imports come in a specific order.</td>
      </tr>
      <tr>
        <td><a href="config_misc.html#Indentation">Indentation</a></td>
        <td>Checks correct indentation of Java Code.</td>
      </tr>
      <tr>
        <td><a href="config_coding.html#InnerAssignment">InnerAssignment</a></td>
        <td>
          Checks for assignments in subexpressions, such as in
        <code>String s = Integer.toString(i = 2);</code>.</td>
      </tr>
      <tr>
        <td><a href="config_design.html#InnerTypeLast">InnerTypeLast</a></td>
        <td>
          Check nested (internal) classes/interfaces are declared at the bottom of the
        class after all method and field declarations.</td>
      </tr>
      <tr>
        <td><a href="config_design.html#InterfaceIsType">InterfaceIsType</a></td>
        <td>Implements Bloch, Effective Java, Item 17 -
        Use Interfaces only to define types.</td>
      </tr>
      <tr>
        <td><a href="config_naming.html#InterfaceTypeParameterName">InterfaceTypeParameterName</a></td>
        <td>
          Checks that interface type parameter names conform to a format specified
        by the format property.</td>
      </tr>
      <tr>
        <td><a href="config_javadoc.html#JavadocMethod">JavadocMethod</a></td>
        <td>Checks the Javadoc of a method or constructor.</td>
      </tr>
      <tr>
        <td><a href="config_javadoc.html#JavadocPackage">JavadocPackage</a></td>
        <td>Checks that all packages have a package documentation.</td>
      </tr>
      <tr>
        <td><a href="config_javadoc.html#JavadocParagraph">JavadocParagraph</a></td>
        <td>Checks Javadoc paragraphs.</td>
      </tr>
      <tr>
        <td><a href="config_javadoc.html#JavadocStyle">JavadocStyle</a></td>
        <td>Custom Checkstyle Check to validate Javadoc.</td>
      </tr>
      <tr>
        <td><a href="config_javadoc.html#JavadocTagContinuationIndentation">JavadocTagContinuationIndentation</a></td>
        <td>Checks the indentation of the continuation lines in at-clauses.</td>
      </tr>
      <tr>
        <td><a href="config_javadoc.html#JavadocType">JavadocType</a></td>
        <td>Checks the Javadoc of a type.</td>
      </tr>
      <tr>
        <td><a href="config_javadoc.html#JavadocVariable">JavadocVariable</a></td>
        <td>Checks that a variable has Javadoc comment.</td>
      </tr>
      <tr>
        <td><a href="config_metrics.html#JavaNCSS">JavaNCSS</a></td>
        <td>This check calculates the Non Commenting Source Statements (NCSS) metric for
        Java source files and methods.</td>
      </tr>
      <tr>
        <td><a href="config_blocks.html#LeftCurly">LeftCurly</a></td>
        <td>
          Checks the placement of left curly braces on types, methods and
          other blocks:
        </td>
      </tr>
      <tr>
        <td><a href="config_sizes.html#LineLength">LineLength</a></td>
        <td>Checks for long lines.</td>
      </tr>
      <tr>
        <td><a href="config_naming.html#LocalFinalVariableName">LocalFinalVariableName</a></td>
        <td>
          Checks that local final variable names conform to a format specified
        by the format property.</td>
      </tr>
      <tr>
        <td><a href="config_naming.html#LocalVariableName">LocalVariableName</a></td>
        <td>
          Checks that local, non-final variable names conform to a format specified
        by the format property.</td>
      </tr>
      <tr>
        <td><a href="config_coding.html#MagicNumber">MagicNumber</a></td>
        <td>
        Checks for magic numbers.</td>
      </tr>
      <tr>
        <td><a href="config_naming.html#MemberName">MemberName</a></td>
        <td>
          Checks that instance variable names conform to a format specified
        by the format property.</td>
      </tr>
      <tr>
        <td><a href="config_sizes.html#MethodCount">MethodCount</a></td>
        <td>Checks the number of methods declared in each type declaration by access modifier
        or total count.</td>
      </tr>
      <tr>
        <td><a href="config_sizes.html#MethodLength">MethodLength</a></td>
        <td>
        Checks for long methods.</td>
      </tr>
      <tr>
        <td><a href="config_naming.html#MethodName">MethodName</a></td>
        <td>
          Checks that method names conform to a format specified
        by the format property.</td>
      </tr>
      <tr>
        <td><a href="config_whitespace.html#MethodParamPad">MethodParamPad</a></td>
        <td>
          Checks the padding between the identifier of a method definition,
          constructor definition, method call, or constructor invocation;
        and the left parenthesis of the parameter list.</td>
      </tr>
      <tr>
        <td><a href="config_naming.html#MethodTypeParameterName">MethodTypeParameterName</a></td>
        <td>
          Checks that class type parameter names conform to a format specified
        by the format property.</td>
      </tr>
      <tr>
        <td><a href="config_coding.html#MissingCtor">MissingCtor</a></td>
        <td>
          Checks that classes (except abstract one) define a ctor and don't rely
        on the default one.</td>
      </tr>
      <tr>
        <td><a href="config_annotation.html#MissingDeprecated">MissingDeprecated</a></td>
        <td>
          This class is used to verify that both the java.lang.Deprecated annotation is
          present and the @deprecated Javadoc tag is present when either is present.
        </td>
      </tr>
      <tr>
        <td><a href="config_annotation.html#MissingOverride">MissingOverride</a></td>
        <td>
        This class is used to verify that the java.lang.Override annotation is present
        when the {@inheritDoc} javadoc tag is present.
        </td>
      </tr>
      <tr>
        <td><a href="config_coding.html#MissingSwitchDefault">MissingSwitchDefault</a></td>
        <td>
        Checks that switch statement has &quot;default&quot; clause.</td>
      </tr>
      <tr>
        <td><a href="config_coding.html#ModifiedControlVariable">ModifiedControlVariable</a></td>
        <td>Check for ensuring that for loop control variables are not modified
        inside the for block.</td>
      </tr>
      <tr>
        <td><a href="config_modifier.html#ModifierOrder">ModifierOrder</a></td>
        <td>
          Checks that the order of modifiers conforms to the suggestions in the
          <a
              href="https://docs.oracle.com/javase/specs/jls/se8/html/jls-8.html">
        Java Language specification, sections 8.1.1, 8.3.1 and 8.4.3</a>.</td>
      </tr>
      <tr>
        <td><a href="config_coding.html#MultipleStringLiterals">MultipleStringLiterals</a></td>
        <td>Checks for multiple occurrences of the same string literal within a
        single file.</td>
      </tr>
      <tr>
        <td><a href="config_coding.html#MultipleVariableDeclarations">MultipleVariableDeclarations</a></td>
        <td>
          Checks that each variable declaration is in its own statement
        and on its own line.</td>
      </tr>
      <tr>
        <td><a href="config_design.html#MutableException">MutableException</a></td>
        <td> Ensures that exceptions (defined as any class name conforming
        to some regular expression) are immutable.</td>
      </tr>
      <tr>
        <td><a href="config_blocks.html#NeedBraces">NeedBraces</a></td>
        <td>
        Checks for braces around code blocks.</td>
      </tr>
      <tr>
        <td><a href="config_coding.html#NestedForDepth">NestedForDepth</a></td>
        <td>Restricts nested <code>for</code> blocks to a specified depth (default = 1).</td>
      </tr>
      <tr>
        <td><a href="config_coding.html#NestedIfDepth">NestedIfDepth</a></td>
        <td>Restricts nested if-else blocks to a specified depth (default = 1).</td>
      </tr>
      <tr>
        <td><a href="config_coding.html#NestedTryDepth">NestedTryDepth</a></td>
        <td>Restricts nested try-catch-finally blocks to a specified depth (default = 1).</td>
      </tr>
      <tr>
        <td><a href="config_misc.html#NewlineAtEndOfFile">NewlineAtEndOfFile</a></td>
        <td>
        Checks that there is a newline at the end of each file.</td>
      </tr>
      <tr>
        <td><a href="config_coding.html#NoClone">NoClone</a></td>
        <td>
          Checks that the clone method is not overridden from the
        Object class.</td>
      </tr>
      <tr>
        <td><a href="config_coding.html#NoFinalizer">NoFinalizer</a></td>
        <td>Checks that no method having zero parameters is defined
        using the name <em>finalize</em>.</td>
      </tr>
      <tr>
        <td><a href="config_whitespace.html#NoLineWrap">NoLineWrap</a></td>
        <td>
        Checks that chosen statements are not line-wrapped.</td>
      </tr>
      <tr>
        <td><a href="config_javadoc.html#NonEmptyAtclauseDescription">NonEmptyAtclauseDescription</a></td>
        <td>
        Checks that the at-clause tag is followed by description .</td>
      </tr>
      <tr>
        <td><a href="config_whitespace.html#NoWhitespaceAfter">NoWhitespaceAfter</a></td>
        <td>
        Checks that there is no whitespace after a token.</td>
      </tr>
      <tr>
        <td><a href="config_whitespace.html#NoWhitespaceBefore">NoWhitespaceBefore</a></td>
        <td>
        Checks that there is no whitespace before a token.</td>
      </tr>
      <tr>
        <td><a href="config_metrics.html#NPathComplexity">NPathComplexity</a></td>
        <td>Checks the npath complexity against a specified limit (default = 200).</td>
      </tr>
      <tr>
        <td><a href="config_coding.html#OneStatementPerLine">OneStatementPerLine</a></td>
        <td>Checks that there is only one statement per line.</td>
      </tr>
      <tr>
        <td><a href="config_design.html#OneTopLevelClass">OneTopLevelClass</a></td>
        <td>Checks that each top-level class, interfaces or enum resides in a source file of its own.</td>
      </tr>
      <tr>
        <td><a href="config_whitespace.html#OperatorWrap">OperatorWrap</a></td>
        <td>
        Checks line wrapping for operators.</td>
      </tr>
      <tr>
        <td><a href="config_misc.html#OuterTypeFilename">OuterTypeFilename</a></td>
        <td>Checks that the outer type name and the file name match.</td>
      </tr>
      <tr>
        <td><a href="config_sizes.html#OuterTypeNumber">OuterTypeNumber</a></td>
        <td>Checks for the number of defined types at the "outer" level.</td>
      </tr>
      <tr>
        <td><a href="config_coding.html#OverloadMethodsDeclarationOrder">OverloadMethodsDeclarationOrder</a></td>
        <td>Checks that overload methods are grouped together.</td>
      </tr>
      <tr>
        <td><a href="config_annotation.html#PackageAnnotation">PackageAnnotation</a></td>
        <td>This check makes sure that all package annotations are in the
        package-info.java file.</td>
      </tr>
      <tr>
        <td><a href="config_coding.html#PackageDeclaration">PackageDeclaration</a></td>
        <td>Ensures there is a package declaration and (optionally) in the correct directory.</td>
      </tr>
      <tr>
        <td><a href="config_naming.html#PackageName">PackageName</a></td>
        <td>
          Checks that package names conform to a format specified
        by the format property.</td>
      </tr>
      <tr>
        <td><a href="config_coding.html#ParameterAssignment">ParameterAssignment</a></td>
        <td>
        Disallow assignment of parameters.</td>
      </tr>
      <tr>
        <td><a href="config_naming.html#ParameterName">ParameterName</a></td>
        <td>
          Checks that parameter names conform to a format specified
        by the format property.</td>
      </tr>
      <tr>
        <td><a href="config_sizes.html#ParameterNumber">ParameterNumber</a></td>
        <td>
        Checks the number of parameters that a method or constructor has.</td>
      </tr>
      <tr>
        <td><a href="config_whitespace.html#ParenPad">ParenPad</a></td>
        <td>Checks the padding of parentheses; that is whether a space is required
        after a left parenthesis and before a right parenthesis, or such spaces are
        forbidden, with the exception that it does
        not check for padding of the right parenthesis at an empty for iterator.</td>
      </tr>
      <tr>
        <td><a href="config_imports.html#RedundantImport">RedundantImport</a></td>
        <td>
        Checks for imports that are redundant.</td>
      </tr>
      <tr>
        <td><a href="config_modifier.html#RedundantModifier">RedundantModifier</a></td>
        <td>Checks for redundant modifiers in interface and annotation definitions,
          final modifier on methods of final classes, inner <code>interface</code>
          declarations that are declared as <code>static</code>, non public class
          constructors and enum constructors, nested enum definitions that are declared
          as <code>static</code>.</td>
      </tr>
      <tr>
        <td><a href="config_regexp.html#Regexp">Regexp</a></td>
        <td>
        A check that makes sure that a specified pattern exists (or not) in the file.</td>
      </tr>
      <tr>
        <td><a href="config_header.html#RegexpHeader">RegexpHeader</a></td>
        <td>Checks the header of the source against a header file that contains a
        </td>
      </tr>
      <tr>
        <td><a href="config_regexp.html#RegexpMultiline">RegexpMultiline</a></td>
        <td>Implementation of a check that looks that matches across multiple lines in
        any file type.</td>
      </tr>
      <tr>
        <td><a href="config_regexp.html#RegexpOnFilename">RegexpOnFilename</a></td>
        <td>Implementation of a check that matches based on file and/or folder path.</td>
      </tr>
      <tr>
        <td><a href="config_regexp.html#RegexpSingleline">RegexpSingleline</a></td>
        <td>Implementation of a check that looks for a single line in any file type.</td>
      </tr>
      <tr>
        <td><a href="config_regexp.html#RegexpSinglelineJava">RegexpSinglelineJava</a></td>
        <td>Implementation of a check that looks for a single line in Java files.</td>
      </tr>
      <tr>
        <td><a href="config_coding.html#RequireThis">RequireThis</a></td>
        <td>Checks that code doesn't rely on the &quot;this&quot; default.</td>
      </tr>
      <tr>
        <td><a href="config_coding.html#ReturnCount">ReturnCount</a></td>
        <td>
        Restricts return statements to a specified count (default = 2).</td>
      </tr>
      <tr>
        <td><a href="config_blocks.html#RightCurly">RightCurly</a></td>
        <td>
        Checks the placement of right curly braces.</td>
      </tr>
      <tr>
        <td><a href="config_whitespace.html#SeparatorWrap">SeparatorWrap</a></td>
        <td>
        Checks line wrapping with separators.</td>
      </tr>
      <tr>
        <td><a href="config_coding.html#SimplifyBooleanExpression">SimplifyBooleanExpression</a></td>
        <td>
        Checks for overly complicated boolean expressions.</td>
      </tr>
      <tr>
        <td><a href="config_coding.html#SimplifyBooleanReturn">SimplifyBooleanReturn</a></td>
        <td>
        Checks for overly complicated boolean return statements.</td>
      </tr>
      <tr>
        <td><a href="config_javadoc.html#SingleLineJavadoc">SingleLineJavadoc</a></td>
        <td>
         Checks that a JavaDoc block which can fit on a single line and doesn't contain at-clauses</td>
      </tr>
      <tr>
        <td><a href="config_whitespace.html#SingleSpaceSeparator">SingleSpaceSeparator</a></td>
        <td>
         Checks that non-whitespace characters are separated by no more than one whitespace.</td>
      </tr>
      <tr>
        <td><a href="config_naming.html#StaticVariableName">StaticVariableName</a></td>
        <td>
          Checks that static, non-final variable names conform to a format specified
        by the format property.</td>
      </tr>
      <tr>
        <td><a href="config_coding.html#StringLiteralEquality">StringLiteralEquality</a></td>
        <td>Checks that string literals are not used with
        <code>==</code> or <code>&#33;=</code>.</td>
      </tr>
      <tr>
        <td><a href="config_javadoc.html#SummaryJavadoc">SummaryJavadoc</a></td>
        <td>
        Checks that Javadoc summary sentence does not contain phrases that are not recommended to use.</td>
      </tr>
      <tr>
        <td><a href="config_coding.html#SuperClone">SuperClone</a></td>
        <td>
        Checks that an overriding clone() method invokes super.clone().</td>
      </tr>
      <tr>
        <td><a href="config_coding.html#SuperFinalize">SuperFinalize</a></td>
        <td>
        Checks that an overriding finalize() method invokes super.finalize().</td>
      </tr>
      <tr>
        <td><a href="config_annotation.html#SuppressWarnings">SuppressWarnings</a></td>
        <td>
          This check allows you to specify what warnings that
        </td>
      </tr>
      <tr>
        <td><a href="config_design.html#ThrowsCount">ThrowsCount</a></td>
        <td>
        Restricts throws statements to a specified count (default = 4).</td>
      </tr>
      <tr>
        <td><a href="config_misc.html#TodoComment">TodoComment</a></td>
        <td>
        A check for TODO comments.</td>
      </tr>
      <tr>
        <td><a href="config_misc.html#TrailingComment">TrailingComment</a></td>
        <td>
        The check to ensure that requires that comments be the only thing on a line.</td>
      </tr>
      <tr>
        <td><a href="config_misc.html#Translation">Translation</a></td>
        <td>
          The TranslationCheck class helps to ensure the correct translation of code by
        checking property files for consistency regarding their keys.</td>
      </tr>
      <tr>
        <td><a href="config_whitespace.html#TypecastParenPad">TypecastParenPad</a></td>
        <td>Checks the padding of parentheses for typecasts.</td>
      </tr>
      <tr>
        <td><a href="config_naming.html#TypeName">TypeName</a></td>
        <td>
          Checks that type names conform to a format specified
        by the format property.</td>
      </tr>
      <tr>
        <td><a href="config_misc.html#UncommentedMain">UncommentedMain</a></td>
        <td>Detects uncommented main methods.</td>
      </tr>
      <tr>
        <td><a href="config_misc.html#UniqueProperties">UniqueProperties</a></td>
        <td>Detects duplicated keys in properties files.</td>
      </tr>
      <tr>
        <td><a href="config_coding.html#UnnecessaryParentheses">UnnecessaryParentheses</a></td>
        <td>
        Checks if unnecessary parentheses are used in a statement or expression.</td>
      </tr>
      <tr>
        <td><a href="config_imports.html#UnusedImports">UnusedImports</a></td>
        <td>
        Checks for unused import statements.</td>
      </tr>
      <tr>
        <td><a href="config_misc.html#UpperEll">UpperEll</a></td>
        <td>Checks that long constants are defined with an upper ell.</td>
      </tr>
      <tr>
        <td><a href="config_coding.html#VariableDeclarationUsageDistance">VariableDeclarationUsageDistance</a></td>
        <td>Checks the distance between declaration of variable and its first usage.</td>
      </tr>
      <tr>
        <td><a href="config_design.html#VisibilityModifier">VisibilityModifier</a></td>
        <td>Checks visibility of class members.</td>
      </tr>
      <tr>
        <td><a href="config_whitespace.html#WhitespaceAfter">WhitespaceAfter</a></td>
        <td>
          Checks that a token is followed by whitespace, with the exception that it
        does not check for whitespace after the semicolon of an empty for iterator.</td>
      </tr>
      <tr>
        <td><a href="config_whitespace.html#WhitespaceAround">WhitespaceAround</a></td>
        <td>
        Checks that a token is surrounded by whitespace.</td>
      </tr>
      <tr>
        <td><a href="config_javadoc.html#WriteTag">WriteTag</a></td>
        <td>
        Outputs a JavaDoc tag as information.</td>
      </tr>
    </table>
    </section>

    <section name="Holder Checks">
    <p>
      These checks aren't normal checks and are usually associated with a specialized filter
      to gather information the filter can't get on it's own.
    </p>

    <table>
      <tr>
        <td><a href="config_annotation.html#SuppressWarningsHolder">SuppressWarningsHolder</a></td>
        <td>
          Maintains a set of check suppressions from <code>SuppressWarnings</code> annotations.
        </td>
      </tr>
    </table>
    </section>
  </body>
</document>
