サイズに関するチェック。
親モジュール | TreeWalker |
---|---|
実装クラス | com.puppycrawl.tools.checkstyle.checks.sizes.FileLengthCheck |
Since | 3.2 |
メソッドなどのメンバ内に存在する文の数をチェックします。
プロパティ名 | 型 | デフォルト | 概要 |
max | Integer | 30 | 認める最大の文の数 |
tokens | CTOR_DEF, METHOD_DEF, INSTANCE_INIT, STATIC_INIT | すべて | チェックする対象のメンバ |
<module name = "ExecutableStatementCount"> <property name = "max" value = "45" /> <property name = "tokens" value = "METHOD_DEF" /> </module>
親モジュール | TreeWalker |
---|---|
実装クラス | com.puppycrawl.tools.checkstyle.checks.FileLengthCheck(≦3.1) com.puppycrawl.tools.checkstyle.checks.sizes.FileLengthCheck(3.2) |
ソースファイルの行数がある一定上でないかをチェックします。
Rationale: ソースコードがとても長かった場合は、理解するのが難しい。そのため、長いクラスは通常、限定された仕事にフォーカスするように幾つかの個別のクラスにリファクタリングすべきです。
プロパティ名 | 型 | デフォルト | 概要 |
max | Integer | 2000 | 1ファイルの行数と認める最大の行数 |
<module name = "FileLength"> <property name = "max" value = "1500" /> </module>
<rule-configuration classname = "com.puppycrawl.tools.checkstyle.checks.FileLengthCheck" severity = "warning"> <config-properties> <config-property name = "max" value = "1500" /> </config-properties> </rule-configuration>
親モジュール | TreeWalker |
---|---|
実装クラス | com.puppycrawl.tools.checkstyle.checks.LineLengthCheck(≦3.1) com.puppycrawl.tools.checkstyle.checks.sizes.LineLengthCheck(3.2) |
一行の文字数が、ある一定以上ではないかをチェックします。
Rationale: 長い行は、ソースコードをプリントアウトときや開発者が制限された画面上(例えば、IDEではプロジェクトツリーやクラス階層図などの追加情報が表示されています)で見る場合は読みづらいものです。
プロパティ名 | 型 | デフォルト | 概要 |
ignorePattern | Regular Expression | ^$ | チェックを無視する行を指定 |
max | Integer | 80 | 1行の文字数と認める最大文字数 |
<module name = "LineLength"> <property name = "ignorePattern" value = "^ *\*" /> <property name = "max" value = "80" /> </module>
<rule-configuration classname = "com.puppycrawl.tools.checkstyle.checks.LineLengthCheck" severity = "warning"> <config-properties> <config-property name = "ignorePattern" value = "^ *\*" /> <config-property name = "max" value = "80" /> </config-properties> </rule-configuration>
親モジュール | TreeWalker |
---|---|
実装クラス | com.puppycrawl.tools.checkstyle.checks.MethodLengthCheck(≦3.1) com.puppycrawl.tools.checkstyle.checks.sizes.MethodLengthCheck(3.2) |
メソッド及びコンストラクタの定義に含まれる行数をチェックします。
Rationale: メソッドがとても長かったら、理解するのが難しくなります。そのため、長いメソッドは通常、限定された仕事にフォーカスするように幾つかの個別のメソッドにリファクタリングすべきです。
プロパティ名 | 型 | デフォルト | 概要 |
max | Integer | 150 | メソッド定義内に含まれる最大行数 |
countEmpty | Boolean | true | (Since 3.2)行コメントを空行としてカウントするかどうか |
tokens | METHOD_DEF, CTOR_DEF | すべて | チェックする対象 |
<module name = "MethodLength"> <property name = "max" value = "100" /> <property name = "tokens" value = "METHOD_DEF" /> </module>
<rule-configuration classname = "com.puppycrawl.tools.checkstyle.checks.MethodLengthCheck" severity = "warning"> <config-properties> <config-property name = "max" value = "100" /> <config-property name = "tokens" value = "METHOD_DEF" /> </config-properties> </rule-configuration>
親モジュール | TreeWalker |
---|---|
実装クラス | com.puppycrawl.tools.checkstyle.checks.sizes.AnonInnerLengthCheck |
Since | 3.2 |
無名クラスの定義内に含まれる行数をチェックします。
Rationale: 無名クラスの定義が恐ろしく長かったら、理解が難しくなり、メソッド内の処理の流れを追うことが困難になります。そのため、長い無名クラスは名前を持ったクラスにするようにリファクタリングすべきなのです。詳しくは、Bloch の Effective Java の P.93 を。
プロパティ名 | 型 | デフォルト | 概要 |
max | Integer | 20 | 含まれる最大行数 |
<module name = "AnonInnerLength"> <property name = "max" value = "30" /> </module>
親モジュール | TreeWalker |
---|---|
実装クラス | com.puppycrawl.tools.checkstyle.checks.ParameterNumberCheck(≦3.1) com.puppycrawl.tools.checkstyle.checks.sizes.ParameterNumberCheck(3.2) |
メソッド及びコンストラクタのパラメータの数をチェックします。
プロパティ名 | 型 | デフォルト | 概要 |
max | Integer | 7 | パラメータの最大数 |
tokens | METHOD_DEF, CTOR_DEF | すべて | チェックする対象 |
<module name = "MethodLength"> <property name = "max" value = "5" /> <property name = "tokens" value = "METHOD_DEF" /> </module>
<rule-configuration classname = "com.puppycrawl.tools.checkstyle.checks.MethodLengthCheck" severity = "warning"> <config-properties> <config-property name = "max" value = "5" /> <config-property name = "tokens" value = "METHOD_DEF" /> </config-properties> </rule-configuration>
<module name = "MethodLength"> <property name = "max" value = "2" /> </module>
としたとき、以下のようになる。
OK! public void setAttribute(String name, String[] values) { Boo! public void setAttribute(String name, String value1, String value2) {