Checkstyle Javaルール

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

EqualsAvoidNull

CheckStyle公式ドキュメント

検証環境

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);