2011-12-14 7 views
23

私は、実行時にJavadocコメントを読む方法を知っておく必要がありリフレクションによるJavadocコメントの読み方は?

は、私は次の関数があるだろう(反射によっておそらく?):実行時に

/** 
* function that do some thing 
*/ 
public void myFunc() 
{ 

    //... 
} 

を、私はこの機能についての多くの情報を得ることができますしかし、コメントを読むことはできません。だから問題は、これを読む方法javadocコメントは実行時にです。

+0

ここ2つの答えは彼らが行うことがカントと言うので、コンパイルされたコードであれば、ソースコードで処理できるはずです。そして、それを行うためには、 "javadocをソースから抽出"して、オープンソースツールをいくつか入手して、必要に応じて修正してみてください。 –

+0

私はソースコードの所有者であるため、@Puceを使うほうがはるかに簡単だと思います! –

+1

実際の質問は次のとおりです。これらのJavaDocsには何が必要ですか?ユースケースは何ですか? – Thomas

答えて

14

Javadocの代わりに注釈を使用し、注釈プロセッサを記述することを検討してください。

16

できません。それらはコンパイルされたコードから削除されます。

7

これはできません。javadocが最終クラスにコンパイルされないためです。

30

Docletクラス:

public class ExtractCommentsDoclet { 
    public static boolean start(RootDoc root) throws IOException { 
     for (ClassDoc c : root.classes()) { 
      print(c.qualifiedName(), c.commentText()); 
      for (FieldDoc f : c.fields(false)) { 
       print(f.qualifiedName(), f.commentText()); 
      } 
      for (MethodDoc m : c.methods(false)) { 
       print(m.qualifiedName(), m.commentText()); 
       if (m.commentText() != null && m.commentText().length() > 0) { 
        for (ParamTag p : m.paramTags()) 
         print(m.qualifiedName() + "@" + p.parameterName(), p.parameterComment()); 
        for (Tag t : m.tags("return")) { 
         if (t.text() != null && t.text().length() > 0) 
          print(m.qualifiedName() + "@return", t.text()); 
        } 
       } 
      } 
     } 
     return true; 
    } 

    private static void print(String name, String comment) throws IOException { 
     if (comment != null && comment.length() > 0) { 
      new FileWriter(name + ".txt").append(comment).close(); 
     } 
    } 
} 

とMaven実行:クラスパスから

<plugin> 
    <artifactId>maven-javadoc-plugin</artifactId> 
    <extensions>true</extensions> 
    <executions> 
     <execution> 
      <phase>compile</phase> 
      <goals> 
       <goal>aggregate</goal> 
      </goals> 
     </execution> 
    </executions> 
    <configuration> 
     <doclet>ExtractCommentsDoclet</doclet> 
     <docletPath>${project.build.directory}/classes</docletPath> 
     <reportOutputDirectory>${project.build.outputDirectory}/META-INF</reportOutputDirectory> 
     <useStandardDocletOptions>false</useStandardDocletOptions> 
    </configuration> 
</plugin> 

読むドキュメント:META-INF/apidocs

+0

すてきなのは、どうやってjdkのtools.jarをMavenに組み込むのですか? – TecHunter

+0

実行時にjavadocを読みたいのですか? - 問題ない、キャプテン!私はあなたのための解決策を書くでしょう! :-) しかし、私はあなたの答えの最後に1つの質問を逃したと思う: - あなたはなぜそれを行う必要がありますか? 顕微鏡を使って釘を打つことは可能ですが、そのようなことをするようには設計されていません) – 4ndrew

関連する問題