Checkstyle Javaルール

CheckstyleのJavaルールについて1つずつまとめます

MethodCount

CheckStyle公式ドキュメント

検証環境

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>