Checkstyle Javaルール

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

IllegalIdentifierName

CheckStyle公式ドキュメント

検証環境

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


チェック概要

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

制限された名前や文脈上のキーワードなど、不正な名前の集合のパターンを持つ識別子をチェックする。
例として、yieldrecord_varなどが挙げられる。
制限キーワードの詳細については、Java言語仕様書参照。
このチェックでは、有効な識別子を正規表現によって指定するため、"$"などの特定の記号や、非アスキー文字の使用を禁止することも可能。

プロパティ

プロパティ デフォルト値 説明 追加バージョン
format Pattern "(?i)^(?!(record|yield|var|permits|sealed|_)$).+$" 識別子として使用不可とするキーワードの正規表現 8.36
tokens トークンのサブセット CLASS_DEF,
INTERFACE_DEF,
ENUM_DEF,
ANNOTATION_DEF,
ANNOTATION_FIELD_DEF,
PARAMETER_DEF,
VARIABLE_DEF,
METHOD_DEF,
ENUM_CONSTANT_DEF,
PATTERN_VARIABLE_DEF,
RECORD_DEF,
RECORD_COMPONENT_DEF,
LAMBDA
チェック対象のトーク 8.36

トークンのサブセットには以下の値が設定可能

説明
CLASS_DEF クラス宣言
INTERFACE_DEF インターフェース宣言
ENUM_DEF Enum宣言
ANNOTATION_DEF アノテーション宣言
ANNOTATION_FIELD_DEF アノテーションフィールド宣言
PARAMETER_DEF パラメータ宣言
VARIABLE_DEF フィールド・ローカル変数宣言
METHOD_DEF メソッド宣言
ENUM_CONSTANT_DEF Enum定数宣言
PATTERN_VARIABLE_DEF パターン変数宣言
RECORD_DEF レコード宣言
RECORD_COMPONENT_DEF レコードコンポーネント宣言
LAMBDA ラムダ式->

設定+チェック実行結果

プロパティ設定なし

設定ファイル記述方法

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

チェック実行例

public class MyClass {
    public static void main(String... args) {
        // NG 「var」は変数名として使用不可
        var var = 4;
        // NG 「record」は変数名として使用不可
        int record = 15;
        // NG 「yield」は変数名として使用不可
        String yield = "yield";
        // OK
        String yieldString = "yieldString";
        // OK
        var variable = 2;
        // NG 「_」は変数名として使用不可
        String _;
    }
}

プロパティ設定あり

format

識別子として使用不可とするキーワードの正規表現

設定ファイル記述方法

<module name="Checker">
    <module name="TreeWalker">
        <module name="IllegalIdentifierName">
            <property name="format" value="(?i)^(?!(record|yield|var|permits|sealed|open|transitive|_)$).+$"/>
        </module>
    </module>
</module>

チェック実行例

public class MyClass {
    public static void main(String... args) {
        // NG 「open」は変数名として使用不可
        int open = 4;
        // NG 「transitive」は変数名として使用不可
        Object transitive = "transitive";
        // OK
        int openInt = 4;
        // OK
        Object transitiveObject = "transitiveObject";
    }
}

tokens

チェック対象のトークンをコンマ区切りで指定する。

設定ファイル記述方法

<module name="Checker">
    <module name="TreeWalker">
        <module name="IllegalIdentifierName">
            <property name="tokens" value="INTERFACE_DEF"/>
        </module>
    </module>
</module>

チェック実行例

public class MyClass {
    public static void main(String... args) {
        // OK フィールドはチェック対象外
        int open = 4;
        // OK フィールドはチェック対象外
        Object transitive = "transitive";
        // OK フィールドはチェック対象外
        int openInt = 4;
        // OK フィールドはチェック対象外
        Object transitiveObject = "transitiveObject";
    }
}