6

问题

我有一个遗留代码库,我需要分析和确定依赖关系。特别是对类(内部/外部)和扩展(Memcache、PDO 等)的依赖。

我试过的

我已经查看了是否有 PHP 文件的静态代码分析器中列出的工具. 不幸的是,这篇文章已经过时了,大多数有前途的工具,如phpCallGraph不再起作用。

我的想法是从词法上分析代码并寻找标记。查看这些列表至少可以让我直观地确定依赖关系。但是在以下代码中查找OtherClass可能很复杂:

$classname = 'OtherClass';
echo $classname::doubleColon();

最后,我怀疑我是第一个需要这个的人。我确信存在一种工具或工具组合来提供我需要的东西。所以我在自己写这篇文章之前询问了 SO 社区。

更新

理想情况下,该工具将分析具有完整代码覆盖率的多个文件。因此,像 Xdebug 这样的工具虽然很棒,但并不能解决这个确切的问题。

4

2 回答 2

3

Instead of phpCallGraph you could use Gopal Vijayaraghavan's inclued extension which in combination with Graphviz gives you a nice looking graph of all included files for a certain execution path.

Example:

enter image description here

Moreover, I'd recommend Xdebug (a PHP debugger) which offers a profiler that outputs data consumable by Valgrind. Use the debugger with a compatible IDE to follow the execution path (which helped me a lot to wade thru e.g. Drupal's massive call-stack).

Combine both and you should get a fairly thourough overview.

EDIT

Searched the web and found nWire for PHP - an eclipse plugin that looks like it could be the right tool for you (30 day free trial which should be enough to give you a head start).

于 2012-10-26T14:28:24.727 回答
0

我认为 PhpCodeAnalyzer 正是您正在寻找的 - https://github.com/wapmorgan/PhpCodeAnalyzer 它打印代码库中所有使用的外部扩展的列表。

于 2015-08-28T20:53:39.430 回答