【问题标题】:Remove useless files from code base从代码库中删除无用的文件
【发布时间】:2012-01-30 08:57:26
【问题描述】:

是否有任何工具可以识别代码库中无用的文件?

我们有一个庞大的代码库(PHP、HTML、CSS、JS 文件),我希望能够删除不需要的文件。任何帮助将不胜感激。

【问题讨论】:

  • 你试过人脑吗? :) 保证满意 :)
  • 它知道某事无用的魔法是什么?
  • @J0HN:用人脑来处理数千个文件和数百个文件夹并不是那么容易。
  • @Wrikken:技术很棒,检查我们是否已经有这样的工具。
  • 我想您可以使用诸如 XDebug 之类的调试器的分析器功能来构建足够的数据来确定所有正在使用的文件,但您永远不能 100% 确定您不需要一个。它可能是一些很少使用并且从不出现在日常使用中的功能。

标签: php javascript html css


【解决方案1】:

我猜想删除文件并运行你的 phpunit 测试是没有启动的。

如果您的文件尚未在版本控制系统中,请添加它们。将文件保存在版本控制系统(例如 svn 或 git)中对于让您从删除任何您认为没有被使用但后来发现被使用的文件中恢复过来至关重要。

然后,您可以删除任何您认为可能没有被使用的内容,如果它不影响您的应用程序的运行,您可以断定这些文件没有被使用。如果出现不利影响 - 您可以轻松地从存储库中恢复它们。

以上最适合(可能)前端文件(css、js、图像)。您删除的任何请求的文件都将显示在您的网络服务器错误日志中,为您提供需要恢复的不再存在的文件的快速参考。

对于您的 php 文件,这有点棘手,您是如何到达一个没有使用 php 文件的位置的?无论如何,例如:

  • 使用 xdebug
  • 启用分析
  • 使用附加模式(一个配置文件)
  • 使用应用程序的所有功能

然后您将拥有一个包含您加载的所有文件的配置文件。扫描代码库中每个 php 文件的生成配置文件,您可以知道哪些文件没有使用。

如果您只是寻找未使用的文件,请不要试图使用代码覆盖率分析 - 它非常密集,而不是您要求的详细程度。

风险稍低的方法是在文件加载时记录。例如把它放在每个文件的第一行:

<?php file_put_contents('/some/location/fileaccess.log', __FILE__, FILE_APPEND); ?>

只需让您的应用程序使用一段时间(几天、几周)。此后只需扫描该日志,查找任何命名的文件 - 删除上面的代码行。对于任何不存在的 - 删除(最好在您的整个源代码中查找文件名并确认它不存在之后)。

或者:您可以使用关闭函数将get_included_files() 的响应转储到日志文件。这将允许您在不编辑源代码树中的所有 php 文件的情况下实现相同的目标。

警告:小心删除您的 php 文件。虽然缺少 css/js/image 可能意味着您的应用程序仍然可以工作,但缺少 php 文件当然会产生更大的影响:)。

【讨论】:

    【解决方案2】:

    如果它在 Git 中,为什么不删除本地文件,然后执行 git rm &lt;file name&gt; 将其从该分支中​​删除。

    【讨论】:

      【解决方案3】:

      同意@AD7six 所说的一切。

      您可能想尝试使用 PHP 以某种方式记录文件的使用(记录到平面文件或数据库)。

      这种技术不必长期使用,您可以在每个文件的顶部使用 include 和 require_once 来实现。

      该技术也适用于 javascript 函数,您只需将每个函数打印到控制台,然后对您的站点进行单元测试。这样你大概可以清理掉很多冗余代码。

      其余的都不是那么容易,但版本跟踪是要走的路。

      【讨论】:

        猜你喜欢
        • 2016-10-17
        • 2013-09-11
        • 1970-01-01
        • 2010-10-08
        • 2014-03-16
        • 2017-07-28
        • 2011-03-23
        • 1970-01-01
        • 2016-05-08
        相关资源
        最近更新 更多