4

我希望将大型 PHP 网站从 5.2 升级到 5.3,之后可能会更高。

我正在处理的继承代码库非常大,超过 800,000 行代码,并且大部分都在查看向后不兼容的更改列表(http://php.net/manual/en/migration53.incompatible.php)使用代码的字符串搜索可以轻松搜索这些问题,但其他问题(例如引用和 API 更改)更难搜索。我已经使用代码嗅探器尝试识别代码的损坏区域,但代码嗅探器似乎没有找到所有内容(例如未找到引用和 API 问题)。

本质上,我所追求的是一种轻松识别代码嗅探器可能遗漏的受影响代码的方法,而无需运行所有代码或阅读所有代码。有没有一种工具可以基本上扫描代码并告诉我问题区域并为我节省数周/数月的时间?

有任何想法吗?如果这很重要,我忘了提到我们使用 IIS/Windows。

4

1 回答 1

2

通过寻找该页面上提到的特定功能,大多数显式向后不兼容的问题(如您链接的页面上列出的)都相当容易找到。这是一个相对较短的列表,并且更改都相当具体。浏览它们并不难,即使在大型代码库中也是如此,并且列出的大多数更改无论如何都是边缘情况,因此希望您不会对该列表有太多担心。

更大的问题在于5.3 中已弃用的功能列表。这包括您在问题中提到的传递引用功能。

仅通过搜索代码很难找到其中一些功能,尤其是对于大型代码库,如果代码已经存在了一段时间,那么您至少会与其中一些功能发生冲突的可能性非常高。

好消息是您可以在 5.3 中安全地运行您的代码,而无需触及已弃用的功能。这些功能已弃用;这意味着它们已被标记为不好,但它们实际上还没有从语言中删除(大多数都在 5.4 中),所以关于这些特性,你的软件仍然可以像以前一样运行,除了它会抛出警告消息。

因此,在代码中查找所有这些内容的最佳方法就是升级到 5.3,运行代码,然后捕获错误日志中出现的所有警告。

显然,您需要运行相当详尽的测试以确保您找到了所有内容,但这并不一定是坏事 - 事实上,坦率地说,如果您正在升级,无论如何都不这样做是愚蠢的这种规模的系统的语言版本。也许您可以借此机会开始编写那些您还没有设法解决的测试脚本。

于 2013-03-06T13:55:19.737 回答