以前に定義したフィールドのコメントに基づいて、EclipseでgetterメソッドとsetterメソッドのJavadocコメントを自動的に生成するようにします。どうすればこれを達成できますか?
背景:当社のポリシーは、すべてのメソッドとフィールドにコメントを付けることです(名前がわかりやすい場合でも)。したがって、フィールドを記述し、ゲッター/セッターを再度記述することによって、冗長な作業を行う必要があります。
例:
/**
* name of the dynamic strategy
*/
private String dynName;
/**
* get the name of the dynamic strategy
* @return
*/
public String getDynName() {
return dynName;
}
Webを検索したところ、問題を抱えているのは私だけではないことがわかりましたが、解決策は見つかりませんでした。チェックアウトしました http://jautodoc.sourceforge.net/ ですが、これを実行できないようです。
私はついに自分で解決策(または少なくとも回避策)を見つけました。 SOで スプーン について読んだ。これはJavaプログラムプロセッサであり、Javaソースファイルの読み取りと変更が可能です。EclipseプラグインまたはAnt/Mavenスクリプトとしても使用できます。
あなたがしなければならないことはすべて、メソッドを処理するAbstractProcessorを拡張することです。メソッド名がget/setで始まる場合、対応するフィールドを検索し、そのコメントを抽出して、アクセサーのコメントを置換または拡張します。
私は小さなantスクリプトを持っています。これは、すべてのソースを取得して処理します。
日食コードテンプレートに統合されたものはもちろんもっと便利ですが、今のところこの方法は問題ありません!
Ver 1.6(質問から1年後)以降のJAutodocには、「[G、S]フィールドコメントからのより良い」という新しいオプションがあり、これはまさにあなたが望むことを実行します。
これは非常に便利な機能です。フィールドコメントは通常、プライベートメンバーである可能性があるため(プライベートメンバーごとにJavadocを生成することも適切ではないため)、最終的なJavadoc HTMLに含まれません。したがって、コメントはそれなしでは完全に失われます。
このQ/Aスレッドが、この素晴らしい機能を実装するように作者を動機付けたのではないかと思います。
eclipseのツールを使用してメソッドをオーバーライド/実装する場合...ソースメニューから、javadocコメントを自動的に生成するオプションがあります。環境設定-> Java->コードスタイル->コードテンプレート->コメントで変更できるコメントテンプレートがあります。
ドキュメントの複製が問題になることに同意します。プライベート変数をドキュメント化し、アクセサメソッドでそのドキュメントへのリンクを提供するのはどうですか?
(明らかに、次の解決策は 非常に単純なアクセサメソッド。特にアクセサメソッドが実際に注目に値することを行う場合は、APIでプライベート変数のドキュメントを公開する必要はありません。)
public class MyBean {
/**
* The names description
*/
private String name;
/**
* @return {@link #name}
*/
public String getName() {
return name;
}
/**
* @param name {@link #name}
*/
public void setName(String name) {
this.name = name;
}
}
Eclipseを使用している場合は、有効にする必要がある場合があることに注意してください javadocでプライベート変数を参照する 次のように:
検索パフォーマンスに影響が出るのではないかと思いますが、まだどれだけテストしたかは使っていません。
マクロ言語を使用している場合は、「ポップアップを開いてテキストを入力し、テンプレートに基づいてjavadocを含むゲッターとセッターを生成する」などの関数を作成できます。
Eclipseは実際にはそのようなマクロ言語を実際にはサポートしていませんが、とにかく見てみることができます: Eclipse用のマクロレコーダーはありますか?
Eclipseと別のツールを切り替えることに抵抗がない場合は、強力なBeanshellマクロ言語を含むJEdit(jedit.org)を試すことができます。このようにして、Eclipseとjeditを開き、処理するファイルをEclipseからjeditにドラッグアンドドロップし、jeditマクロパワーを使用して、ファイルを保存し、最後にEclipse内でファイルを更新します。
少し面倒ですが、いくつかの処理では、それが私がうまく採用した方法です。
私見コメントが自動的に生成される場合、それらはあまり価値がありません。
メソッドgetDynamicStrategyName()を呼び出した場合、名前にはコメントに入力するすべての情報が含まれているため、コメントする必要はありません。
JavadocWriter IntelliJ用プラグインIDEAは、「javadocをフィールドからアクセサーにスマートコピーする」と言っています。警告ユーティリティ:プラグインを自分で試したことがないので、 3年間更新されていません。
私はEclipseLuna4.4を使用しています。
Window
\Preferences
を選択し、Java
\Code Style
\Code Templates
を選択します。セクションComments
\Getters
|を選択しますSetters
、ボタンEdit...
を押します。既存の変数はたくさんあります。ボタンInsert Variable...
を使用してください
コメント形式を編集し、ボタンApply
を押してから、OK
を押して終了します。
実際、JAutodocは、フィールドコメントに基づいてゲッター/セッターのコメントを生成できます。 「要素名からコメントを作成する」オプションをチェックする必要があります。ドキュメントについては、 http://jautodoc.sourceforge.net/ を参照してください。