JavaDoc の句点を「。」にする


Java のコードを見ていると、日本語のコメントであっても以下のように句点は半角ピリオド(.)にしているケースがあります。

/**
 * 値を返却します.
 */
String getValue();

これは論文を書く時の癖・・・というわけではなく(日本語の論文では全角の終止符「.」を使います)、 checkstyle などのツールの都合からこうなっていると考えられます。

JavaDoc の「概要」と「ピリオド」

クラスコメントやメソッドコメントの最初の一文は Summary (概要) として解釈されます。概要とは JavaDoc のクラス一覧やメソッド一覧として出力される説明の部分です。詳細の方には全文が出力されます。

最初の一文を認識するための区切り文字としてピリオドが使われるのですが、 日本語設定とすれば「。」もピリオドとして認識されます1OpenJDK 17 Temurin で試しましたJAVA_TOOL_OPTIONS="-Duser.language=ja -Duser.country=JP" のように JAVA_TOOL_OPTIONS 環境変数経由でシステムプロパティを設定できます。

ソースコードは以下のように書きました。

public interface ValueInterface {
    /**
     * 値を返却します。2文目以降は要約には含まれません。
     */
    String getValue();
}

checkstyle で「。」を許可する

ではなぜ「.」で書くかというと、他のツールによる影響かと思います。例えば checkstyle のルールに「JavadocStyle」や「SummaryJavadocCheck」があるのですが、デフォルトのオプションで実行すると「。」はエラーになります。

<?xml version="1.0"?>
<!DOCTYPE module PUBLIC "-//Checkstyle//DTD Checkstyle Configuration 1.3//EN" "https://checkstyle.org/dtds/configuration_1_3.dtd">
<module name="Checker">
  <module name="TreeWalker">
    <module name="SummaryJavadocCheck" />
    <module name="JavadocStyle" />
  </module>
</module>
[ERROR] src\main\java\com\example\ValueInterface.java:[5] (javadoc) SummaryJavadoc: Javadocの最初の文に末尾のピリオドがありません。
[ERROR] src\main\java\com\example\ValueInterface.java:[5] (javadoc) JavadocStyle: 最初の一文はピリオドで終わらなければなりません。

これらのエラーを回避するには以下の設定を入れる必要があります。

<?xml version="1.0"?>
<!DOCTYPE module PUBLIC "-//Checkstyle//DTD Checkstyle Configuration 1.3//EN" "https://checkstyle.org/dtds/configuration_1_3.dtd">
<module name="Checker">
  <module name="TreeWalker">
    <module name="SummaryJavadocCheck">
      <property name="period" value="。" />
    </module>
    <module name="JavadocStyle">
      <property name="endOfSentenceFormat" value="([.?!。][ \t\n\r\f<])|([.?!。]$)" />
    </module>
  </module>
</module>

SummaryJavadocCheck の方は checkstyle のドキュメントに設定例として書かれています。ただ、「。」を許可するかわりに「.」が使えなくなるというデメリットはあります。

JavadocStyle の方はデフォルト設定のパターンに「。」を追加することで回避できました。

まとめ

使用するツールにもよりますが、設定すれば「。」も JavaDoc のピリオドとして問題なく使用できます。


コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください