PHP代码分析器确定使用的类/扩展

时间:2012-10-26 14:17:37

标签: php code-analysis lexical-analysis

问题

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

我尝试过什么

我查看了Is there a static code analyzer for PHP files?中列出的工具。不幸的是,这篇文章已过时,大多数有用的工具如phpCallGraph都不再适用。

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

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

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

更新

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

2 个答案:

答案 0 :(得分:3)

您可以使用Gopal Vijayaraghavan的inclued extension代替phpCallGraph,它与Graphviz结合使用,可以为您提供包含特定执行路径的所有包含文件的漂亮图表。

示例:

enter image description here

此外,我建议使用Xdebug(一个PHP调试器),它提供一个分析器,输出Valgrind消耗的数据。将调试器与兼容的IDE一起使用,以遵循执行路径(这有助于我通过例如Drupal的大量调用堆栈来跋涉)。

结合两者,你应该得到一个相当全面的概述。

编辑

搜索网页,发现nWire for PHP - 一个eclipse插件,看起来它可能是适合你的工具(30天免费试用,应该足以让你先行一步)。

答案 1 :(得分:0)

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