AbbreviationAsWordInName
検証環境
Checkstyleバージョン:10.8.0
Javaバージョン:17
チェック概要
チェック追加バージョン |
---|
Checkstyle 5.8 |
識別子名に含まれる略語(連続した大文字)の長さを検証する。
キャメルケースの命名を強制することも可能である。名前に長い略語を使わない方法については、Googleスタイルガイドを参照。
_
は識別子名の単語区切り文字とみなされる。
allowedAbbreviationLengthは、識別子で使用できる連続した大文字の数を指定する。値に3を設定した場合、最大4つの連続した大文字が許可されることを示す。すなわち、MyTEST
は許可されるが、MyTESTS
はチェックNGとなる。
値に0を設定した場合、連続する大文字が1つだけ許されることを示す。これは、厳密なキャメルケースを強制するために使用される。この場合、MyTest
は許されるが、MyTEst
はチェックNGとなる。
ignoreFinal、ignoreStatic、ignoreStaticFinal は、それぞれの修飾子を持つ変数を無視するかどうかを制御する。
staticとfinalの両方を持つ変数は、ignoreFinalとignoreStaticの値にかかわらず、常にignoreStaticFinalのみで考慮されることに注意すること。例えば、ignoreStaticがtrueでignoreStaticFinalがfalseの場合、static finalな変数は無視されないことになる。
プロパティ
プロパティ | 型 | デフォルト値 | 説明 | 追加バージョン |
---|---|---|---|---|
allowedAbbreviationLength | int | 3 | 対象となる識別子(クラス,インターフェース,変数名,メソッド名の略称など)に使用できる連続した大文字の数 | 5.8 |
allowedAbbreviations | String[] |
{} | チェック対象外とする変数名・クラス名など | 5.8 |
ignoreFinal | boolean | true | final修飾子のついた変数のチェックをスキップするかどうか | 5.8 |
ignoreStatic | boolean | true | static修飾子のついた変数のチェックをスキップするかどうか | 5.8 |
ignoreStaticFinal | boolean | true | static final修飾子のついた変数のチェックをスキップするかどうか | 8.32 |
ignoreOverriddenMethods | boolean | true | @Overrideのついたメソッドのチェックをスキップするかどうか | 5.8 |
tokens | トークンの サブセット | CLASS_DEF, INTERFACE_DEF, ENUM_DEF, ANNOTATION_DEF, ANNOTATION_FIELD_DEF, PARAMETER_DEF, VARIABLE_DEF, METHOD_DEF, PATTERN_VARIABLE_DEF, RECORD_DEF, RECORD_COMPONENT_DEF |
チェック対象のトークン | 5.8 |
〇トークンのサブセットには以下の値が設定可能
値 | 説明 |
---|---|
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 | レコードコンポーネント宣言 |
設定+チェック実行結果
プロパティ設定なし
設定ファイル記述方法
<module name="Checker"> <module name="TreeWalker"> <module name="AbbreviationAsWordInName"/> </module> </module>
チェック実行例
public class MyClass extends SuperClass { // NG 大文字を連続して4文字以上使用している int CURRENT_COUNTER; // OK staticフィールドはチェック対象外 static int GLOBAL_COUNTER; // OK finalフィールドはチェック対象外 final Set<String> stringsFOUND = new HashSet<>(); // OK @Overrideメソッドは対象外 @Override void printCOUNTER() { System.out.println(CURRENT_COUNTER); } // NG 大文字を連続して4文字以上使用している void incrementCOUNTER() { CURRENT_COUNTER++; } // NG 大文字を連続して4文字以上使用している static void incrementGLOBAL() { GLOBAL_COUNTER++; } }
プロパティ設定あり
allowedAbbreviationLength
対象となる識別子(クラス,インターフェース,変数名,メソッド名の略称など)に使用できる連続した大文字の数
デフォルト:3
設定ファイル記述方法
<module name="Checker"> <module name="TreeWalker"> <module name="AbbreviationAsWordInName"> <property name="allowedAbbreviationLength" value="1"/> </module> </module> </module>
チェック実行例
public class MyClass extends SuperClass { // NG 大文字を連続して2文字以上使用している int CURRENT_COUNTER; // OK staticフィールドはチェック対象外 static int GLOBAL_COUNTER; // OK finalフィールドはチェック対象外 final Set<String> stringsFOUND = new HashSet<>(); // OK @Overrideメソッドは対象外 @Override void printCOUNTER() { System.out.println(CURRENT_COUNTER); } // NG 大文字を連続して2文字以上使用している void incrementCOUnter() { CURRENT_COUNTER++; } // OK static void incrementGLobal() { GLOBAL_COUNTER++; } }
allowedAbbreviations
チェック対象外とする変数名・クラス名など
設定ファイル記述方法
<module name="Checker"> <module name="TreeWalker"> <module name="AbbreviationAsWordInName"> <property name="allowedAbbreviations" value="COUNTER"/> </module> </module> </module>
チェック実行例
public class MyClass extends SuperClass { // NG 大文字を連続して4文字以上使用している int CURRENT_COUNTER; // OK staticフィールドはチェック対象外 static int GLOBAL_COUNTER; // OK finalフィールドはチェック対象外 final Set<String> stringsFOUND = new HashSet<>(); // OK @Overrideメソッドは対象外 @Override void printCOUNTER() { System.out.println(CURRENT_COUNTER); } // OK 「COUNTER」はチェック対象外 void incrementCOUNTER() { CURRENT_COUNTER++; } // OK static void incrementGLobal() { GLOBAL_COUNTER++; } }
ignoreFinal
final修飾子のついた変数のチェックをスキップするかどうか
デフォルト:true
設定ファイル記述方法
<module name="Checker"> <module name="TreeWalker"> <module name="AbbreviationAsWordInName"> <property name="ignoreFinal" value="false"/> </module> </module> </module>
チェック実行例
public class MyClass extends SuperClass { // NG 大文字を連続して4文字以上使用している int CURRENT_COUNTER; // OK staticフィールドはチェック対象外 static int GLOBAL_COUNTER; // NG 「ignoreFinal=false」なので、大文字を連続して4文字以上使用しているとNG final Set<String> stringsFOUND = new HashSet<>(); // OK static finalフィールドはチェック対象外 static final int AGE_COUNTER; // OK @Overrideメソッドは対象外 @Override void printCOUNTER() { System.out.println(CURRENT_COUNTER); } // NG 大文字を連続して4文字以上使用している void incrementCOUNTER() { CURRENT_COUNTER++; } // NG 大文字を連続して4文字以上使用している static void incrementGLOBAL() { GLOBAL_COUNTER++; } }
ignoreStatic
static修飾子のついた変数のチェックをスキップするかどうか
デフォルト:true
設定ファイル記述方法
<module name="Checker"> <module name="TreeWalker"> <module name="AbbreviationAsWordInName"> <property name="ignoreStatic" value="false"/> </module> </module> </module>
チェック実行例
public class MyClass extends SuperClass { // NG 大文字を連続して4文字以上使用している int CURRENT_COUNTER; // NG 「ignoreStatic=false」なので、大文字を連続して4文字以上使用しているとNG static int GLOBAL_COUNTER; // OK finalフィールドはチェック対象外 final Set<String> stringsFOUND = new HashSet<>(); // OK static finalフィールドはチェック対象外 static final int AGE_COUNTER; // OK @Overrideメソッドは対象外 @Override void printCOUNTER() { System.out.println(CURRENT_COUNTER); } // NG 大文字を連続して4文字以上使用している void incrementCOUNTER() { CURRENT_COUNTER++; } // NG 大文字を連続して4文字以上使用している static void incrementGLOBAL() { GLOBAL_COUNTER++; } }
ignoreStaticFinal
static final修飾子のついた変数のチェックをスキップするかどうか
デフォルト:true
設定ファイル記述方法
<module name="Checker"> <module name="TreeWalker"> <module name="AbbreviationAsWordInName"> <property name="ignoreStaticFinal" value="false"/> </module> </module> </module>
チェック実行例
public class MyClass extends SuperClass { // NG 大文字を連続して4文字以上使用している int CURRENT_COUNTER; // OK staticフィールドはチェック対象外 static int GLOBAL_COUNTER; // OK finalフィールドはチェック対象外 final Set<String> stringsFOUND = new HashSet<>(); // NG 「ignoreStaticFinal=false」なので、大文字を連続して4文字以上使用しているとNG static final int AGE_COUNTER; // OK @Overrideメソッドは対象外 @Override void printCOUNTER() { System.out.println(CURRENT_COUNTER); } // NG 大文字を連続して4文字以上使用している void incrementCOUNTER() { CURRENT_COUNTER++; } // NG 大文字を連続して4文字以上使用している static void incrementGLOBAL() { GLOBAL_COUNTER++; } }
ignoreOverriddenMethods
@Overrideのついたメソッドのチェックをスキップするかどうか
デフォルト:true
設定ファイル記述方法
<module name="Checker"> <module name="TreeWalker"> <module name="AbbreviationAsWordInName"> <property name="ignoreOverriddenMethods" value="false"/> </module> </module> </module>
チェック実行例
public class MyClass extends SuperClass { // NG 大文字を連続して4文字以上使用している int CURRENT_COUNTER; // OK staticフィールドはチェック対象外 static int GLOBAL_COUNTER; // OK finalフィールドはチェック対象外 final Set<String> stringsFOUND = new HashSet<>(); // OK static finalフィールドはチェック対象外 static final int AGE_COUNTER; // 「ignoreOverriddenMethods=false」なので、大文字を連続して4文字以上使用しているとNG @Override void printCOUNTER() { System.out.println(CURRENT_COUNTER); } // NG 大文字を連続して4文字以上使用している void incrementCOUNTER() { CURRENT_COUNTER++; } // NG 大文字を連続して4文字以上使用している static void incrementGLOBAL() { GLOBAL_COUNTER++; } }
tokens
チェック対象のトークンをコンマ区切りで指定する。
設定ファイル記述方法
<module name="Checker"> <module name="TreeWalker"> <module name="AbbreviationAsWordInName"> <property name="tokens" value="METHOD_DEF"/> </module> </module> </module>
チェック実行例
public class MyClass extends SuperClass { // OK チェック対象がメソッド定義のみなのでOK int CURRENT_COUNTER; // OK staticフィールドはチェック対象外 static int GLOBAL_COUNTER; // OK finalフィールドはチェック対象外 final Set<String> stringsFOUND = new HashSet<>(); // OK @Overrideメソッドは対象外 @Override void printCOUNTER() { System.out.println(CURRENT_COUNTER); } // NG 大文字を連続して4文字以上使用している void incrementCOUNTER() { CURRENT_COUNTER++; } // NG 大文字を連続して4文字以上使用している static void incrementGLOBAL() { GLOBAL_COUNTER++; } }
1月末から仕事繁忙期になってしまい投稿が久々になってしまってすみません・・・