Top / Java / XJavaDoc

XJavaDocはXDocletでも使用されている、JavaDoc?をパースするエンジンです。EclipseのJavaDocパーサがどうもタコな動きをする(失礼っ)ので、なんかいいのないかなあと探してたらこれに行き着きました。Eclipseのパーサは ASTVisitor#visit(Javadoc node) でJavaDoc?インスタンスを取得しそこからJavaDoc?を解析するのですが、

 @spring.bean id = "hogehoge.Hoge" singleton="false"

などの記述をうまくパースする方法がわかりませんでした*1。idの値であるhogehoge.Hogeだけを取得することができないようでした。

そこでこれを使ってみたのですが、とても簡単にJavaDoc?を解析することができました。

インストール

サイトを見てもダウンロードできるリンクはないようだったので、XDocletに同梱されている xjavadoc-1.1.jar を使用することにしました。また、commons-logging.jar も必要ですね。

やってみる

  • 対象のJavaDoc?コメント
    /**
     * Hogeクラス
     * 
     * @spring.bean id = "hogehoge.Hoge" singleton="false"
     * @version $Revision: 1.1 $
     * @author Masatomi KINO
     */
  • プログラム
    String javadoc = "/**\n"
            + " * Hogeクラス\n"
            + " * \n"
            + " * @spring.bean id = \"hogehoge.Hoge\" singleton=\"false\"\n"
            + " * @version $Revision: 1.1 $\n"
            + " * @author Masatomi KINO\n" + " */\n";
    Token token = Token.newToken(0);
    token.image = javadoc;
    XDoc doc = new XDoc(token, null, new XTagFactory());
    System.out.println(doc);
    XTag tag = doc.getTag("spring.bean");
    System.out.println(tag);
    System.out.println(tag.getAttributeValue("id"));
    System.out.println(tag.getAttributeValue("singleton"));

実行結果:

/**
    * Hogeクラス
    * 
    * @spring.bean
    *    id="hogehoge.Hoge"
    *    singleton="false"
    * @version $Revision: 1.1 $
    * @author Masatomi KINO
    */
xjavadoc.DefaultXTag@52198af1
hogehoge.Hoge
false

@author hogehgoeみたいな場合のパース方法

上の例は

@spring.bean id="hogehoge.Hoge" singleton="false"

などのように@タグ内に key=value がある形式でしたが

@author hogehgoe

のように@タグとvalueのみの場合は

Tag tag = doc.getTag("author");
System.out.println(tag.getValue());

などのようにするだけです。簡単ですね。


この記事は

選択肢 投票
おもしろかった 4  
そうでもない 0  

Top / Java / XJavaDoc

現在のアクセス:7834


*1 使い方が悪い??

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2009-12-26 (土) 00:12:13 (5228d)