このコード(また、私は読みやすくするためのラインカウンタを追加して、Windows 7のx64の上ではXdebug 2.2.1とPHP 5.4を使用して):PHPのXdebugは何を返すのですか? PHP/Xdebugを持つ
1: xdebug_start_code_coverage();
2:
3: for ($ii = 0; $ii < 3; ++$ii)
4: $x = time();
5:
6: if (false)
7: echo "Never executed.";
8:
9: echo var_dump(xdebug_get_code_coverage());
..私(私が修正したこの出力を取得いくつかの値は、より読みやすくするために):
array (size=1)
'..\testpage.php' =>
array (size=4)
3 => int 1
4 => int 1
7 => int 1
9 => int 1
以上はXdebugのサイトでドキュメントは言う:
「要素の値は、上の実行ユニットの合計数を表しこの行は実行されました。
出典:http://www.xdebug.com/docs/code_coverage
だから明らかに出力が間違っています。 3行目と3行目は3回実行されていたはずですが、Xdebugは1回ずつ実行されていたはずです。 6行目は一度実行されていたはずですが、Xdebugには全く言い訳がありませんでした。 7行目はまだ実行されていないはずですが、Xdebugは1回実行したと言っています。出力は中括弧の有無にかかわらず同じであると言わなければならない。
以上、このURLで:(!7年前)http://xdebug.org/archives/xdebug-general/0377.html
.. Derick RethansはXdebugのが唯一-1、0または1を返し、何とかドキュメントが間違っているという(そしてまだそれがある)キャッチされますしかし、私の例が示すように、Xdebugは1をまっすぐに返し、装備されたカウンターは彼の選択を恣意的にしているようです。 Xdebugが-1、0、または1を返したとしても、それらの値が何を表しているのかわかりません。
だから、あなたのエリートコーダーの誰もがアイデアを持っていますか?ここでXdebugに重大な問題がある場合、Xdebugを使用するプロファイリングとコードカバレッジに使用される他のアプリケーションやプラグインを信頼できないということですか?私は一般的な結婚と思われるPhingとPHPUnitを考えています。
また、この問題についていくつか詳しく説明しています。 Xdebugに欠陥があり、そのようなものであれば、すべての依存アプリケーション、PHPのコードカバレッジレポートには何を使用しますか?
EDIT:私はxdebug_start_code_coverage
に引数として引数XDEBUG_CC_UNUSED
又はXDEBUG_CC_DEAD_CODE
を送信する場合、同じコード例を使用して上記の出力は、不変です。私はXdebugが私のシステムではなくコードカバレッジのために全く機能しないと思っています。
たぶんPHPパーサはまだそれが実行されない場合でも、それを読んで、それのためのネイティブコードを生成することがありますか? –
コール、私はあなたが7行目を考えていると思います。はい、そうかもしれません。しかし、もしXdebugがそのようなことを説明できなければ、全く役に立たないのではないでしょうか?それでも、3行目、4行目、6行目の問題があります。 –
私はXdebugを使ったことがないので、明確な回答はできませんが、(http://www.digipedia.pl/usenet/thread/15739/ 883 /)は、実際に行が実行されていると思われる回数を返さないようです。 – kennypu