Checkstyle Javaルール

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

SuppressWarnings

CheckStyle公式ドキュメント

検証環境

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


チェック概要

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

SuppressWarningsが抑制できない警告を指定する。
設定された警告を抑制できないトークンのリストを指定することもできる。
このチェックでは、@SuppressWarningsアノテーションの属性内に記述された条件文は考慮されない。

デフォルトではtokensプロパティによって指定されない限り、全てのトークンでSuppressWarningsでの警告抑制が禁止される。

プロパティ

プロパティ デフォルト値 説明 追加バージョン
format Pattern "^\s*+$" 警告抑制を禁止させたい正規表現 5.0
tokens トークンの サブセット CLASS_DEF,
INTERFACE_DEF,
ENUM_DEF,
ANNOTATION_DEF,
ANNOTATION_FIELD_DEF,
ENUM_CONSTANT_DEF,
PARAMETER_DEF,
VARIABLE_DEF,
METHOD_DEF,
CTOR_DEF,
COMPACT_CTOR_DEF,
RECORD_DEF
チェック対象のトーク 5.0

トークンのサブセットには以下の値が設定可能

説明
ANNOTATION_DEF アノテーション宣言
ANNOTATION_FIELD_DEF アノテーションフィールドの宣言
CLASS_DEF クラス宣言
COMPACT_CTOR_DEF 引数なしコンストラクタ宣言
CTOR_DEF コンストラクター宣言
ENUM_CONSTANT_DEF Enum定数宣言
ENUM_DEF enum宣言
INTERFACE_DEF インターフェイス宣言
METHOD_DEF メソッド宣言
PARAMETER_DEF パラメータ宣言
RECORD_DEF レコード宣言
VARIABLE_DEF フィールドまたはローカル変数の宣言

設定+チェック実行結果

プロパティ設定なし

設定ファイル記述方法

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

チェック実行例

デフォルトの設定ではSuppressWarningsで警告を抑制するとチェックNGとなる。

public class MyClass {
    // NG 
    @SuppressWarnings("unused") 
    DataLoader loader;

    // NG 
    @SuppressWarnings("unchecked")
    DataLoader loader;

    // NG 
    @SuppressWarnings("unused") 
    public int foo() {
        return 1;
    }
}

プロパティ設定あり

format

SuppressWarningsで警告抑制するのを許可しないパターンを指定する。

設定ファイル記述方法

<module name="Checker">
    <module name="TreeWalker">
        <module name = "SuppressWarnings">
            <property name="format" value="^unchecked$"/>
        </module>
    </module>
</module>

チェック実行例

uncheckedを抑制しているSuppressWarningsはチェックNGとなる。

public class MyClass {
    // OK 
    @SuppressWarnings("unused") 
    DataLoader loader;

    // NG 
    @SuppressWarnings("unchecked")
    DataLoader loader;

    // OK 
    @SuppressWarnings("unused") 
    public int foo() {
        return 1;
    }
}

tokens

チェック対象のトークンをコンマ区切りで記述する。

設定ファイル記述方法

<module name="Checker">
    <module name="TreeWalker">
        <module name = "SuppressWarnings">
            <property name="tokens" value="METHOD_DEF"/>
        </module>
    </module>
</module>

チェック実行例

メソッド宣言のみがチェック対象となる。

public class MyClass {
    // OK 
    @SuppressWarnings("unused") 
    DataLoader loader;

    // OK
    @SuppressWarnings("unchecked")
    DataLoader loader;

    // NG 
    @SuppressWarnings("unused") 
    public int foo() {
        return 1;
    }
}