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 も必要ですね。
/** * 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
この記事は
現在のアクセス:7970