Checkstyle Javaルール

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

MissingOverride

CheckStyle公式ドキュメント

検証環境

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


チェック概要

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

アノテーション@OverrideJavadocタグの@inheritDocいずれかが存在する場合、それらの両方が存在することをチェックする。
無効なメソッド(例:プライベートメソッド、staticメソッド)で@inheritDocを使用すると、このチェックで違反となる。

Java5とJava6以降では、@Overrideアノテーションに若干の違いがある。
Java5では、インターフェイスからオーバーライドされたメソッドは@Overrideアノテーションを付けることができないが、Java6以降では許可されている。
Java5の@Overrideの動作でチェックを行いたい場合はプロパティ「javaFiveCompatibility」にtrueを設定する。このプロパティはJava5のソース上でのみ使用することを推奨する。

プロパティ

プロパティ デフォルト値 説明 追加バージョン
javaFiveCompatibility boolean false Java5互換モードを有効にするかどうか 5.0

設定+チェック実行結果

プロパティ設定なし

設定ファイル記述方法

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

チェック実行例

public class MyClass {
    // OK
    /** {@inheritDoc} */
    @Override
    public void test1(){
    }

    // NG @Overrideがない
    /** {@inheritDoc} */
    public void test2(){
    }

    // NG privateメソッドで{@inheritDoc}を使用している
    /** {@inheritDoc} */
    private void test3(){
    }

    // NG staticメソッドで{@inheritDoc}を使用している
    /** {@inheritDoc} */
    public static void test4(){
    }
}

プロパティ設定あり

javaFiveCompatibility

trueを設定した場合、Java5の@Overrideの動作でチェックを行う。

設定ファイル記述方法

<module name="Checker">
    <module name="TreeWalker">
        <module name = "MissingOverride">
            <property name="javaFiveCompatibility" value="true"/>
        </module>
    </module>
</module>

チェック実行例

プロパティはJava5使用時以外はtrueに設定するべきではないので省略。