検証環境
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; } }