rubydep

http://soutaro.com/rubydep-20060628.tgz

Rubyソースコードを解析して、クラス・モジュール間の依存関係を出力します。

画像ファイルは、去年TAをやっているときに作った「レポートのプログラムをメールで提出してもらって、適当にユニットテストを走らせて、正否を返信するプログラム」の依存関係です。読めん。

依存しているとみなすのは

  • クラスを明示的に継承している場合
  • モジュールをincludeしている場合
  • クラス・モジュールのメソッドを呼び出している場合

です。リテラルは全て無視します。プログラム中でclassやmoduleの構文で定義されたもの意外は無視します。

OCamlとextlibとfindlibと、あともちろんRubyが必要です。

$ cd nodedump
$ ruby extconf
$ make
$ cd ../src
$ make
$ cd ..
$ ./rubydep ~/gonzui-1.2 2>gonzui.dot

などとして使います。

標準出力とかの使い方がおかしいですが、許してください。Graphvizのdotになるので、あとは好きに下降してください。gonzui-1.2を解析した結果のイメージがあります(http://soutaro.com/gonzui-1.2.png)。


研究でどうしても必要になったため作りました。多分、当分更新しないと思います。