php-class-diagram 1.5.0でクラス図の関連にフォーカスした絞り込み機能を追加しました

先日、CodeZineにPHPカンファレンスを盛り上げる連載企画の第5回に、記事を寄稿するという実績を解除することができました。

健全なソフトウェア設計の第一歩! 既存のPHPソースコードからクラス図を自動生成しよう PHPカンファレンス実行委員プレゼンツ PHPの最前線 第5回

php-class-diagram v1.5.0では、@jose-ba さんからプルリクを頂いて新しいフィルター機能が追加されました。

今日は、その機能について紹介します。

今までの課題

例えば、php-class-diagramのソースコード全体に対してクラス図を生成しようとすると、以下のクラス図を生成することができます。

デカいです。出力されているクラスが多いため、ごちゃごちゃしてしまっていて、何かを読みとるには難しくなってしまっています。

今までは、クラス図を出力する対象を減らすために、ある特定のフォルダに絞ってクラスを出力するか、不要なクラスを--excludeで除外するかという方法を取るしかありませんでした。

関連にフォーカスしたフィルター機能--rel-targetオプション

このような場合の問題を解決できる機能が、v1.5.0で追加されました。

--rel-targetオプションでターゲットのクラスを指定すると、そのクラスが依存しているクラスとそのクラスに依存しているクラスだけが表示されたクラス図を出力することが可能になります。Entryクラスに注目したい場合のコマンド例は以下のようになります。

$ vendor/bin/php-class-diagram --rel-target=Entry --rel-target-depth=1 src | plantuml -pipe -tpng > rel-target-Entry.png

 追加されたオプション

  • --rel-target-from: 指定したクラスが依存しているクラスを、出力対象とします。
  • --rel-target-to: 指定したクラスに依存しているクラスを、出力対象とします。
  • --rel-target: 指定したクラスに依存しているクラスと指定したクラスが依存しているクラスを、出力対象とします。
  • --rel-target-depth: 依存先または依存元を辿る階層の数を指定します。
Entryクラスの依存関係の関連に注目した図の出力は以下のようになります。 さっきの大きなクラス図と比べて、すっきりとしたEntryクラスの関連にフォーカスした図を出力することができました。--rel-targetに指定したクラスEntryが赤く強調表示されています。(強調表示はv1.5.2で追加した機能です) 「修正するクラス名はわかってるけど全体とどのように関連しているのかわからない」というような状況では、まさに見たい図を出力できると思います。 是非試してみてください。   VSCode等のIDEの拡張機能でインタラクティブに、--rel-targetを指定したクラス図を出力できるようにすると便利かもしれません。誰か作ってください。    

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です


reCaptcha の認証期間が終了しました。ページを再読み込みしてください。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください