argius note

プログラミング関連

カスタムDocletでJavadoc情報をCSV出力

Javadocの情報を、リスト形式で取得したい、具体的には、CSVで出力して、スプレッドシートとして閲覧したいと思いました。


独自でパーサーを作って、ソースコード直接orHTML形式をパースする? さすがにそれより簡単なやり方があるでしょうと思って調べてみたら、ドックレット(Doclet)APIを使用して、独自にドックレットを作れば良いことが分かりました。


かなり前からある機能なので、ご存知のかたも多いかも知れません。ところが、検索しても思ったより情報が見つけられませんでした。ちょっとメモしておくことにします。


環境

Java5(Java SE 5.0)以降で十分ですが、当方では最古バージョンをJava6(Java SE 6)としておりますので、Java6基準で書いています。


ドックレットについて

必要な情報は、以下のリンク先を見れば十分です。

最低限の準備手順を書いておきます。

  1. tools.jar($JDK_HOME/lib/tools.jar)をクラスパスに追加
  2. シグネチャー public static boolean start(RootDoc) のメソッドを実装したクラスを作る
    • extends,implementsは不要
    • com.sun.javadocパッケージをインポートしておくと良いです
    • もちろん作ったらコンパイルします
  3. javadocコマンドを-doclet ,-docletpathオプションでカスタムドックレットを設定して実行
    • このエントリーでは、Antを使って実行します

カスタムドックレットを作って実行

前項でも書きましたが、少なくともpublic static boolean start(RootDoc)を実装したクラスを作るだけでOKです。

Antで実行するため、build.xmlファイルも作っています。

結果は、カスタムドックレットクラス自体の情報です。


その他

コアライブラリのソースコードでも実行できます。JDKに付属しているsrc.zipからソースを取り出して、そのディレクトリをsourcepathに指定するだけです。



(おわり)

*1:それほど古くなければ大丈夫だと思います。