如何判断哪些PHP文件实际使用,哪些不是?

时间:2010-03-06 12:41:50

标签: php dependencies

我有一个大型的PHP网站,我现在要照顾它。它包含数百个单独的PHP文件,但我怀疑只有不到一半的文件正在被使用。其中大部分都可能被删除。

但我真正想要做的最后一件事是浏览每个文件的代码并检查它是否已链接,包含,是否需要等等。对他人或是否可以安全删除。

你知道是否有任何能够做到这一点的工具?

6 个答案:

答案 0 :(得分:8)

看看phpxref,它可能会做你需要的。

  

交叉引用PHP类,函数,变量,常量和require / include用法。

答案 1 :(得分:2)

查看phpdcd

  

phpdcd是用于PHP代码的死代码检测器(DCD)。它扫描PHP项目中所有已声明的函数和方法,并将其报告为“死代码”,至少不会调用一次。

但不要指望它有任何奇迹。

答案 2 :(得分:2)

使用自动化工具分析代码的问题在于,您可能会发现相互链接的批量文件,但从不使用这批文件。相反,可能存在直接访问的文件,但不使用其他文件,也不包含在任何其他文件中。

通常我在绝望中做的是将记录添加到每个文件。访问文件时,简单地将__FILE__写入日志文件。这确实增加了全面的开销。但是经过一段时间后,您实际访问并使用了您的文件列表。

您还可以定期分析日志文件,并从您使用的文件中删除日志记录,从而减少开销。最后,您可以搜索仍具有日志记录代码的文件,以查看哪些文件尚未使用。

答案 3 :(得分:1)

如果您使用测试覆盖率工具,它将告诉哪些肯定使用, 无论您运行的软件的功能如何。 (显然,你运动的越多 软件,非死亡部分执行的越多。)。这包括通过外部html链接访问的任何文件;当然,你必须练习该链接,因为它是你的应用程序功能的一部分。

然后你可以检查一下它说不用的那些确定案例的真实情况。

我们的SD PHP Test Coverage tool会接受您要查看的所有文件列表,并可让您轻松收集此类测试覆盖率数据。它提供了一份摘要报告,显示哪些文件具有任何覆盖范围;那些覆盖率为0%的人可能已经死亡。

答案 4 :(得分:0)

有多种方法可以实现这一目标,但所有方法都涉及一些手工工作。

您最好安装和使用调试器(如Xdebug),它可以显示PHP在您点击它们时所经历的路径。

另一种方法是编写一个匹配'include','include_once','require','require_once'的脚本。可能也检查'eval'和'fopen','file_get_contents'等。 确保你测试/备份。

答案 5 :(得分:0)

您可以使用__construct方法并在使用时记录它。创建实例后,无法设置__construct方法。所以手动添加它们;

class Someclass{
private $clsName;
public function __construct(){
$this->clsName = get_class($this);
YourStaticLogger::yourlogFunction("whatever you want to log" . $this->clsName);
}
//other things
}

您只能跟踪被叫类。这就是我要做的。