648 lines
19 KiB
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>
|
|
<module name="ExecutableStatementCount"/>
|
|
</source>
|
|
|
|
<p>
|
|
To configure the check with a threshold of 20 for constructor and
|
|
method definitions:
|
|
</p>
|
|
<source>
|
|
<module name="ExecutableStatementCount">
|
|
<property name="max" value="20"/>
|
|
<property name="tokens" value="CTOR_DEF,METHOD_DEF"/>
|
|
</module>
|
|
</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>
|
|
<module name="FileLength">
|
|
<property name="max" value="1500"/>
|
|
</module>
|
|
</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>
|
|
<module name="LineLength">
|
|
<property name="max" value="120"/>
|
|
</module>
|
|
</source>
|
|
|
|
<p>
|
|
To configure the check to ignore lines that begin with " *
|
|
", followed by just one word, such as within a Javadoc comment:
|
|
</p>
|
|
<source>
|
|
<module name="LineLength">
|
|
<property name="ignorePattern" value="^ *\* *[^ ]+$"/>
|
|
</module>
|
|
</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>
|
|
<module name="MethodLength"/>
|
|
</source>
|
|
|
|
<p>
|
|
To configure the check so that it accepts methods with at most 60
|
|
lines:
|
|
</p>
|
|
<source>
|
|
<module name="MethodLength">
|
|
<property name="tokens" value="METHOD_DEF"/>
|
|
<property name="max" value="60"/>
|
|
</module>
|
|
</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>
|
|
<module name="MethodLength">
|
|
<property name="tokens" value="METHOD_DEF"/>
|
|
<property name="max" value="60"/>
|
|
<property name="countEmpty" value="false"/>
|
|
</module>
|
|
</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>
|
|
<module name="AnonInnerLength">
|
|
<property name="max" value="60"/>
|
|
</module>
|
|
</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>
|
|
<module name="ParameterNumber"/>
|
|
</source>
|
|
|
|
<p>
|
|
To configure the check to allow 10 parameters for a method:
|
|
</p>
|
|
<source>
|
|
<module name="ParameterNumber">
|
|
<property name="max" value="10"/>
|
|
<property name="tokens" value="METHOD_DEF"/>
|
|
</module>
|
|
</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>
|
|
<module name="ParameterNumber">
|
|
<property name="ignoreOverriddenMethods" value="true"/>
|
|
<property name="tokens" value="METHOD_DEF"/>
|
|
</module>
|
|
</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>
|
|
<module name="OuterTypeNumber"/>
|
|
</source>
|
|
|
|
<p>
|
|
To configure the check to accept 2 outer types per file:
|
|
</p>
|
|
<source>
|
|
<module name="OuterTypeNumber">
|
|
<property name="max" value="2"/>
|
|
</module>
|
|
</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>
|
|
<module name="MethodCount"/>
|
|
</source>
|
|
|
|
<p>
|
|
To configure the check to allow at most 30 methods per type:
|
|
</p>
|
|
<source>
|
|
<module name="MethodCount">
|
|
<property name="maxTotal" value="30"/>
|
|
</module>
|
|
</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>
|