web-dev-qa-db-ja.com

PHPコールグラフユーティリティ?

コールグラフ for PHPコードを生成するgprofに似たユーティリティを探しています。グラフィック出力を生成できるもの、または少なくともGraphVizなどで解釈できるテキスト出力ですが、プレーンテキスト出力に落ち着きます。

誰かがこれを行うことができるツールを知っていますか?

25
glomad

私は間違いなく試してみます Doxygen 。 PHPをサポートしており、作成するコールグラフと呼び出し元グラフは、以前は「外部コード」を探索するのに非常に役立ちました。

Example of doxygen call graph

32

PHPで記述されたソースコードを分析してそれを生成できるものがあるかどうかはわかりません...しかし、コードを実行しているときに可能性があります。

Xdebug 拡張子を確認することをお勧めします:これは profiling をPHPにもたらし、 KCacheGrindで読み取ることができるcallgrindのようなファイルを生成します Linuxの場合。

そして、これはある種のコールグラフを生成することができます。


PHPUNitと統合して、ユニットテストの実行時に コードカバレッジ を生成することもできます。
少し前に、PHPUnitはgraphvizでいくつかのcallgraphを生成することができました。私はもうそのオプションを見つけられませんが:


編集:それについて聞いたのは初めてですが、---(phpCallGraph というプロジェクトがあります。これもあなたを助けることができるかもしれません...そして私が見ると、作業が進行中のようですそれは 変更ログ

3
Pascal MARTIN

これは古いトピックですが、誰かがそれを役立つと思った場合に備えて...

  • kKCachegrindは、実際の実行スレッドを示すcallgraphを生成します。

  • PHPCallGraph は、静的分析を実行するgraphvizの周りのかなり単純です

  • PHPCallGraphに似ていますが、ループ/条件付き構造に関する情報を追加し、ノードにコールバックを追加するためのメソッドを提供する 私自身の努力 もあります。一部のサンプルスクリプトはツールキットにバンドルされていますが、独自のスクリプトに埋め込むこともできます。

2
symcbean

すでに述べたように、Doxygenはコールグラフを生成できます。

Xdebugは 関数トレース を生成できます。これらは、ランタイムコードから生成されるという点で、doxygenのグラフとは異なりますが、doxygenは静的に生成されます。関数トレースを視覚的表現に変えることができるツールを私は知りませんが、それはそれほど難しいことではないはずです。

bytekit 拡張子もあります。これは、主な機能がphpソースコードが生成するバイトコードを表示することです。これをグラフで表示できます。これは本質的にコールグラフです。

2
troelskn

インタラクティブなものが必要な場合は、新しい nWire for PHP を確認してください。これは、PDT2.1とZendStudio7.0のいずれかで動作するEclipseプラグインです。

1
zvikico