Checkstyle Javaルール

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

InterfaceIsType

CheckStyle公式ドキュメント

検証環境

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


チェック概要

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

メソッドを持たず定数のみを含むインタフェースを定義されていないかチェックする。
インターフェースは型を定義するものであるため、メソッドを持たず定数のみを含むインタフェースを定義することは不適切。

デフォルトではマーカーインターフェースはチェック対象外だが、プロパティでマーカーインターフェースもチェック対象とすることもできる。

プロパティ

プロパティ デフォルト値 説明 追加バージョン
allowMarkerInterfaces boolean true マーカインタフェースを許容するかどうか 3.1

設定+チェック実行結果

プロパティ設定なし

設定ファイル記述方法

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

チェック実行例

// NG 定数しか定義されていないのでNG
public interface Test1 {
    int a = 3;
}

// OK 「allowMarkerInterfaces=true」なのでマーカーインターフェースの定義はOK
public interface Test2 {
}

// OK
public interface Test3 {
    int a = 3;
    
    void test();
}

プロパティ設定あり

allowMarkerInterfaces

trueを設定した場合、マーカーインターフェースはチェックの対象外となる。(デフォルト:true)

設定ファイル記述方法

<module name="Checker">
    <module name="TreeWalker">
        <module name="InterfaceIsType">
            <property name="allowMarkerInterfaces" value="false"/>
        </module>
    </module>
</module>
チェック実行例
// NG 定数しか定義されていないのでNG
public interface Test1 {
    int a = 3;
}

// NG 「allowMarkerInterfaces=false」なのでマーカーインターフェースはNG
public interface Test2 {
}

// OK
public interface Test3 {
    int a = 3;
    
    void test();
}