PHP调用图工具?

28
我正在寻找一个类似于gprof的实用程序,可以为PHP代码生成调用图。我希望能够产生图形输出,或者至少是可以由GraphViz或类似工具解释的文本输出,但我会接受纯文本输出。请问是否有任何工具可以做到这一点?
5个回答

35

我一定会尝试使用Doxygen,它支持PHP语言,并且它所创建的调用图和调用者图对于我以前探索“非本地代码”时非常有用。

Doxygen调用图示例


非常感谢 - Doxygen 看起来正好符合我的需求。 - glomad

4
我不确定是否存在任何可以分析PHP编写的源代码以生成那种东西的工具...但是当你运行代码时,有可能会出现这种情况。
您可能需要查看Xdebug扩展:它为PHP带来了性能分析,并生成类似于callgrind的文件,可以在Linux上使用KCacheGrind进行读取。
而且,这个工具能够生成某种类型的调用图。
它还可以与PHPUnit集成,以在运行单元测试时生成代码覆盖率
一段时间之前,PHPUnit能够使用graphviz生成一些调用图;尽管如此,我不再找到该选项 :-(

编辑:这是我第一次听说它,但有一个名为phpCallGraph的项目可能也能帮到您...而且似乎正在进行工作,如果我看看它的changelog


谢谢 - 我曾经尝试过在我的目标平台上使用Xdebug,但遗憾的是我无法使其在其中正常工作。我的目标平台是一个嵌入式MIPS Linux设备,带有一些特殊的Apache限制(仅支持TLS、一个监听进程等)。 - glomad
嗯...也许不太容易,那么^^你绝对没有访问“标准Linux”机器的权限吗?也许可以使用虚拟化技术? - Pascal MARTIN
好的,PHP运行在我提到的平台上,所以调试器也必须在那里运行。总有一天我会再试一次 :) 不过phpCallGraph看起来很有前途 - 我会去看看的。谢谢! - glomad
不客气 :-) (您能否在测试完成后,添加一条评论,告诉我们您认为它有多好/多差?) - Pascal MARTIN
2
自2009年(本答案的日期)以来,phpCallGraph没有任何更新工作。 - Edson Medina
请查看此帖子,其中包含一个多语言静态调用图生成器,还支持PHP:https://dev59.com/questions/pXM_5IYBdhLWcg3wn0vT#67692928 - Chris Koknat

4

正如已经提到的,Doxygen可以生成调用图。

Xdebug可以生成函数跟踪。这些与Doxygen的图形不同,因为它们是从运行时代码生成的,而Doxygen是静态生成的。我不知道是否有任何工具可以将函数跟踪转换为可视化表示,尽管做起来不应该太难。

还有bytekit扩展程序,其主要功能是显示PHP源代码将生成的字节码。它可以在图形中显示,这本质上是一个调用图。


Bytekit网站现在是一个“关注你和家人健康问题的网站”。 - Sam Hobbs

3

这是一个老话题 - 但如果有人发现它有用....

  • kKCachegrind将生成显示实际执行线程的调用图。

  • PHPCallGraph是一个相当简单的环绕graphviz的工具,可以执行静态分析。

  • 还有我的工作,类似于PHPCallGraph,但添加了关于循环/条件结构的信息,并提供了向节点添加回调的方法。一些示例脚本已经与工具包捆绑在一起,但您也可以将其嵌入自己的脚本中。


正如其他回答中所提到的,PHPCallGraph似乎已经停止更新(网站上也有许多链接失效)。 - AntonioCS

2
如果您需要交互式的内容,请查看新的nWire for PHP。它是一款Eclipse插件,可与PDT 2.1和Zend Studio 7.0配合使用。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接