分析PHP程序

时间:2011-12-19 07:53:23

标签: php

我一直在提供PHP程序。然而,这个计划已经被几个不同的人工作了多年。随着时间的推移,事情已被删除并添加。但大多数文件仍在那里。

我想知道是否有可以分析PHP程序的工具。以index.php为例,这个工具将检查并查看女巫文件被调用和使用,这样我就可以删除所有不再使用的死木。

我打算自己写一下,但其他人可能已经做过这样的事了。

欢迎任何建议,谢谢! 麦克

3 个答案:

答案 0 :(得分:3)

正如deceze所提到的,您不能保证找到所有引用的文件,因为它们可能依赖于用户输入。然而,最简单的方法是使用grep工具(有一个“windows grep”应用程序,你可以下载,如果这是你的平台)并找到所有出现的“include”和“require”。如果您遇到deceze提到的情况(包含或要求后跟变量名称),则文件需要手动检查,但如果指定了文件名,则可以将其添加到“使用的列表”中。

也许不是最有效的解决方案,但快速而直观。

答案 1 :(得分:1)

你有几个选项,一个使用xdebug并基本上调试你的应用程序,当你踩到你时会找到正在使用的文件。

另一个是暴力:))逐个开始删除文件并检查应用程序是否损坏。如果要测试很多,这可能需要一段时间。

如果您正在搜索应用程序,搜索依赖项检查程序,则有些团队使用这些应用程序来检查服务之间的依赖关系,例如亚马逊。

答案 2 :(得分:1)

您可以通过调用get_included_files()函数获取包含的所有文件的数组。您可以使用以下代码附加每个文件,该代码将所有包含的文件写入“included.php”中的数组,最简单的方法是使用auto_append_file。接下来,单击整个应用程序。完成后,所有包含的文件都将包含在included.php中,这样您就可以找到实际未使用的文件。

<?php
function writeIncludes( array $includes ) {
  $filename = __DIR__ . '/included.php';

  $output = "<?php\nreturn ";
  if( file_exists( $filename ) ) {
    $files = include( $filename );
  }
  else {
    $files = array( );
  }

  $files = array_merge( $files, $includes );
  $output .= var_export( $files, true );

  file_put_contents( $filename, $output );
}

writeIncludes( get_included_files( ) );

当然,这个脚本对于除当前引用之外的调试没有用,但是它应该让你运行得足够快。它可能很难看,但它会起作用。