PHP / Xdebugを使用したこのコード(Windows 7x64でXdebug2.2.1とPHP5.4を使用し、読みやすくするために行カウンターを追加しました):
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行目と4行目は3回実行されているはずですが、Xdebugはそれぞれ1回実行されています。6行目は一度実行されるべきでしたが、Xdebugにはまったく発言がありませんでした。7行目は間違いなく実行されるべきではありませんでしたが、Xdebugは一度実行されたと述べています。中括弧の有無にかかわらず、出力は同じままであると言わなければなりません。
このURLで:http://xdebug.org/archives/xdebug-general/0377.html
.. Derick Rethansは、(7年前に!)ドキュメントが間違っている(そして今でもそうです)、Xdebugは-1、0、または1しか返さないと言っているのを見つけました。しかし、私の例が示すように、Xdebugは1をまっすぐに返します。装備されたカウンターは彼の選択を恣意的にしているようです。Xdebugが-1、0、または1を返したとしても、それらの値が何を示しているのかわかりません。
だから、あなたのエリートコーダーの誰かがアイデアを持っていますか?そして、ここでXdebugに深刻な問題がある場合、それは、プロファイリングとコードカバレッジに使用される他のアプリケーションとプラグインがXdebugを使用することを信頼できないことを意味しますか?私はPhingとPHPUnitを考えています。これは一般的な結婚のようです。
また、この問題について詳しく説明したい場合は、Xdebugに障害があり、すべての依存アプリケーションに障害がある場合、PHPのコードカバレッジレポートに何を使用しますか?
編集:同じコード例を使用した上記の出力は、引数を送信した場合、XDEBUG_CC_UNUSED
またはXDEBUG_CC_DEAD_CODE
引数としてに送信した場合でも変更されませんxdebug_start_code_coverage
。Xdebugは、私のシステムではなく、コードカバレッジではまったく機能しないと思い始めています。