Scalaでクラス図を表示するsbt plugin作った

コードのベースは、もう4年くらい前 に書いたやつ持ってきただけ

https://github.com/xuwei-k/sbt-class-diagram


使い方は

  • これ http://www.graphviz.org/ をローカルにインストール(内部でこれをコマンドで呼び出すので必須)
    • 本当は、dotというグラフの記述のための単純なテキストベースの言語から、pure javaSVGに変換したかったのだけど、ライブラリなさそう(?)なので断念
    • 手動でレンダリングすれば不可能ではないが、nodeの配置が*1汚くなるので、graphvizに頼ることに
  • githubのREADMEに書いてあるとおりに、addSbtPluginをproject/plugin.sbtに追加と、build.sbtにsetting読み込ませる
  • sbtのshellから、 classDiagram "クラス図に含めたいclass名" (複数可) を入力
    • version 0.1.3から、class名がtab補完効くようになりました
  • うまく行けば勝手にブラウザ立ち上がってSVG表示される

といった感じです。現時点の0.1.1での注意点や細かい仕様やその他解説しておくと

  • sbt0.13.xにしか対応してません(今後も0.12のクロスビルドはしないだろう)
  • クラス名指定して、その親classやtraitしか辿らないので、子供のclassは勝手に含まれたりはしません
  • ひたすらリフレクション使ってるだけ
  • なので、別にScalaでなくても、Javaでもその他JVM言語でも動く
  • そして、pathに入っていれば、自作のclassだろうが依存ライブラリのclassだろうが関係なく表示可能なはず
  • 手抜きで、testのClassLoader使ってるので、少し余計な処理が走る

*1:自分の実力不足により