Checkstyle Javaルール

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

AbstractClassName

CheckStyle公式ドキュメント

検証環境

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


チェック概要

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

抽象クラスのクラス名が定義した正規表現にマッチしていることをチェックする。
併せてabstract修飾子が存在することをチェックする。

プロパティ

プロパティ デフォルト値 説明 追加バージョン
format Pattern "^Abstract.+$" 抽象クラス名の正規表現 3.2
ignoreModifier boolean false abstract修飾子の存在チェックをスキップするかどうか 5.3
ignoreName boolean false クラス名のチェックをスキップするかどうか 5.3

設定+チェック実行結果

プロパティ設定なし

設定ファイル記述方法

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

チェック実行例

// OK
abstract class AbstractFirstClass {}

// NG 抽象クラスの命名ルールに合っていない
abstract class SecondClass {}

// NG 抽象クラスの命名ルールに合っているが、abstract修飾子がない
class AbstractThirdClass {}

// OK
class FourthClass {}

プロパティ設定あり

format

抽象クラス名の正規表現

設定ファイル記述方法

<module name="Checker">
    <module name="TreeWalker">
        <module name="AbstractClassName">
            <property name="format" value="^Abst.+$"/>
        </module>
    </module>
</module>

チェック実行例

// NG 抽象クラスの命名ルールに合っていない
abstract class AbstractFirstClass {}

// OK
abstract class AbstSecondClass {}

// NG 抽象クラスの命名ルールに合っているが、abstract修飾子がない
class AbstThirdClass {}

// OK
class FourthClass {}

ignoreModifier

abstract修飾子の存在チェックをスキップするかどうか デフォルト:false

設定ファイル記述方法

<module name="Checker">
    <module name="TreeWalker">
        <module name="AbstractClassName">
            <property name="ignoreModifier" value="true"/>
        </module>
    </module>
</module>

チェック実行例

// OK
abstract class AbstractFirstClass {}

// NG 抽象クラスの命名ルールに合っていない
abstract class SecondClass {}

// OK 「ignoreModifier=true」なのでabstract修飾子がなくてもOK
class AbstractThirdClass {}

// OK
class FourthClass {}

ignoreName

クラス名のチェックをスキップするかどうか デフォルト:false

設定ファイル記述方法

<module name="Checker">
    <module name="TreeWalker">
        <module name="AbstractClassName">
            <property name="ignoreName" value="true"/>
        </module>
    </module>
</module>

チェック実行例

// OK
abstract class AbstractFirstClass {}

// OK 「ignoreModifier=true」なので抽象クラスのクラス名はチェックしない
abstract class SecondClass {}

// NG abstract修飾子がない
class AbstractThirdClass {}

// OK
class FourthClass {}