MethodCount
検証環境
Checkstyleバージョン:10.3.3
Javaバージョン:17
チェック概要
チェック追加バージョン |
---|
Checkstyle 5.3 |
各クラスやインターフェースで宣言されているメソッドの数を、アクセス修飾子ごともしくは総数でチェックする。
このチェックは、クラスが複雑になりすぎないように、メソッドを多く定義しているクラスにフラグを立てるように設定することができる。型定義に含まれるメソッドの総数が多すぎないようにしたり (maxTotal)、特定のアクセス修飾子 (private, package, protected, public) のメソッドの数が多すぎないようにするなど、カウントをカスタマイズすることが可能。
各カウントは完全に分離されており、それぞれのメソッドをいくつまで許可するかをカスタマイズすることができる。
たとえば、maxTotalを10と指定した場合、8個のパブリックメソッドがあっても違反にはならないが、さらに3個のプライベートメソッドやパッケージのプライベートメソッドがある場合はmaxTotalに設定した10を超えるので違反となる。
匿名クラスで定義されたメソッドは集計の対象にはならない。カウントはメインの型宣言の親に対してのみ行われ、その子の内部型とは別に管理される。
プロパティ
プロパティ | 型 | デフォルト値 | 説明 | 追加バージョン |
---|---|---|---|---|
maxTotal | int | 100 | メソッドの最大数 | 5.3 |
maxPrivate | int | 100 | privateメソッドの最大数 | 5.3 |
maxPackage | int | 100 | package-privateメソッドの最大数 | 5.3 |
maxProtected | int | 100 | protectedメソッドの最大数 | 5.3 |
maxPublic | int | 100 | publicメソッドの最大数 | 5.3 |
tokens | トークンの サブセット | CLASS_DEF, ENUM_CONSTANT_DEF, ENUM_DEF, INTERFACE_DEF, ANNOTATION_DEF, RECORD_DEF |
チェック対象のトークン | 5.3 |
〇トークンのサブセットには以下の値が設定可能
値 | 説明 |
---|---|
CLASS_DEF | クラス宣言 |
ENUM_CONSTANT_DEF | Enum定数宣言 |
ENUM_DEF | Enum宣言 |
INTERFACE_DEF | インターフェース宣言 |
ANNOTATION_DEF | アノテーション宣言 |
RECORD_DEF | レコード宣言 |
設定+チェック実行結果
プロパティ設定なし
設定ファイル記述方法
<module name="Checker"> <module name="TreeWalker"> <module name="MethodCount"/> </module> </module>
チェック実行例
// プロパティに設定した値よりも多くのメソッドを宣言した場合NGとなる public class MyClass { public void foo(){ } public int bar(){ return 1; } public String print(){ return "a"; } }
プロパティ設定あり
maxTotal
すべてのスコープレベルで許可されるメソッドの最大数。デフォルト:100
設定ファイル記述方法
<module name="Checker"> <module name="TreeWalker"> <module name="MethodCount"> <property name="maxTotal" value="2"/> </module> </module> </module>
maxPrivate
プライベートメソッドの最大数。デフォルト:100
設定ファイル記述方法
<module name="Checker"> <module name="TreeWalker"> <module name="MethodCount"> <property name="maxPrivate" value="2"/> </module> </module> </module>
maxPackage
パッケージプライベートメソッドの最大数。デフォルト:100
設定ファイル記述方法
<module name="Checker"> <module name="TreeWalker"> <module name="MethodCount"> <property name="maxPackage" value="2"/> </module> </module> </module>
maxProtected
プロテクトメソッドの最大数。デフォルト:100
設定ファイル記述方法
<module name="Checker"> <module name="TreeWalker"> <module name="MethodCount"> <property name="maxProtected" value="2"/> </module> </module> </module>
maxPublic
パブリックメソッドの最大数。デフォルト:100
設定ファイル記述方法
<module name="Checker"> <module name="TreeWalker"> <module name="MethodCount"> <property name="maxPublic" value="2"/> </module> </module> </module>
tokens
チェック対象のトークンをコンマ区切りで指定する
設定ファイル記述方法
<module name="Checker"> <module name="TreeWalker"> <module name="MethodCount"> <property name="tokens" value="CLASS_DEF"/> </module> </module> </module>