xdebug_get_code_coverage(続き)
先日の件ですが。
1.3系統だと連続して実行された部分は正しくカウントUPされているのですが、どうも結果が芳しくない(ファイルがネストしまくると実行位置がずれる)。
2.0系統だと連続して実行された部分は1にしかならないのですが、結果は良好(実行位置がずれない)。
迷ったあげく、実行位置が正確に記録される事を重視して2.0系統を採用。
正しくカウントUPされない件は、回帰テスト用プログラムに情報を蓄積(カウントUP)していく集計プログラムを実装したので、運用でカバーする事にしました。
テスト・プログラムを何度も動かす事で情報がどんどん蓄積(カウントUP)されていく、という逃げ。_| ̄|○
ただ、変数代入時に定数や関数を混ぜたり複数行で定義している場合は(自分の中では)期待しなかった動作に。そういうものなのかな。
ユーザー定義関数は一度も実行されなくても評価自体は行われるので、10行目が記録されているのは(なんとなく)納得。
% less -N ./coverage.php 1 <?php 2 3 xdebug_start_code_coverage( ); 4 5 function hoge( $XX ) // この位置が記録される 6 { 7 return $XX; // この位置が記録される 8 } 9 10 function huga( $YY ) // この位置が記録される 11 { 12 return $YY; 13 } 14 15 $Buffer = "A"; // この位置が記録される 16 17 $Buffer = "A". 18 "B"; // この位置が記録される 19 20 21 $Buffer = "A". 22 MASUGATA. // この位置が記録される 23 "B"; 24 25 $Buffer = "A". 26 MASUGATA. // この位置が記録される 27 hoge( 10 ). // この位置が記録される 28 "B"; 29 30 print_r( xdebug_get_code_coverage( ) ); 31 32 ?> % php ./coverage.php Array ( [/path/to/coverage.php] => Array ( [5] => 1 [7] => 1 [10] => 1 [15] => 1 [18] => 1 [22] => 1 [26] => 1 [27] => 1 [30] => 1 ) )