Checkstyle Javaルール

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

MutableException

CheckStyle公式ドキュメント

検証環境

Checkstyleバージョン:10.3.3
Javaバージョン:17


チェック概要

チェック追加バージョン
Checkstyle 3.2

例外クラスfinalフィールドのみを持つことをチェックする。

Exceptionインスタンスは、エラー状態を表すものでなければならないが、finalでないフィールドを持っていると、状態が誤って変更され元の状態が隠されてしまう可能性や、開発者が誤って初期状態を設定するのを忘れてしまう可能性がある。

プロパティ

プロパティ デフォルト値 説明 追加バージョン
format Pattern "^.*Exception$|^.*Error$|^.*Throwable$" チェック対象の例外クラス名の正規表現 3.2
extended ClassNameFormat Pattern "^.*Exception$|^.*Error$|^.*Throwable$" チェック対象のextendsクラス名の正規表現 6.2

設定+チェック実行結果

プロパティ設定なし

設定ファイル記述方法

<module name="Checker">
    <module name="TreeWalker">
        <module name="MutableException"/>
    </module>
</module>

チェック実行例

// NG フィールドをfinalで宣言する必要がある
public class MyException extends RuntimeException {
    private int errorCode;
    
    public MyException(String message, int errorCode) {
        super(message);
        this.errorCode = errorCode;
    }
}

プロパティ設定あり

format

チェック対象の例外クラス名の正規表現を指定する。

設定ファイル記述方法

<module name="Checker">
    <module name="TreeWalker">
        <module name="MutableException">
            <property name="format" value="^.*Error$|^.*Throwable$"/>
        </module>
    </module>
</module>

チェック実行例

// OK チェック対象外
public class MyException extends RuntimeException {
    private int errorCode;
    
    public MyException(String message, int errorCode) {
        super(message);
        this.errorCode = errorCode;
    }
}

extendedClassNameFormat

チェック対象のextendsクラス名の正規表現を指定する。

設定ファイル記述方法

<module name="Checker">
    <module name="TreeWalker">
        <module name="MutableException">
            <property name="extendedClassNameFormat" value="^.*Error$|^.*Throwable$"/>
        </module>
    </module>
</module>

チェック実行例

// OK チェック対象外
public class MyException extends RuntimeException {
    private int errorCode;
    
    public MyException(String message, int errorCode) {
        super(message);
        this.errorCode = errorCode;
    }
}