0

シナリオ: アプリケーションを PHP 4 から PHP 5 に変換中です。アプリケーションは、しばらくの間 PHP 4 で動作する必要があります。つまり、PHP 5 固有の要素はまだ使用できません。私たちは単にアプリケーションが両方のプラットフォームで動作することを確認しようとしています.

アプリケーションには、次のような条件文が多数あります。

if ($variable) { // do something }

これらの変数のいくつかはまったく定義されていないため、エラーの数を減らそうとしています (エラーはたくさんあります)。

これらのエラーを解決するために、次のようなさまざまな領域でチェックを追加しています。

if (!isset($variable)) $variable = "";

また

if (!empty($variable)) { // do something }

質問: これらのエラーを修正する簡単な方法を知っている人はいますか? 問題は、これらの変数がファイル間で (インクルードを介して) 使用されており、変数を定義すると、そのファイルの論理フローが変更される可能性があることです (if (!isset($variable)) { // do something }) .

この質問のポイントは、これらの変数の個々の使用を追跡する際のエラーと時間の消費を減らすことです。現在、変数が何を行っているかを徹底的に調査するか (かなりの時間がかかる場合があります)、または「ファイア アンド フォーゲット」/希望する修正方法を実行する必要があります。

-- 編集 -- 何らかの方法でこれらの変数を参照したり、エラーを見つけて可能な参照をリンクしたりできるある種のチェーンを作成できる、php の cppcheck のようなプログラムを知っている人はいますか? (それが理にかなっていることを願っています。)

4

1 に答える 1

0

私の知る限り、正常に動作する初期化されていない変数を探すコードチェッカーがあります。そのメッセージを処理できます。これはPHP Mess Detectorと呼ばれ、そのルールの 1 つは初期化されていない変数を対象としています。ただし、これは決して完璧ではありません。

もう 1 つの方法は、エラー メッセージを追跡し、それらを使用してコード内の場所を特定することです。私は過去にそれを行ったことがあり、非常にうまく機能しました。反復して警告を記録してください。

ホワイトリストを操作して、リクエストの開始時にホワイトリストに登録された変数をインポートすることもできます。ホワイトリストに登録されていない提出物は、これを適切に機能させるためにアクセス違反エラーを引き起こす必要があるため、この方法は、アプリケーションをより安全にする可能性がありますが、警告を追跡するよりも手間がかかります.

こちらもご覧ください:

于 2012-05-28T11:32:02.120 に答える