checkstyle/src/xdocs/config_sizes.xml

648 lines
19 KiB
XML

<?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">
<properties>
<title>Size Violations</title>
<author>Checkstyle Development Team</author>
</properties>
<head>
<title>Size Violations</title>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
<script type="text/javascript" src="js/anchors.js"></script>
<script type="text/javascript" src="js/google-analytics.js"></script>
</head>
<body>
<section name="ExecutableStatementCount">
<subsection name="Description">
<p>
Restricts the number of executable statements to a specified limit.
</p>
</subsection>
<subsection name="Properties">
<table>
<tr>
<th>name</th>
<th>description</th>
<th>type</th>
<th>default value</th>
</tr>
<tr>
<td>max</td>
<td>the maximum threshold allowed</td>
<td><a href="property_types.html#integer">integer</a></td>
<td><code>30</code></td>
</tr>
<tr>
<td>tokens</td>
<td>members 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>all tokens</td>
</tr>
</table>
</subsection>
<subsection name="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="Package">
<p>
com.puppycrawl.tools.checkstyle.checks.sizes
</p>
</subsection>
<subsection name="Parent Module">
<p>
<a href="config.html#TreeWalker">TreeWalker</a>
</p>
</subsection>
</section>
<section name="FileLength">
<subsection name="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">
<table>
<tr>
<th>name</th>
<th>description</th>
<th>type</th>
<th>default value</th>
</tr>
<tr>
<td>max</td>
<td>maximum allowable number of lines</td>
<td><a href="property_types.html#integer">integer</a></td>
<td>2000</td>
</tr>
<tr>
<td>fileExtensions</td>
<td>file type extension of files to process</td>
<td><a href="property_types.html#stringSet">String Set</a></td>
<td><code>{}</code></td>
</tr>
</table>
</subsection>
<subsection name="Examples">
<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="Package">
<p>
com.puppycrawl.tools.checkstyle.checks.sizes
</p>
</subsection>
<subsection name="Parent Module">
<p>
<a href="config.html#Checker">Checker</a>
</p>
</subsection>
</section>
<section name="LineLength">
<subsection name="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">
<table>
<tr>
<th>name</th>
<th>description</th>
<th>type</th>
<th>default value</th>
</tr>
<tr>
<td>ignorePattern</td>
<td>pattern for lines to ignore</td>
<td><a href="property_types.html#regexp">regular expression</a></td>
<td>^$</td>
</tr>
<tr>
<td>max</td>
<td>maximum allowable line length</td>
<td><a href="property_types.html#integer">integer</a></td>
<td>80</td>
</tr>
</table>
</subsection>
<subsection name="Examples">
<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 &quot; *
&quot;, 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>
</subsection>
<subsection name="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>
Support for the special handling of imports in CheckStyle Version
2 has been dropped as it is a special case of regexp: The user can
set property <code>ignorePattern</code> to <code>^import</code> and achieve the same effect.
</li>
</ul>
</subsection>
<subsection name="Package">
<p>
com.puppycrawl.tools.checkstyle.checks.sizes
</p>
</subsection>
<subsection name="Parent Module">
<p>
<a href="config.html#TreeWalker">TreeWalker</a>
</p>
</subsection>
</section>
<section name="MethodLength">
<subsection name="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">
<table>
<tr>
<th>name</th>
<th>description</th>
<th>type</th>
<th>default value</th>
</tr>
<tr>
<td>max</td>
<td>maximum allowable number of lines</td>
<td><a href="property_types.html#integer">integer</a></td>
<td>150</td>
</tr>
<tr>
<td>countEmpty</td>
<td>
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>
</tr>
<tr>
<td>tokens</td>
<td>blocks 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>
</tr>
</table>
</subsection>
<subsection name="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="Package">
<p>
com.puppycrawl.tools.checkstyle.checks.sizes
</p>
</subsection>
<subsection name="Parent Module">
<p>
<a href="config.html#TreeWalker">TreeWalker</a>
</p>
</subsection>
</section>
<section name="AnonInnerLength">
<subsection name="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">
<table>
<tr>
<th>name</th>
<th>description</th>
<th>type</th>
<th>default value</th>
</tr>
<tr>
<td>max</td>
<td>maximum allowable number of lines</td>
<td><a href="property_types.html#integer">integer</a></td>
<td>20</td>
</tr>
</table>
</subsection>
<subsection name="Examples">
<p>
To configure the check to accept files 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="Package">
<p>
com.puppycrawl.tools.checkstyle.checks.sizes
</p>
</subsection>
<subsection name="Parent Module">
<p>
<a href="config.html#TreeWalker">TreeWalker</a>
</p>
</subsection>
</section>
<section name="ParameterNumber">
<subsection name="Description">
<p>
Checks the number of parameters of a method or constructor.
</p>
</subsection>
<subsection name="Properties">
<table>
<tr>
<th>name</th>
<th>description</th>
<th>type</th>
<th>default value</th>
</tr>
<tr>
<td>max</td>
<td>maximum allowable number of parameters</td>
<td><a href="property_types.html#integer">integer</a></td>
<td>7</td>
</tr>
<tr>
<td>ignoreOverriddenMethods</td>
<td>Ignore number of parameters for methods with @Override annotation</td>
<td><a href="property_types.html#boolean">boolean</a></td>
<td>false</td>
</tr>
<tr>
<td>tokens</td>
<td>declarations 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>
</tr>
</table>
</subsection>
<subsection name="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 @Override or @java.lang.Override annotation.
</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;property name="tokens" value="METHOD_DEF"/&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="Package">
<p>
com.puppycrawl.tools.checkstyle.checks.sizes
</p>
</subsection>
<subsection name="Parent Module">
<p>
<a href="config.html#TreeWalker">TreeWalker</a>
</p>
</subsection>
</section>
<section name="OuterTypeNumber">
<subsection name="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">
<table>
<tr>
<th>name</th>
<th>description</th>
<th>type</th>
<th>default value</th>
</tr>
<tr>
<td>max</td>
<td>maximum allowable number of outer types</td>
<td><a href="property_types.html#integer">integer</a></td>
<td>1</td>
</tr>
</table>
</subsection>
<subsection name="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="Package">
<p>
com.puppycrawl.tools.checkstyle.checks.sizes
</p>
</subsection>
<subsection name="Parent Module">
<p>
<a href="config.html#TreeWalker">TreeWalker</a>
</p>
</subsection>
</section>
<section name="MethodCount">
<subsection name="Description">
<p>
Checks the number of methods declared in each type. This
includes the number of each scope (<code>private</code>,
<code>package</code>, <code>protected</code> and
<code>public</code>) as well as an overall total.
</p>
</subsection>
<subsection name="Properties">
<table>
<tr>
<th>name</th>
<th>description</th>
<th>type</th>
<th>default value</th>
</tr>
<tr>
<td>maxTotal</td>
<td>maximum allowable number of methods at all scope levels</td>
<td><a href="property_types.html#integer">integer</a></td>
<td>100</td>
</tr>
<tr>
<td>maxPrivate</td>
<td>maximum allowable number of <code>private</code> methods</td>
<td><a href="property_types.html#integer">integer</a></td>
<td>100</td>
</tr>
<tr>
<td>maxPackage</td>
<td>maximum allowable number of <code>package</code> methods</td>
<td><a href="property_types.html#integer">integer</a></td>
<td>100</td>
</tr>
<tr>
<td>maxProtected</td>
<td>maximum allowable number of <code>protected</code> methods</td>
<td><a href="property_types.html#integer">integer</a></td>
<td>100</td>
</tr>
<tr>
<td>maxPublic</td>
<td>maximum allowable number of <code>public</code> methods</td>
<td><a href="property_types.html#integer">integer</a></td>
<td>100</td>
</tr>
</table>
</subsection>
<subsection name="Examples">
<p>
To configure the check with defaults:
</p>
<source>
&lt;module name="MethodCount"/&gt;
</source>
<p>
To configure the check to allow at most 30 methods per type:
</p>
<source>
&lt;module name="MethodCount"&gt;
&lt;property name="maxTotal" value="30"/&gt;
&lt;/module&gt;
</source>
</subsection>
<subsection name="Package">
<p>
com.puppycrawl.tools.checkstyle.checks.sizes
</p>
</subsection>
<subsection name="Parent Module">
<p>
<a href="config.html#TreeWalker">TreeWalker</a>
</p>
</subsection>
</section>
</body>
</document>