ます’s Blog - どうでもいい記事100選

どうでもいい記事100選

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
        )

)