<?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>Size Violations</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="AnonInnerLength">
      <p>Since Checkstyle 3.2</p>
      <subsection name="Description" id="AnonInnerLength_Description">
        <p>
          Checks for long anonymous inner classes.
        </p>

        <p>
          Rationale: If an anonymous inner class becomes very long it is hard
          to understand and to see the flow of the method where the class is
          defined. Therefore long anonymous inner classes should usually be
          refactored into a named inner class. See also Bloch, Effective
          Java, p. 93.
        </p>
      </subsection>

      <subsection name="Properties" id="AnonInnerLength_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>max</td>
              <td>Specify the maximum number of lines allowed.</td>
              <td><a href="property_types.html#integer">Integer</a></td>
              <td><code>20</code></td>
              <td>3.2</td>
            </tr>
          </table>
        </div>
      </subsection>

      <subsection name="Examples" id="AnonInnerLength_Examples">
        <p>
          To configure the check to accept anonymous classes with up to 20 lines:
        </p>
        <source>
&lt;module name="AnonInnerLength"/&gt;
        </source>
        <p>
          To configure the check to accept anonymous classes with up to 60 lines:
        </p>
        <source>
&lt;module name="AnonInnerLength"&gt;
  &lt;property name="max" value="60"/&gt;
&lt;/module&gt;
        </source>
      </subsection>

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

      <subsection name="Violation Messages" id="AnonInnerLength_Violation_Messages">
        <ul>
          <li>
            <a href="https://github.com/search?q=path%3Asrc%2Fmain%2Fresources%2Fcom%2Fpuppycrawl%2Ftools%2Fcheckstyle%2Fchecks%2Fsizes+filename%3Amessages*.properties+repo%3Acheckstyle%2Fcheckstyle+%22maxLen.anonInner%22">
            maxLen.anonInner</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" id="AnonInnerLength_Package">
        <p>
          com.puppycrawl.tools.checkstyle.checks.sizes
        </p>
      </subsection>

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

    <section name="ExecutableStatementCount">
      <p>Since Checkstyle 3.2</p>
      <subsection name="Description" id="ExecutableStatementCount_Description">
        <p>Restricts the number of executable statements to a specified limit.</p>
      </subsection>

      <subsection name="Properties" id="ExecutableStatementCount_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>max</td>
              <td>Specify the maximum threshold allowed.</td>
              <td><a href="property_types.html#integer">Integer</a></td>
              <td><code>30</code></td>
              <td>3.2</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#CTOR_DEF">
                  CTOR_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#INSTANCE_INIT">
                  INSTANCE_INIT</a>,
                <a href="apidocs/com/puppycrawl/tools/checkstyle/api/TokenTypes.html#STATIC_INIT">
                  STATIC_INIT</a>.
              </td>
              <td>
                <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#METHOD_DEF">
                  METHOD_DEF</a>,
                <a href="apidocs/com/puppycrawl/tools/checkstyle/api/TokenTypes.html#INSTANCE_INIT">
                  INSTANCE_INIT</a>,
                <a href="apidocs/com/puppycrawl/tools/checkstyle/api/TokenTypes.html#STATIC_INIT">
                  STATIC_INIT</a>.
              </td>
              <td>3.2</td>
            </tr>
          </table>
        </div>
      </subsection>

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

        <p>
          To configure the check with a threshold of 20 for constructor and
          method definitions:
        </p>
        <source>
&lt;module name=&quot;ExecutableStatementCount&quot;&gt;
  &lt;property name=&quot;max&quot; value=&quot;20&quot;/&gt;
  &lt;property name=&quot;tokens&quot; value=&quot;CTOR_DEF,METHOD_DEF&quot;/&gt;
&lt;/module&gt;
        </source>
      </subsection>

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

      <subsection name="Violation Messages" id="ExecutableStatementCount_Violation_Messages">
        <ul>
          <li>
            <a href="https://github.com/search?q=path%3Asrc%2Fmain%2Fresources%2Fcom%2Fpuppycrawl%2Ftools%2Fcheckstyle%2Fchecks%2Fsizes+filename%3Amessages*.properties+repo%3Acheckstyle%2Fcheckstyle+%22executableStatementCount%22">
            executableStatementCount</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" id="ExecutableStatementCount_Package">
        <p>
          com.puppycrawl.tools.checkstyle.checks.sizes
        </p>
      </subsection>

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

    <section name="FileLength">
      <p>Since Checkstyle 5.0</p>
      <subsection name="Description" id="FileLength_Description">
        <p>
          Checks for long source files.
        </p>

        <p>
          Rationale: If a source file becomes very long it is hard to
          understand. Therefore long classes should usually be refactored
          into several individual classes that focus on a specific task.
        </p>
      </subsection>

      <subsection name="Properties" id="FileLength_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>max</td>
              <td>Specify the maximum number of lines allowed.</td>
              <td><a href="property_types.html#integer">Integer</a></td>
              <td><code>2000</code></td>
              <td>3.2</td>
            </tr>
            <tr>
              <td>fileExtensions</td>
              <td>Specify the file type extension of files to process.</td>
              <td><a href="property_types.html#stringSet">String Set</a></td>
              <td><code>all files</code></td>
              <td>5.0</td>
            </tr>
          </table>
        </div>
      </subsection>

      <subsection name="Examples" id="FileLength_Examples">
        <p>
          To configure the check:
        </p>
        <source>
&lt;module name="FileLength"/&gt;
        </source>
        <p>
          To configure the check to accept files with up to 1500 lines:
        </p>
        <source>
&lt;module name="FileLength"&gt;
  &lt;property name="max" value="1500"/&gt;
&lt;/module&gt;
        </source>
      </subsection>

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

      <subsection name="Violation Messages" id="FileLength_Violation_Messages">
        <ul>
          <li>
            <a href="https://github.com/search?q=path%3Asrc%2Fmain%2Fresources%2Fcom%2Fpuppycrawl%2Ftools%2Fcheckstyle%2Fchecks%2Fsizes+filename%3Amessages*.properties+repo%3Acheckstyle%2Fcheckstyle+%22maxLen.file%22">
            maxLen.file</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" id="FileLength_Package">
        <p>
          com.puppycrawl.tools.checkstyle.checks.sizes
        </p>
      </subsection>

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

    <section name="LineLength">
      <p>Since Checkstyle 3.0</p>
      <subsection name="Description" id="LineLength_Description">
        <p>
          Checks for long lines.
        </p>

        <p>
          Rationale: Long lines are hard to read in printouts or if developers
          have limited screen space for the source code, e.g. if the IDE
          displays additional information like project tree, class hierarchy,
          etc.
        </p>
      </subsection>

      <subsection name="Properties" id="LineLength_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>fileExtensions</td>
              <td>Specify file extensions that are accepted.</td>
              <td><a href="property_types.html#stringSet">String Set</a></td>
              <td><code>all files</code></td>
              <td>8.24</td>
            </tr>
            <tr>
              <td>ignorePattern</td>
              <td>Specify pattern for lines to ignore.</td>
              <td><a href="property_types.html#regexp">Regular Expression</a></td>
              <td><code>"^$" (empty)</code></td>
              <td>3.0</td>
            </tr>
            <tr>
              <td>max</td>
              <td>Specify the maximum line length allowed.</td>
              <td><a href="property_types.html#integer">Integer</a></td>
              <td><code>80</code></td>
              <td>3.0</td>
            </tr>
          </table>
        </div>
      </subsection>

      <subsection name="Examples" id="LineLength_Examples">
        <p>
          To configure the check to accept lines up to 80 characters long:
        </p>
        <source>
&lt;module name="LineLength"/&gt;
        </source>

        <p>
          To configure the check to accept lines up to 120 characters long:
        </p>
        <source>
&lt;module name="LineLength"&gt;
  &lt;property name="max" value="120"/&gt;
&lt;/module&gt;
        </source>

        <p>
          To configure the check to ignore lines that begin with <code>&quot; * &quot;</code>code,
          followed by just one word, such as within a Javadoc comment:
        </p>
        <source>
&lt;module name="LineLength"&gt;
  &lt;property name="ignorePattern" value="^ *\* *[^ ]+$"/&gt;
&lt;/module&gt;
        </source>

        <p>
          To configure the check to only validate java files and ignore other extensions:
        </p>
        <source>
&lt;module name="LineLength"&gt;
  &lt;property name="fileExtensions" value="java"/&gt;
&lt;/module&gt;
        </source>

        <p>
          To configure the check to only validate xml and property files and ignore other
          extensions:
        </p>
        <source>
&lt;module name="LineLength"&gt;
  &lt;property name="fileExtensions" value="xml, properties"/&gt;
&lt;/module&gt;
        </source>
      </subsection>

      <subsection name="Notes" id="LineLength_Notes">
        <ul>
          <li>
            The calculation of the length of a line takes into account the
            number of expanded spaces for a tab character (<code>'\t'</code>). The default number
            of spaces is <code>8</code>. To specify a different number of spaces, the user can set
            <a href="config.html#TreeWalker"><code>TreeWalker</code></a> property
            <code>tabWidth</code> which applies to all Checks, including <code>LineLength</code>;
            or can set property <code>tabWidth</code> for <code>LineLength</code> alone.
          </li>
          <li>
            Package and import statements (lines matching pattern
            <code>^(package|import) .*</code>) are not verified by
            this check.
          </li>
        </ul>
      </subsection>

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

      <subsection name="Violation Messages" id="LineLength_Violation_Messages">
        <ul>
          <li>
            <a href="https://github.com/search?q=path%3Asrc%2Fmain%2Fresources%2Fcom%2Fpuppycrawl%2Ftools%2Fcheckstyle%2Fchecks%2Fsizes+filename%3Amessages*.properties+repo%3Acheckstyle%2Fcheckstyle+%22maxLineLen%22">
            maxLineLen</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" id="LineLength_Package">
        <p>
          com.puppycrawl.tools.checkstyle.checks.sizes
        </p>
      </subsection>

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

    <section name="MethodCount">
      <p>Since Checkstyle 5.3</p>
      <subsection name="Description" id="MethodCount_Description">
        <p>
          Checks the number of methods declared in each type declaration by access modifier or
          total count.
        </p>
        <p>
          This check can be configured to flag classes that define too many methods to prevent the
          class from getting too complex.
          Counting can be customized to prevent too many total methods in a type definition
          (<code>maxTotal</code>), or to prevent too many methods of a specific access modifier
          (<code>private</code>, <code>package</code>, <code>protected</code> or
          <code>public</code>).
          Each count is completely separated to customize how many methods of each you want to
          allow. For example, specifying a <code>maxTotal</code> of 10, still means you can
          prevent more than 0 <code>maxPackage</code> methods. A violation won't appear for 8
          public methods, but one will appear if there is also 3 private methods or any
          package-private methods.
        </p>
        <p>
          Methods defined in anonymous classes are not counted towards any totals.
          Counts only go towards the main type declaration parent, and are kept separate from it's
          children's inner types.
        </p>
        <source>
public class ExampleClass {
  public enum Colors {
    RED, GREEN, YELLOW;

    public String getRGB() { ... } // NOT counted towards ExampleClass
  }

  public void example() { // counted towards ExampleClass
    Runnable r = (new Runnable() {
      public void run() { ... } // NOT counted towards ExampleClass, won't produce any violations
    });
  }

  public static class InnerExampleClass {
    protected void example2() { ... } // NOT counted towards ExampleClass,
                                   // but counted towards InnerExampleClass
  }
}
        </source>
      </subsection>

      <subsection name="Properties" id="MethodCount_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>maxTotal</td>
              <td>Specify the maximum number of methods allowed at all scope levels.</td>
              <td><a href="property_types.html#integer">Integer</a></td>
              <td><code>100</code></td>
              <td>5.3</td>
            </tr>
            <tr>
              <td>maxPrivate</td>
              <td>Specify the maximum number of <code>private</code> methods allowed.</td>
              <td><a href="property_types.html#integer">Integer</a></td>
              <td><code>100</code></td>
              <td>5.3</td>
            </tr>
            <tr>
              <td>maxPackage</td>
              <td>Specify the maximum number of <code>package</code> methods allowed.</td>
              <td><a href="property_types.html#integer">Integer</a></td>
              <td><code>100</code></td>
              <td>5.3</td>
            </tr>
            <tr>
              <td>maxProtected</td>
              <td>Specify the maximum number of <code>protected</code> methods allowed.</td>
              <td><a href="property_types.html#integer">Integer</a></td>
              <td>100</td>
              <td>5.3</td>
            </tr>
            <tr>
              <td>maxPublic</td>
              <td>Specify the maximum number of <code>public</code> methods allowed.</td>
              <td><a href="property_types.html#integer">Integer</a></td>
              <td><code>100</code></td>
              <td>5.3</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#ENUM_CONSTANT_DEF">
                  ENUM_CONSTANT_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#INTERFACE_DEF">
                  INTERFACE_DEF</a>,
                <a href="apidocs/com/puppycrawl/tools/checkstyle/api/TokenTypes.html#INTERFACE_DEF">
                  ANNOTATION_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#ENUM_CONSTANT_DEF">
                  ENUM_CONSTANT_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#INTERFACE_DEF">
                  INTERFACE_DEF</a>,
                <a href="apidocs/com/puppycrawl/tools/checkstyle/api/TokenTypes.html#INTERFACE_DEF">
                  ANNOTATION_DEF</a>.
              </td>
              <td>5.3</td>
            </tr>
          </table>
        </div>
      </subsection>

      <subsection name="Examples" id="MethodCount_Examples">
        <p>
          To configure the check with defaults:
        </p>
        <source>
&lt;module name="MethodCount"/&gt;
        </source>

        <p>
          To configure the check to allow no more than 30 methods per type declaration:
        </p>
        <source>
&lt;module name="MethodCount"&gt;
  &lt;property name="maxTotal" value="30"/&gt;
&lt;/module&gt;
        </source>

        <p>
          To configure the check to allow no more than 10 public methods per
          type declaration, and 40 methods in total:
        </p>
        <source>
&lt;module name="MethodCount"&gt;
  &lt;property name="maxPublic" value="10"/&gt;
  &lt;property name="maxTotal" value="40"/&gt;
&lt;/module&gt;
        </source>

      </subsection>

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

      <subsection name="Violation Messages" id="MethodCount_Violation_Messages">
        <ul>
          <li>
            <a href="https://github.com/search?q=path%3Asrc%2Fmain%2Fresources%2Fcom%2Fpuppycrawl%2Ftools%2Fcheckstyle%2Fchecks%2Fsizes+filename%3Amessages*.properties+repo%3Acheckstyle%2Fcheckstyle+%22too.many.methods%22">
            too.many.methods</a>
          </li>
          <li>
            <a href="https://github.com/search?q=path%3Asrc%2Fmain%2Fresources%2Fcom%2Fpuppycrawl%2Ftools%2Fcheckstyle%2Fchecks%2Fsizes+filename%3Amessages*.properties+repo%3Acheckstyle%2Fcheckstyle+%22too.many.packageMethods%22">
            too.many.packageMethods</a>
          </li>
          <li>
            <a href="https://github.com/search?q=path%3Asrc%2Fmain%2Fresources%2Fcom%2Fpuppycrawl%2Ftools%2Fcheckstyle%2Fchecks%2Fsizes+filename%3Amessages*.properties+repo%3Acheckstyle%2Fcheckstyle+%22too.many.privateMethods%22">
            too.many.privateMethods</a>
          </li>
          <li>
            <a href="https://github.com/search?q=path%3Asrc%2Fmain%2Fresources%2Fcom%2Fpuppycrawl%2Ftools%2Fcheckstyle%2Fchecks%2Fsizes+filename%3Amessages*.properties+repo%3Acheckstyle%2Fcheckstyle+%22too.many.protectedMethods%22">
            too.many.protectedMethods</a>
          </li>
          <li>
            <a href="https://github.com/search?q=path%3Asrc%2Fmain%2Fresources%2Fcom%2Fpuppycrawl%2Ftools%2Fcheckstyle%2Fchecks%2Fsizes+filename%3Amessages*.properties+repo%3Acheckstyle%2Fcheckstyle+%22too.many.publicMethods%22">
            too.many.publicMethods</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" id="MethodCount_Package">
        <p>
          com.puppycrawl.tools.checkstyle.checks.sizes
        </p>
      </subsection>

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

    <section name="MethodLength">
      <p>Since Checkstyle 3.0</p>
      <subsection name="Description" id="MethodLength_Description">
        <p>
          Checks for long methods and constructors.
        </p>

        <p>
          Rationale: If a method becomes very long it is hard to
          understand. Therefore long methods should usually be refactored into
          several individual methods that focus on a specific task.
        </p>
      </subsection>

      <subsection name="Properties" id="MethodLength_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>max</td>
              <td>Specify the maximum number of lines allowed.</td>
              <td><a href="property_types.html#integer">Integer</a></td>
              <td><code>150</code></td>
              <td>3.0</td>
            </tr>
            <tr>
              <td>countEmpty</td>
              <td>
                Control whether to count empty lines and single line comments of the
                form <code>//</code>.
              </td>
              <td><a href="property_types.html#boolean">Boolean</a></td>
              <td><code>true</code></td>
              <td>3.2</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#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#METHOD_DEF">
                  METHOD_DEF</a>,
                 <a
                 href="apidocs/com/puppycrawl/tools/checkstyle/api/TokenTypes.html#CTOR_DEF">
                  CTOR_DEF</a>.
              </td>
              <td>3.0</td>
            </tr>
          </table>
        </div>
      </subsection>

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

        <p>
          To configure the check so that it accepts methods with at most 60
          lines:
        </p>
        <source>
&lt;module name="MethodLength"&gt;
  &lt;property name="tokens" value="METHOD_DEF"/&gt;
  &lt;property name="max" value="60"/&gt;
&lt;/module&gt;
        </source>

        <p>
          To configure the check so that it accepts methods with at most 60
          lines, not counting empty lines and single line comments:
        </p>
        <source>
&lt;module name="MethodLength"&gt;
  &lt;property name="tokens" value="METHOD_DEF"/&gt;
  &lt;property name="max" value="60"/&gt;
  &lt;property name="countEmpty" value="false"/&gt;
&lt;/module&gt;
        </source>
      </subsection>

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

      <subsection name="Violation Messages" id="MethodLength_Violation_Messages">
        <ul>
          <li>
            <a href="https://github.com/search?q=path%3Asrc%2Fmain%2Fresources%2Fcom%2Fpuppycrawl%2Ftools%2Fcheckstyle%2Fchecks%2Fsizes+filename%3Amessages*.properties+repo%3Acheckstyle%2Fcheckstyle+%22maxLen.method%22">
            maxLen.method</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" id="MethodLength_Package">
        <p>
          com.puppycrawl.tools.checkstyle.checks.sizes
        </p>
      </subsection>

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

    <section name="OuterTypeNumber">
      <p>Since Checkstyle 5.0</p>
      <subsection name="Description" id="OuterTypeNumber_Description">
        <p>
          Checks for the number of types declared at the <i>outer</i>
          (or <i>root</i>) level in a file.
        </p>

        <p>
          Rationale: It is considered good practice to only define one outer
          type per file.
        </p>
      </subsection>

      <subsection name="Properties" id="OuterTypeNumber_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>max</td>
              <td>Specify the maximum number of outer types allowed.</td>
              <td><a href="property_types.html#integer">Integer</a></td>
              <td><code>1</code></td>
              <td>5.0</td>
            </tr>
          </table>
        </div>
      </subsection>

      <subsection name="Examples" id="OuterTypeNumber_Examples">
        <p>
          To configure the check to accept 1 outer type per file:
        </p>
        <source>
&lt;module name="OuterTypeNumber"/&gt;
        </source>

        <p>
          To configure the check to accept 2 outer types per file:
        </p>
        <source>
&lt;module name="OuterTypeNumber"&gt;
  &lt;property name="max" value="2"/&gt;
&lt;/module&gt;
        </source>

      </subsection>

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

      <subsection name="Violation Messages" id="OuterTypeNumber_Violation_Messages">
        <ul>
          <li>
            <a href="https://github.com/search?q=path%3Asrc%2Fmain%2Fresources%2Fcom%2Fpuppycrawl%2Ftools%2Fcheckstyle%2Fchecks%2Fsizes+filename%3Amessages*.properties+repo%3Acheckstyle%2Fcheckstyle+%22maxOuterTypes%22">
            maxOuterTypes</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" id="OuterTypeNumber_Package">
        <p>
          com.puppycrawl.tools.checkstyle.checks.sizes
        </p>
      </subsection>

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

    <section name="ParameterNumber">
      <p>Since Checkstyle 3.0</p>
      <subsection name="Description" id="ParameterNumber_Description">
        <p>
          Checks the number of parameters of a method or constructor.
        </p>
      </subsection>

      <subsection name="Properties" id="ParameterNumber_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>max</td>
              <td>Specify the maximum number of parameters allowed.</td>
              <td><a href="property_types.html#integer">Integer</a></td>
              <td><code>7</code></td>
              <td>3.0</td>
            </tr>
            <tr>
              <td>ignoreOverriddenMethods</td>
              <td>
                Ignore number of parameters for methods with <code>@Override</code> annotation.
              </td>
              <td><a href="property_types.html#boolean">Boolean</a></td>
              <td><code>false</code></td>
              <td>6.2</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#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#METHOD_DEF">
                  METHOD_DEF</a>,
                <a
                href="apidocs/com/puppycrawl/tools/checkstyle/api/TokenTypes.html#CTOR_DEF">
                  CTOR_DEF</a>.
              </td>
              <td>3.0</td>
            </tr>
          </table>
        </div>
      </subsection>

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

        <p>
          To configure the check to allow 10 parameters for a method:
        </p>
        <source>
&lt;module name="ParameterNumber"&gt;
  &lt;property name="max" value="10"/&gt;
  &lt;property name="tokens" value="METHOD_DEF"/&gt;
&lt;/module&gt;
        </source>
          <p>
              To configure the check to ignore number of parameters for methods with
              <code>@Override</code> or <code>@java.lang.Override annotation</code>.
          </p>
          <p>
              Rationale: developer may need to override method with many parameters from
              3-rd party library.
              In this case developer has no control over number of parameters.
          </p>
          <source>
&lt;module name="ParameterNumber"&gt;
  &lt;property name="ignoreOverriddenMethods" value="true"/&gt;
&lt;/module&gt;
          </source>
          <p>
              Java code example:
          </p>
          <source>
@Override
public void needsLotsOfParameters(int a,
    int b, int c, int d, int e, int f, int g, int h) {
    ...
}
          </source>
      </subsection>

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

      <subsection name="Violation Messages" id="ParameterNumber_Violation_Messages">
        <ul>
          <li>
            <a href="https://github.com/search?q=path%3Asrc%2Fmain%2Fresources%2Fcom%2Fpuppycrawl%2Ftools%2Fcheckstyle%2Fchecks%2Fsizes+filename%3Amessages*.properties+repo%3Acheckstyle%2Fcheckstyle+%22maxParam%22">
            maxParam</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" id="ParameterNumber_Package">
        <p>
          com.puppycrawl.tools.checkstyle.checks.sizes
        </p>
      </subsection>

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

  </body>
</document>
