Checkstyle Javaルール

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

MemberName

CheckStyle公式ドキュメント

検証環境

Checkstyleバージョン:10.8.0
Javaバージョン:17


チェック概要

チェック追加バージョン
Checkstyle 3.0

インスタンス変数名が指定の正規表現にマッチしているがどうかをチェックする。

プロパティ

プロパティ デフォルト値 説明 追加バージョン
format Pattern "^[a-z][a-zA-Z0-9]*$" 変数名の正規表現 3.0
applyToPublic boolean true publicメンバにチェックを適用するかどうか 3.4
applyToProtected boolean true protectedメンバにチェックを適用するかどうか 3.4
applyToPackage boolean true package-privateメンバにチェックを適用するかどうか 3.4
applyToPrivate boolean true privateメンバにチェックを適用するかどうか 3.4

設定+チェック実行結果

プロパティ設定なし

設定ファイル記述方法

<module name="Checker">
    <module name="TreeWalker">
        <module name="MemberName"/>
    </module>
</module>

チェック実行例

class MyClass {
    // OK
    public int num1;
    // OK
    protected int num2; 
    // OK
    final int num3 = 3; 
    // OK
    private int num4; 
    // OK インスタンス変数ではないのでチェック対象外
    static int num5;
    // OK インスタンス変数ではないのでチェック対象外
    public static final int CONSTANT = 1;

    // NG 変数名の正規表現にマッチしない
    public int NUM1;
    // NG 変数名の正規表現にマッチしない
    protected int NUM2;
    // NG 変数名の正規表現にマッチしない
    final int NUM3;
    // NG 変数名の正規表現にマッチしない
    private int NUM4;
}

プロパティ設定あり

format

変数名の正規表現

設定ファイル記述方法

<module name="Checker">
    <module name="TreeWalker">
        <module name="MemberName">
            <property name="format" value="^m[A-Z][a-zA-Z0-9]*$"/>
        </module>
    </module>
</module>

チェック実行例

class MyClass {
    // NG 変数名の正規表現にマッチしない
    public int num1;
    // NG 変数名の正規表現にマッチしない
    protected int num2;
    // NG 変数名の正規表現にマッチしない
    int num3;
    // NG 変数名の正規表現にマッチしない
    private int num4;
}

applyToPublic

publicメンバにチェックを適用するかどうか
デフォルト:true

設定ファイル記述方法

<module name="Checker">
    <module name="TreeWalker">
        <module name="MemberName">
            <property name="applyToPublic" value="false"/>
        </module>
    </module>
</module>

チェック実行例

class MyClass {
    // OK publicなのでチェック対象外
    public int Num1;
    // NG 変数名の正規表現にマッチしない
    protected int Num2;
    // NG 変数名の正規表現にマッチしない
    int Num3;
    // NG 変数名の正規表現にマッチしない
    private int Num4;
}

applyToProtected

protectedメンバにチェックを適用するかどうか
デフォルト:true

設定ファイル記述方法

<module name="Checker">
    <module name="TreeWalker">
        <module name="MemberName">
            <property name="applyToProtected" value="false"/>
        </module>
    </module>
</module>

チェック実行例

class MyClass {
    // NG 変数名の正規表現にマッチしない
    public int Num1;
    // OK protectedなのでチェック対象外
    protected int Num2;
    // NG 変数名の正規表現にマッチしない
    int Num3;
    // NG 変数名の正規表現にマッチしない
    private int Num4;
}

applyToPackage

package-privateメンバにチェックを適用するかどうか
デフォルト:true

設定ファイル記述方法

<module name="Checker">
    <module name="TreeWalker">
        <module name="MemberName">
            <property name="applyToPackage" value="false"/>
        </module>
    </module>
</module>

チェック実行例

class MyClass {
    // NG 変数名の正規表現にマッチしない
    public int Num1;
    // NG 変数名の正規表現にマッチしない
    protected int Num2;
    // OK applyToPackageなのでチェック対象外
    int Num3;
    // NG 変数名の正規表現にマッチしない
    private int Num4;
}

applyToPrivate

privateメンバにチェックを適用するかどうか
デフォルト:true

設定ファイル記述方法

<module name="Checker">
    <module name="TreeWalker">
        <module name="MemberName">
            <property name="applyToPrivate" value="false"/>
        </module>
    </module>
</module>

チェック実行例

class MyClass {
    // NG 変数名の正規表現にマッチしない
    public int Num1;
    // NG 変数名の正規表現にマッチしない
    protected int Num2;
    // NG 変数名の正規表現にマッチしない
    int Num3;
    // OK applyToPrivateなのでチェック対象外
    private int Num4;
}