Checkstyle Javaルール

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

MissingDeprecated

CheckStyle公式ドキュメント

検証環境

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


チェック概要

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

アノテーション@DeprecatedJavadocタグの@deprecatedいずれかが存在する場合、それらの両方が存在することをチェックする。

パッケージへの非推奨の記述はアノテーションJavadoc両方を必須としない例外的なものであるが、使用するJDKのバージョンによって、package-info.javaに記述したパッケージの@Deprecatedがエラーとなるか、チェックOKとなるかは異なる。

チェックとして検出したくない場合は、SuppressionSingleFilterでpackage-info.javaはチェック対象外となるように設定する。

以下はフィルターの記述例である。

<module name="SuppressionSingleFilter">
    <property name="checks" value="MissingDeprecatedCheck"/>
    <property name="files" value="package-info\.java"/>
</module>

プロパティ

プロパティ デフォルト値 説明 追加バージョン
violateExecutionOnNonTightHtml boolean false チェック対象のJavadocTight-HTML Rulesに違反している場合に違反の表示を制御するかどうか 8.24

設定+チェック実行結果

プロパティ設定なし

設定ファイル記述方法

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

チェック実行例

public class MyClass {
    // OK Javadocコメントがないためチェック対象外
    @Deprecated
    public static final int MY_CONST = 13;

    // OK
    /**
     * @deprecated
     * <p></p>
     */
    @Deprecated
    public static final int NUM = 123456;

    // OK
    /**
     * @deprecated
     *  <p>
     */
    @Deprecated
    public static final int CONST = 12;

    // NG Javadocに@deprecatedが必要
    /** This javadoc is missing deprecated tag. */
    @Deprecated
    public static final int COUNTER = 10;
}

プロパティ設定あり

violateExecutionOnNonTightHtml

trueを設定した場合、Javadoc内に記述したHTMLタグに不適切な使用方法をしているものがあった場合に検出する(デフォルト:false)。

設定ファイル記述方法

<module name="Checker">
    <module name="TreeWalker">
        <module name = "MissingDeprecated">
            <property name="violateExecutionOnNonTightHtml" value="true"/>
        </module>
    </module>
</module>

チェック実行例

public class MyClass {
    // OK Javadocコメントがないためチェック対象外
    @Deprecated
    public static final int MY_CONST = 13;

    // OK
    /**
     * @deprecated
     * <p></p>
     */
    @Deprecated
    public static final int NUM = 123456;

    // NG <p>の閉じタグがないとNG
    /**
     * @deprecated
     *  <p>
     */
    @Deprecated
    public static final int CONST = 12;

    // NG Javadocに@deprecatedが必要
    /** This javadoc is missing deprecated tag. */
    @Deprecated
    public static final int COUNTER = 10;
}