Checkstyle Javaルール

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

SuppressWarningsHolder

CheckStyle公式ドキュメント

検証環境

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


チェック概要

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

SuppressWarningsアノテーションを使用して、Checkstyleのチェック抑制を許可するチェックのセットを保持する。
これにより、@SuppressWarningsと除外するチェックの名前を使用してアノテーションが付与されたコードの部分から、Checkstyleが違反を報告するのを防ぐ。

SuppressWarningsアノテーションの引数に「all」を指定することで、全てのCheckstyleの警告を抑制することができる。
また、「checkstyle:」というプレフィックスをつけることで、コンパイラがこれらのアノテーションを処理しないようにすることもできる。
また、チェックを抑制させたいチェック名のエイリアスを定義することも可能。

@SuppressWarningsの引数とチェックのクラス名とのマッチングは、アルファベットの大文字と小文字の区別なく行われる。「check」のサフィックスを付加していてもマッチングされる。

プロパティ

プロパティ デフォルト値 説明 追加バージョン
aliasList カンマで区切られた「属性=値」で構成されるString[]
属性はCheckの完全修飾名で、値はその別名
null SuppressWarnings内のコードで使用できるチェック名のエイリアス 5.7

設定+チェック実行結果

プロパティ設定なし

設定ファイル記述方法

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

チェック実行例

// MemberNameCheckを抑制する例
@SuppressWarnings({"membername"})
private int J;

checkstyleプレフィックスを使用した場合でも、コンパイラがこれらのアノテーションを処理しないようにすることができる。

// ConstantNameCheckを抑制する例
@SuppressWarnings("checkstyle:constantname")
private static final int m = 0;

プロパティ設定あり

aliasList

SuppressWarnings内のコードで使用できるチェック名のエイリアスを「属性=値」形式でコンマ区切りで指定する。 属性はCheckの完全修飾名、値は別名を記述する。

設定ファイル記述方法

<module name="Checker">
    <module name="TreeWalker">
        <module name="SuppressWarningsHolder">
            <property name="aliasList" value="com.puppycrawl.tools.checkstyle.checks.sizes.ParameterNumberCheck=paramnum"/>
        </module>
    </module>
</module>

チェック実行例

設定ファイルで記載したエイリアスを記述して、特定のチェックを抑制することができる。

// ParameterNumberCheckを抑制する例
@SuppressWarnings("paramnum")
public void needsLotsOfParameters(@SuppressWarnings("unused") int a, int b, int c, int d, int e, int f, int g, int h) {
}