27

我正在寻找一个类似于 gprof 的实用程序,它将为 PHP 代码生成调用图。我更喜欢可以产生图形输出的东西,或者至少可以由 GraphViz 或类似工具解释的文本输出,但我会满足于纯文本输出。

有谁知道可以做到这一点的任何工具?

4

5 回答 5

34

我肯定会尝试Doxygen。它支持 PHP,它创建的调用图和调用者图对于我之前探索“外来代码”非常有用。

doxygen 调用图示例

于 2009-08-05T20:24:13.960 回答
3

不确定是否存在任何可以分析用 PHP 编写的源代码以生成该源代码的东西……但是当您运行代码时,这是有可能的。

您可能想看看Xdebug扩展:它为 PHP 带来了分析,并生成了类似 callgrind 的文件,可以在 Linux 上使用KCacheGrind 读取。

这个能够生成某种调用图。


它还可以与 PHPUNit 集成,在运行单元测试时 生成代码覆盖率
前段时间,PHPUnit 能够使用 graphviz 生成一些调用图;不过,我再也找不到那个选项了:-(


编辑:这是我第一次听说它,但是有一个名为phpCallGraph的项目也可能对您有所帮助......如果我查看它的变更日志,似乎还有工作正在进行

于 2009-08-05T20:24:19.997 回答
2

如前所述,Doxygen 可以生成调用图。

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

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

于 2009-08-05T20:57:59.867 回答
2

这是一个古老的话题 - 但如果有人觉得它有用....

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

  • PHPCallGraph是一个相当简单的graphviz,它执行静态分析

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

于 2011-02-05T01:04:01.760 回答
1

如果您需要一些交互式的东西,请查看新的nWire for PHP。它是一个 Eclipse 插件,适用于 PDT 2.1 和 Zend Studio 7.0。

于 2009-08-06T04:19:55.613 回答