0

私の javadoc コメントでは@throws、次のような例外のサブクラスに関するコメントをよく挿入します。

/**
 * My method.
 * @throws SubclassOfMyException when something specific happens
 * @throws MyException if any other error occurs
 */
public void myMethod() throws MyException {
    // ...
}

Checkstyle はallowThrowsTagsForSubclasses、Javadoc Method モジュールで設定することにより、この形式を処理することになっています。ただし、Eclipse Checkstyle プラグインは、このようなケースをエラーとしてタグ付けすることがよくあります (常にではありません)。コマンド ラインから checkstyle を実行しても、これらはエラーとしてタグ付けされません。プラグインのバージョン 5.6.0.201209221626 を使用しています。

回避策の提案はありますか? おそらく、ドキュメントのスタイルを変更できますか?

4

2 に答える 2

2

いくつかのメモを追加させてください。サブクラスを許可するようにRedundantThrowsを設定することは、私の本では問題ありません。実行時例外も宣言できるようにします。

<module name="RedundantThrows">
  <property name="allowUnchecked" value="true"/>
  <property name="allowSubclasses" value="true"/>
</module>

いずれにしても、 JavadocMethodチェックを構成することで、元のシナリオを満たすことができるはずです。allowUndeclaredRTE(これにより、ランタイム例外が@throwsメソッド シグネチャで宣言されずに Javadoc タグに存在できるようになります)allowThrowsTagsForSubclassesが設定されていることを確認してください(true後者については既に言及しました)。

それらに加えて、問題の例外をロードできない場合、「クラス情報を取得できません」logLoadErrorsなどの Checkstyle 警告につながる可能性があるがあります。クラスパスの問題を解決できない場合は、これをオフにすることをお勧めします (回避策はお勧めしませんが、存在します)。例:

<module name="JavadocMethod">
    <property name="allowUndeclaredRTE" value="true"/>
    <property name="allowThrowsTagsForSubclasses" value="true"/>
    <property name="logLoadErrors" value="false"/>
</module>

Eclipse Checkstyle プラグイン自体は非常に信頼性が高く、私は長年使用していますが、深刻な問題が発生したことは一度もありません (不足している機能は別の話です)。したがって、上記の構成は実際に機能するはずです。

それでも問題が解決しない場合は、Checkstyle とは直接関係ありませんが、代わりに Eclipse またはその使用法 (クラスパスの構築方法、カスタム ビルダーがある場合、Eclipse 以外のプログラムに記述させる場合など) とは関係ありません。ワークスペースなどに; この質問の範囲外)。

于 2013-06-23T21:05:46.270 に答える
0

Checkstyle でサブクラスのスローを許可できます。

    <module name="RedundantThrows">
      <property name="allowSubclasses" value="true"/>
    </module>

メソッドの署名を次のように変更します。

public void myMethod() throws SubclassOfMyException, MyException {

ただし、コードスタイルが悪いと考える人もいるかもしれません。

于 2013-06-22T20:05:56.067 に答える