検証環境
Checkstyleバージョン:10.3.3
Javaバージョン:17
チェック概要
値が変更されることのないローカル変数がfinalで宣言されているかどうかをチェックする。
変更されないパラメータがfinalと宣言されているかどうかもチェックするように設定することができる。
パラメータをチェックするように設定した場合、インターフェースや抽象クラスの抽象メソッドのパラメータは無視される。
チェック追加バージョン |
---|
Checkstyle 3.2 |
プロパティ
プロパティ | 型 | デフォルト値 | 説明 | 追加バージョン |
---|---|---|---|---|
validateEnhancedForLoopVariable | boolean | false | 拡張for文の変数をチェックするかどうか | 6.5 |
tokens | トークンのサブセット | VARIABLE_DEF | チェック対象のトークン | 3.2 |
〇トークンのサブセットには以下の値が設定可能
値 | 説明 |
---|---|
PARAMETER_DEF | パラメータ宣言 |
VARIABLE_DEF | ローカル変数・フィールド宣言 |
設定+チェック実行結果
プロパティ設定なし
設定ファイル記述方法
<module name="Checker"> <module name="TreeWalker"> <module name="FinalLocalVariable"/> </module> </module>
チェック実行例
public class MyClass { // OK パラメータはチェック対象外 static int foo(int x, int y) { return x + y; } public static void main (String []args) { // OK 拡張for文の変数はチェック対象外 for (String i : args) { System.out.println(i); } // NG resultは値が変更されないのでfinalを付与する int result = foo(1, 2); } }
プロパティ設定あり
validateEnhancedForLoopVariable
trueを設定した場合、拡張for文の変数をチェックする(デフォルト:false)
設定ファイル記述方法
<module name="Checker"> <module name="TreeWalker"> <module name="FinalLocalVariable"> <property name="validateEnhancedForLoopVariable" value="true"/> </module> </module> </module>
チェック実行例
public class MyClass { // OK パラメータはチェック対象外 static int foo(int x, int y) { return x + y; } public static void main (String []args) { // NG 「validateEnhancedForLoopVariable=true」なので // finalがないとチェックNG for (String i : args) { System.out.println(i); } // NG resultは値が変更されないのでfinalを付与する int result = foo(1, 2); } }
tokens
チェック対象のトークンをコンマ区切りで指定する。
設定ファイル記述方法
<module name="Checker"> <module name="TreeWalker"> <module name="FinalLocalVariable"> <property name="tokens" value="VARIABLE_DEF,PARAMETER_DEF"/> </module> </module> </module>
チェック実行例
public class MyClass { // NG パラメータもチェック対象なので、変更されない場合はfinalを付与する static int foo(int x, int y) { return x + y; } public static void main (String []args) { // OK 拡張for文の変数はチェック対象外 for (String i : args) { System.out.println(i); } // NG resultは値が変更されないのでfinalを付与する int result = foo(1, 2); } }