検証環境
Checkstyleバージョン:10.3.3
Javaバージョン:17
チェック概要
チェック追加バージョン |
---|
Checkstyle 5.0 |
Stringのequals()メソッド呼び出し時にnullでない値が呼び元となっていることをチェックする。
あるフィールドに割り当てられたStringリテラル(someString.equals(otherString = "text")
など)をチェックする。
String リテラルに対してequals()メソッドを呼び出すと、NullPointerException の可能性を回避できる。
また、等値比較の直前にNullチェックを行うことはよくあるが、このルールに従えばそのようなチェックは不要となる。
プロパティ
プロパティ | 型 | デフォルト値 | 説明 | 追加バージョン |
---|---|---|---|---|
ignoreEqualsIgnoreCase | boolean | false | String.equalsIgnoreCase(String)呼び出しの場合を無視するかどうか | 5.4 |
設定+チェック実行結果
プロパティ設定なし
設定ファイル記述方法
<module name="Checker"> <module name="TreeWalker"> <module name="EqualsAvoidNull"/> </module> </module>
チェック実行例
String nullString = null; // NG nullかもしれない値が呼び元になっている nullString.equals("String"); // OK "String".equals(nullString); // NG nullかもしれない値が呼び元になっている nullString.equalsIgnoreCase("String"); // OK "String".equalsIgnoreCase(nullString);
プロパティ設定あり
ignoreEqualsIgnoreCase
trueを設定した場合、String.equalsIgnoreCase(String)
呼び出しの場合を無視する(デフォルト:false)
設定ファイル記述方法
<module name="Checker"> <module name="TreeWalker"> <module name="EqualsAvoidNull"> <property name="ignoreEqualsIgnoreCase" value="true"/> </module> </module> </module>
チェック実行例
String nullString = null; // NG nullかもしれない値が呼び元になっている nullString.equals("String"); // OK "String".equals(nullString); // OK 「ignoreEqualsIgnoreCase=true」なのでequalsIgnoreCase(String)の呼び出しはチェックされない nullString.equalsIgnoreCase("String"); // OK "String".equalsIgnoreCase(nullString);