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
この記事は
現在のアクセス:8211