Checkstyle Javaルール

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

WriteTag

CheckStyle公式ドキュメント

検証環境

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


チェック概要

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

ユーザー定義のJavadocタグが、定義されたフォーマットで Javadoc コメントに存在することをチェックする。

タグのフォーマットを定義するために、tagFormatプロパティに正規表現を設定する。
tagSeverityプロパティは、タグが存在するときのイベントの重要度の設定に使用する。

プロパティ

プロパティ デフォルト値 説明 追加バージョン
tag String null タグの名称を指定 4.2
tagFormat Pattern null タグの内容にマッチする正規表現を指定 4.2
tagSeverity SeverityLevel info タグが検出され、出力されたときの重要度を指定 4.2
tokens トークンの サブセット INTERFACE_DEF,
CLASS_DEF,
ENUM_DEF,
ANNOTATION_DEF,
RECORD_DEF
チェック対象のトーク 4.2

〇SeverityLevelには以下の値が設定可能

  • ignore
  • info
  • warning
  • error

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

説明
INTERFACE_DEF インターフェース宣言
CLASS_DEF クラス宣言
ENUM_DEF Enum宣言
ENUM_CONSTANT_DEF Enum定数宣言
ANNOTATION_DEF アノテーション宣言
RECORD_DEF レコード宣言
METHOD_DEF メソッド宣言
CTOR_DEF コンストラクタ宣言
ANNOTATION_FIELD_DEF アノテーションフィールド宣言
COMPACT_CTOR_DEF 引数なしコンストラクタ宣言

設定+チェック実行結果

プロパティ設定なし

設定ファイル記述方法

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

チェック実行例

プロパティ設定がない場合チェックは実行されない

プロパティ設定あり

tag

タグの名称を指定する

設定ファイル記述方法

<module name="Checker">
    <module name="TreeWalker">
        <module name="WriteTag">
            <property name="tag" value="@since"/>
        </module>
    </module>
</module>

チェック実行例

// NG クラスのJavadocコメントに@sinceタグが必要
/**
* Some class
*/
public class Test {
  /** some doc */
  void foo() {}
}

tagFormat

タグの内容にマッチする正規表現を指定する。

設定ファイル記述方法

<module name="Checker">
    <module name="TreeWalker">
        <module name="WriteTag">
            <property name="tag" value="@since"/>
            <property name="tagFormat" value="[1-9\.]"/>
        </module>
    </module>
</module>

チェック実行例

// OK @sinceタグの内容も適切
/**
* Some class
* @since 1.2
*/
public class Test {

  void foo() {}
}

// NG @sinceタグの内容が不適切
/**
* Some class
* @since 1.2a
*/
public class Test {

  void foo() {}
}

tagSeverity

タグが検出され、出力されたときの重要度を指定する。
tagSeverityに "ignore "以外を指定すると、そのようなタグが存在する場合、その深刻度での違反が表示される。

設定ファイル記述方法

<module name="Checker">
    <module name="TreeWalker">
        <module name="WriteTag">
            <property name="tag" value="@since"/>
            <property name="tagSeverity" value="error"/>
        </module>
    </module>
</module>

チェック実行例

// sinceタグが存在すると、エラーで報告される
/**
* Some class
* @since 1.2
*/
public class Test {

  void foo() {}
}

tokens

チェック対象のトークンを指定する。

設定ファイル記述方法

<module name="Checker">
    <module name="TreeWalker">
        <module name="WriteTag">
            <property name="tag" value="@since"/>
            <property name="tokens" value="INTERFACE_DEF" />
        </module>
    </module>
</module>

チェック実行例

// OK クラス宣言はチェック対象外
/**
* Some class
* @since 1.2
*/
public class Test {

  void foo() {}
}