我一直在提供PHP程序。然而,这个计划已经被几个不同的人工作了多年。随着时间的推移,事情已被删除并添加。但大多数文件仍在那里。
我想知道是否有可以分析PHP程序的工具。以index.php为例,这个工具将检查并查看女巫文件被调用和使用,这样我就可以删除所有不再使用的死木。
我打算自己写一下,但其他人可能已经做过这样的事了。
欢迎任何建议,谢谢! 麦克
答案 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( ) );
当然,这个脚本对于除当前引用之外的调试没有用,但是它应该让你运行得足够快。它可能很难看,但它会起作用。