Checkstyle Javaルール

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

TypeName

CheckStyle公式ドキュメント

検証環境

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


チェック概要

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

型名が指定の正規表現にマッチしているがどうかをチェックする。

プロパティ

プロパティ デフォルト値 説明 追加バージョン
format Pattern "^[A-Z][a-zA-Z0-9]*$" 型名の正規表現 3.0
applyToPublic boolean true publicメンバにチェックを適用するかどうか 5.0
applyToProtected boolean true protectedメンバにチェックを適用するかどうか 5.0
applyToPackage boolean true package-privateメンバにチェックを適用するかどうか 5.0
applyToPrivate boolean true privateメンバにチェックを適用するかどうか 5.0
tokens トークンの サブセット CLASS_DEF,
INTERFACE_DEF,
ENUM_DEF,
ANNOTATION_DEF,
RECORD_DEF
チェック対象のトーク 3.0

トークンのサブセットには以下の値が設定可能

説明
CLASS_DEF クラス宣言
INTERFACE_DEF インターフェース宣言
ENUM_DEF Enum宣言
ANNOTATION_DEF アノテーション宣言
RECORD_DEF レコード宣言

設定+チェック実行結果

プロパティ設定なし

設定ファイル記述方法

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

チェック実行例

// OK
public interface FirstName {}
// OK
protected class SecondName {}
// NG クラス名の正規表現にマッチしない
enum Third_Name {}
// NG クラス名の正規表現にマッチしない
private class FourthName_ {} 

プロパティ設定あり

format

型名の正規表現

設定ファイル記述方法

<module name="Checker">
    <module name="TreeWalker">
        <module name="TypeName">
            <property name="format" value="^[a-z][a-zA-Z0-9]*$" />
        </module>
    </module>
</module>

チェック実行例

// NG クラス名の正規表現にマッチしない
public interface FirstName {}
// NG クラス名の正規表現にマッチしない
protected class SecondName {}
// OK
enum thirdName {}
// OK
private class fourthName {} 

applyToPublic

publicメンバにチェックを適用するかどうか
デフォルト:true

設定ファイル記述方法

<module name="Checker">
    <module name="TreeWalker">
        <module name="TypeName">
            <property name="applyToPublic" value="false" />
        </module>
    </module>
</module>

チェック実行例

// OK 「applyToPublic=false」なのでチェック対象外
public interface firstName {}
// NG クラス名の正規表現にマッチしない
protected class secondName {}
// NG クラス名の正規表現にマッチしない
enum thirdName {}
// NG クラス名の正規表現にマッチしない
private class fourthName {} 

applyToProtected

Protectedメンバにチェックを適用するかどうか
デフォルト:true

設定ファイル記述方法

<module name="Checker">
    <module name="TreeWalker">
        <module name="TypeName">
            <property name="applyToProtected" value="false" />
        </module>
    </module>
</module>

チェック実行例

// NG クラス名の正規表現にマッチしない
public interface firstName {}
// OK 「applyToProtected=false」なのでチェック対象外
protected class secondName {}
// NG クラス名の正規表現にマッチしない
enum thirdName {}
// NG クラス名の正規表現にマッチしない
private class fourthName {} 

applyToPackage

Package-Privateメンバにチェックを適用するかどうか
デフォルト:true

設定ファイル記述方法

<module name="Checker">
    <module name="TreeWalker">
        <module name="TypeName">
            <property name="applyToPackage" value="false" />
        </module>
    </module>
</module>

チェック実行例

// NG クラス名の正規表現にマッチしない
public interface firstName {}
// NG クラス名の正規表現にマッチしない
protected class secondName {}
// OK 「applyToPackage=false」なのでチェック対象外
enum thirdName {}
// NG クラス名の正規表現にマッチしない
private class fourthName {} 

applyToPrivate

Privateメンバにチェックを適用するかどうか
デフォルト:true

設定ファイル記述方法

<module name="Checker">
    <module name="TreeWalker">
        <module name="TypeName">
            <property name="applyToPrivate" value="false" />
        </module>
    </module>
</module>

チェック実行例

// NG クラス名の正規表現にマッチしない
public interface firstName {}
// NG クラス名の正規表現にマッチしない
protected class secondName {}
// NG クラス名の正規表現にマッチしない
enum thirdName {}
// OK 「applyToPrivate=false」なのでチェック対象外
private class fourthName {} 

tokens

チェック対象のトーク

設定ファイル記述方法

<module name="Checker">
    <module name="TreeWalker">
        <module name="TypeName">
            <property name="tokens" value="CLASS_DEF" />
        </module>
    </module>
</module>

チェック実行例

// OK チェック対象外のトークン
public interface firstName {}
// NG クラス名の正規表現にマッチしない
protected class secondName {}
// OK チェック対象外のトークン
enum thirdName {}
// NG クラス名の正規表現にマッチしない
private class fourthName {}