検証環境
Checkstyleバージョン:10.3.3
Javaバージョン:17
チェック概要
チェック追加バージョン |
---|
Checkstyle 3.2 |
クラスまたはオブジェクトのメンバが明示的にその型のデフォルト値に初期化されているかどうかをチェックする。
オブジェクトの場合はnull、数値型およびcharの場合は0、booleanの場合はfalse。
各インスタンス変数は、同じ値で2回初期化されることになるので非効率。
プロパティ
プロパティ | 型 | デフォルト値 | 説明 | 追加バージョン |
---|---|---|---|---|
onlyObjectReferences | boolean | false | オブジェクトのNULLへの明示的な初期化のみをチェックするかどうか | 7.8 |
設定+チェック実行結果
プロパティ設定なし
設定ファイル記述方法
<module name="Checker"> <module name="TreeWalker"> <module name="ExplicitInitialization"/> </module> </module>
チェック実行例
public class MyClass { // NG intのデフォルト値で明示的に初期化しない private int intField1 = 0; // OK private int intField2 = 1; // OK private int intField3; // NG objectのデフォルト値で明示的に初期化しない private Obj objField1 = null; // OK private Obj objField2 = new Obj(); // OK private Obj objField3; }
プロパティ設定あり
onlyObjectReferences
trueを設定した場合、オブジェクトのNULLへの明示的な初期化のみをチェックする(デフォルト:false)
設定ファイル記述方法
<module name="Checker"> <module name="TreeWalker"> <module name="ExplicitInitialization"> <property name="onlyObjectReferences" value="true"/> </module> </module> </module>
チェック実行例
public class MyClass { // OK 「onlyObjectReferences=true」なのでチェックされない private int intField1 = 0; // OK private int intField2 = 1; // OK private int intField3; // NG objectのデフォルト値で明示的に初期化しない private Obj objField1 = null; // OK private Obj objField2 = new Obj(); // OK private Obj objField3; }