Checkstyle Javaルール

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

MissingJavadocMethod

CheckStyle公式ドキュメント

検証環境

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


チェック概要

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

メソッドまたはコンストラクタのJavadocコメントが欠落していないかどうかをチェックする。
検証するスコープはScopeクラスを使用して指定し、デフォルトは Scope.PUBLIC

Overrideアノテーションでタグ付けされたメソッドにはJavadocは必要ないが、Java5以前ではインターフェイスに必要なメソッドをマークすることはできない(これはJava6で修正された)。
Checkstyleでは、他のすべてのタグの代わりに1つの{@inheritDoc}タグを使用する慣習をサポートしている。

プロパティ

プロパティ デフォルト値 説明 追加バージョン
minLineCount int -1 Javadocの欠落を許可するメソッドの最小行数 8.21
allowedAnnotations String[] Override Javadocの欠落を許可するアノテーション 8.21
scope Scope public Javadocコメントをチェックする可視性スコープを指定 8.21
excludeScope Scope null Javadocコメントをチェックしない可視性スコープを指定 8.21
allowMissing PropertyJavadoc boolean false プロパティ(セッターとゲッター)のアクセサー・メソッドにJavadocがないことを許可するかどうか 8.21
ignoreMethod NamesRegex Pattern null チェック対象外とするメソッド名の正規表現 8.21
tokens トークンの サブセット METHOD_DEF,
CTOR_DEF,
ANNOTATION_FIELD_DEF,
COMPACT_CTOR_DEF
チェック対象のトーク 8.21

〇 Scopeには以下の値が設定可能
public を指定すると、public な修飾子を持つ項目のみがチェックされる。
protected を指定すると、public および protected 修飾子のみをチェックする。

  • nothing
  • public
  • protected
  • package
  • private
  • anoninner

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

説明
METHOD_DEF メソッド宣言
CTOR_DEF コンストラクタ宣言
ANNOTATION_FIELD_DEF アノテーションフィールド宣言
COMPACT_CTOR_DEF 引数なしコンストラクタ宣言

設定+チェック実行結果

プロパティ設定なし

設定ファイル記述方法

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

チェック実行例

public class MyClass {
    // NG Javadocコメントがない
    public MyClass() {}
    
    // NG Javadocコメントがない
    public void foo() {}
    
    // OK
    /**
     * Some description here.
     */
    public void foo2() {}

    // OK @overrideアノテーションが付与されているのでチェック対象外
    @Override
    public String toString() {
        return "Some string";
    }

    // OK privateメソッドはチェック対象外
    private void foo3() {}
    
    // OK protectedメソッドはチェック対象外
    protected void foo4() {}
    
    // OK package-privateメソッドはチェック対象外
    void foo5() {}
}

プロパティ設定あり

minLineCount

Javadocの欠落を許可するメソッドの最小行数

設定ファイル記述方法

<module name="Checker">
    <module name="TreeWalker">
        <module name="MissingJavadocMethod">
            <property name="minLineCount" value="1"/>
        </module>
    </module>
</module>

チェック実行例

public class MyClass {
    // NG Javadocコメントがない
    public getName() {
        String s = "あああ";
        return s;
    }
    
    // OK メソッドが1行なのでチェック対象外
    public getId() {
        return "a";
    }
}

allowedAnnotations

Javadocの欠落を許可するアノテーション

設定ファイル記述方法

<module name="Checker">
    <module name="TreeWalker">
        <module name="MissingJavadocMethod">
            <property name="allowedAnnotations" value="Test"/>
        </module>
    </module>
</module>

チェック実行例

public class MyClass {
    // NG Javadocコメントがない
    public getName() {
        String s = "あああ";
        return s;
    }
    
    // OK @Testがついているのでチェック対象外
    @Test
    public getId() {
        return "a";
    }
}

scope

Javadocコメントをチェックする可視性スコープを指定する

設定ファイル記述方法

<module name="Checker">
    <module name="TreeWalker">
        <module name="MissingJavadocMethod">
            <property name="scope" value="public"/>
        </module>
    </module>
</module>

チェック実行例

public class MyClass {
    // NG Javadocコメントがない
    public getName() {
        String s = "あああ";
        return s;
    }
    
    // OK publicでないのでチェック対象外
    @Test
    getId() {
        return "a";
    }
}

excludeScope

Javadocコメントをチェックしない可視性スコープを指定する

設定ファイル記述方法

<module name="Checker">
    <module name="TreeWalker">
        <module name="MissingJavadocMethod">
            <property name="excludeScope" value="public"/>
        </module>
    </module>
</module>

チェック実行例

public class MyClass {
    // OK publicなのでチェック対象外
    public getName() {
        String s = "あああ";
        return s;
    }
    
    // NG Javadocコメントがない
    @Test
    getId() {
        return "a";
    }
}

allowMissingPropertyJavadoc

プロパティ(セッターとゲッター)のアクセサー・メソッドにJavadocがないことを許可するかどうか(デフォルト:false)

設定ファイル記述方法

<module name="Checker">
    <module name="TreeWalker">
        <module name="MissingJavadocMethod">
            <property name="allowMissingPropertyJavadoc" value="true"/>
        </module>
    </module>
</module>

チェック実行例

public class MyClass {
    // OK allowMissingPropertyJavadocがtrueなのでチェック対象外
    public getName() {
        return name;
    }
}

ignoreMethodNamesRegex

チェック対象外とするメソッド名の正規表現

設定ファイル記述方法

<module name="Checker">
    <module name="TreeWalker">
        <module name="MissingJavadocMethod">
            <property name="ignoreMethodNamesRegex" value="getName"/>
        </module>
    </module>
</module>

チェック実行例

public class MyClass {
    // OK ignoreMethodNamesRegexに合致するメソッド名なのでチェック対象外
    public getName() {
        return name;
    }
}

tokens

チェック対象のトーク

設定ファイル記述方法

<module name="Checker">
    <module name="TreeWalker">
        <module name="MissingJavadocMethod">
            <property name="tokens" value="CTOR_DEF"/>
        </module>
    </module>
</module>

チェック実行例

public class MyClass {
    // OK メソッドはチェック対象外
    public getName() {
        return name;
    }
}