我希望将一个大的PHP网站从5.2升级到5.3,之后可能会超越。
我正在处理的继承代码库是非常大的,800,000多行代码,并且在大多数情况下查看向后不兼容的更改列表(http://php.net/manual/en/migration53.incompatible.php),可以使用字符串轻松搜索大多数这些问题搜索代码但其他人(例如by-reference和API更改代码)更难搜索。我已经使用codesniffer来尝试识别破碎的代码区域但是代码似乎没有找到所有内容(例如,没有找到引用和API问题)。
基本上,我所追求的是一种轻松识别受影响代码的方法,无需运行所有代码或读取所有代码,这些代码可能已经错过了。是否有一个工具可以基本上扫描代码并告诉我问题区域并节省我几周/几个月的时间?
有什么想法吗?我忘了提到我们使用IIS / Windows,如果这很重要。
答案 0 :(得分:2)
通过寻找该页面上提到的特定功能,大多数显式向后不兼容的问题(在您链接的页面上列出)都很容易找到。这是一个相对较短的列表,而且变化都非常具体。即使在一个大的代码库中,也不难浏览它们,并且列出的大多数更改都是边缘情况,所以希望你不必担心这个列表。
更大的问题在于list of features that was deprecated in 5.3。这包括您在问题中提到的传递引用功能。
通过搜索代码很难找到其中一些功能,特别是对于大型代码库,如果代码已经存在一段时间,那么可能性很高,至少会有一些错误他们。
好消息是,您可以安全地在5.3中运行代码,而无需触及已弃用的功能。这些功能已弃用;这意味着它们已被标记为坏,但它们实际上还没有从语言中删除(大多数都是5.4),所以关于这些功能,您的软件仍然会像以前一样运行,除了它会发出警告信息。
因此,在代码中查找所有这些内容的最佳方法是升级到5.3,运行代码,并捕获错误日志中出现的所有警告。
显然,你需要进行相当详尽的测试,以确保你已经找到了所有的东西,但这并不一定是件坏事 - 事实上,坦率地说,如果你不这样做,你就不会这样做为那个大小的系统升级语言版本。也许您可以将此作为一个机会开始编写那些您尚未设法解决的测试脚本。