[xdebug-dev] Bug 0000172: coverage produce wrong coverage

From: <xdebug-dev[@]lists.xdebug.org>
Date: Tue, 3 Oct 2006 21:14:12 +0200

The following bug has been RESOLVED.
======================================================================
http://bugs.xdebug.org/bug_view_page.php?bug_id=0000172
======================================================================
Reporter: Xuefer
Handler: derick
======================================================================
Project: Xdebug
Bug ID: 172
Category: Usage problems
Reproducibility: always
Severity: major
Priority: normal
Status: resolved
Operating System:
PHP Version: 4.3.11
Xdebug Version: 2.0.0beta4
Resolution: fixed
======================================================================
Date Submitted: 2006-03-10 13:05 CET
Last Modified: 2006-10-03 21:14 CEST
======================================================================
Summary: coverage produce wrong coverage
Description:
1. not all opcode is catched by coverage at runtime
a.php
<?php

xdebug_start_code_coverage(XDEBUG_CC_UNUSED);
include("b.php");
?>

b.php
<?php

$a = "";
$a =
""
. "abc{$a}abc"
. "abc"
;
$cov = xdebug_get_code_coverage();
print_r($cov);

?>
result:
Array
(
    [/home/xuefer/htdocs/skydotnet_php5/matrix/debug/test/a.php] => Array
        (
            [4] => 1
        )

    [/home/xuefer/htdocs/skydotnet_php5/matrix/debug/test/abc.php] =>
Array
        (
            [3] => 1
            [6] => 1
            [7] => -1
            [8] => -1
            [9] => 1
            [10] => -1
            [13] => -1
        )

)

at least
            [7] => -1
            [8] => -1
should be both 1

2. i'd suggest -1 to be 0
3. very slow with XDEBUG_CC_UNUSED, xdebug_prefil_code_coverage() is
executed no matter if the op_array is done before.
suggested fix:
a. move it to xdebug_compile_file()
b. add a hash (by pointer) that avoid re-fill the same op_array, but the
file included before xdebug_start_code_coverage is will not be prefilled
c. when xdebug_get_code_coverage(XDEBUG_CC_UNUSED), loop though all the
op_array(file/function/class method) for xdebug_prefil_code_coverage(), it
could be a bit hard to get the file op_array
======================================================================

----------------------------------------------------------------------
 derick - 2006-10-03 21:14 CEST
----------------------------------------------------------------------
The wrong coverage output is now fixed in CVS. The performance enhancements
were already added some time ago.

Bug History
Date Modified Username Field Change
======================================================================
2006-03-10 13:05Xuefer New Bug
2006-03-10 13:05Xuefer Bug Monitored: Xuefer
2006-10-03 21:14derick Bugnote Added: 0000468
2006-10-03 21:14derick Assigned To => derick
2006-10-03 21:14derick Resolution open => fixed
2006-10-03 21:14derick Status new => resolved
======================================================================
Received on Tue Oct 03 2006 - 21:14:16 BST

This archive was generated by hypermail 2.2.0 : Sun Jun 24 2018 - 04:00:03 BST