1

既存の Java ソース ファイルから Javadoc をスクレイピングし、カスタム ドックレットを介して前処理するツールを作成しています (処理の詳細は関係ありません)。ドックレットを作成しました。Javaドキュメントに示されているように、プログラム API を介して自分のコードからドックレットを呼び出すことができます。

このメカニズムは、ドックレットの実行結果があったとしても、最初のクラスの Java オブジェクトを介して execute() メソッドの呼び出し元に送信できないという意味で、「書き込み専用」であるように見えます。代わりに、ドックレット内から中間出力をファイルに書き込み、それを呼び出し元から読み戻すなどの面倒な作業に頼る必要があります。

私の質問: たとえば、呼び出し側でカスタム ドックレットによって生成された文字列を直接取得する方法はありますか? 例:

public void foo() {
    // Invoke my custom doclet via Javadoc programmatically
    com.sun.tools.javadoc.Main.execute(new String[] {"-d", "docs", "- sourcepath", "/home/usr/src", "p1", "p2"});

    // Access the String output of my doclet here
    String processedJavadoc = getTheOutputOfMyDoclet();
}

前もって感謝します!

4

1 に答える 1

0

わかりました。これを行うために私が思いついた最も洗練された方法は、ドックレット クラスRootDocが、ドックレットのメソッドを呼び出すときに Javadoc ハーネスによって渡されたインスタンスに設定された静的メンバー変数を使用するstart()ようにし、次にへのアクセスを許可することです。ゲッターを介したこの静的メンバーの呼び出し元。これには、静的メンバーを使用することによる明らかなスレッド セーフの問題が伴いますが、私の目的には問題なく機能しました。

于 2012-04-04T18:53:06.030 に答える