4

大規模な PHP Web サイトを 5.2 から 5.3 にアップグレードしようと考えています。

私が取り組んでいる継承されたコードベースは非常に大きく、800,000 行以上のコードであり、ほとんどの場合、下位互換性のない変更リスト ( http://php.net/manual/en/migration53.incompatible.php ) を参照してください。これらの問題は、コードの文字列検索を使用して簡単に検索できますが、他の問題 (参照による問題や API の変更の問題など) は検索が困難です。コードの壊れた領域を特定するために codesniffer を使用しましたが、codesniffer はすべてを見つけられないようです (たとえば、参照による問題や API の問題が見つからないなど)。

基本的に、私が求めているのは、すべてのコードを実行したり、すべてのコードを読み取ったりすることなく、codesniffer が見逃した可能性のある影響を受けるコードを簡単に特定する方法です。基本的にコードをスキャンして問題の領域を教えてくれ、数週間または数か月の時間を節約できるツールはありますか?

何か案は?これが重要な場合は、IIS/Windows を使用することを忘れていました。

4

1 に答える 1

2

明示的に下位互換性がない問題 (リンクしたページにリストされている) のほとんどは、そのページに記載されている特定の機能を探すことで、かなり簡単に見つけることができます。これは比較的短いリストであり、変更点はすべてかなり具体的です。大規模なコードベースであっても、それらをナビゲートするのは難しくありません。また、リストされている変更のほとんどはエッジケースであるため、リストから心配する必要があまりないことを願っています.

より大きな問題は、5.3 で廃止された機能のリストにあります。これには、質問で言及した参照渡し機能が含まれます。

これらの機能のいくつかは、特に大規模なコード ベースの場合、コードを探し回るだけでは見つけるのが難しく、コードがしばらく存在していた場合、少なくともそれらのいくつかに違反する可能性が非常に高くなります。

幸いなことに、非推奨の機能に触れることなく、5.3 でコードを安全に実行できます。機能は非推奨です。つまり、それらは悪いとマークされていますが、実際にはまだ言語から削除されていません (ほとんどの場合、5.4 に含まれています)。したがって、これらの機能に関して、ソフトウェアは以前とまったく同じように動作します。ただし、警告メッセージがスローされます。

したがって、コード内のこれらすべてを見つける最善の方法は、単純に 5.3 にアップグレードしてコードを実行し、エラー ログに出力されるすべての警告をキャッチすることです。

明らかに、すべてを見つけたことを確認するためにかなり徹底的なテストを実行する必要がありますが、それは必ずしも悪いことではありません。そのサイズのシステムの言語バージョン。おそらく、これを機会として、まだうまくできていないテスト スクリプトを書き始めることができます。

于 2013-03-06T13:55:19.737 に答える