View Issue Details

IDProjectCategoryView StatusLast Update
0000651XdebugUncategorizedpublic2011-01-10 21:08
Reportercbandy Assigned To 
PrioritynormalSeverityminorReproducibilityalways
Status closedResolutionfixed 
PlatformLinuxOSGentooOS Versionstable
Product Version2.1.0 
Summary0000651: Incorrect code coverage after empty() in conditional when using XDEBUG_CC_UNUSED
Description

When empty() is the first and only condition on the first line of an if condition, the next line is not reported as covered.

In the below example, line 8 is not reported as covered.

Removing the bang has no effect.
Replacing empty() with isset() has no effect.
Swapping lines 7 and 8 shows full coverage.
Appending line 8 to line 7 shows full coverage.

Steps To Reproduce

Script:

<?php

xdebug_start_code_coverage(XDEBUG_CC_UNUSED);

function repeat($x)
{
if ( ! empty($x)
AND $x !== 1
AND $x !== 2
AND $x !== 3)
{
$y = 'covered';
}
}

repeat(0);
repeat(1);
repeat(2);
repeat(3);
repeat(4);

print_r(xdebug_get_code_coverage());

Actual Result:

Array
(
[code_coverage.php] => Array
(
[5] => 1
[7] => 1
[8] => -1
[9] => 1
[10] => 1
[11] => 1
[12] => 1
[13] => 1
[14] => 1
[16] => 1
[17] => 1
[18] => 1
[19] => 1
[20] => 1
[22] => 1
)

)

Expected Result:

Array
(
[code_coverage.php] => Array
(
[5] => 1
[7] => 1
[8] => 1
[9] => 1
[10] => 1
[11] => 1
[12] => 1
[13] => 1
[14] => 1
[16] => 1
[17] => 1
[18] => 1
[19] => 1
[20] => 1
[22] => 1
)

)

Additional Information

PHP 5.3.4-pl0-gentoo

TagsNo tags attached.
Operating System
PHP Version5.3.3

Activities

derick

2011-01-07 23:52

administrator   ~0001635

Fixed in SVN for 2.1.1 and 2.2.0. Thanks for your report!

cbandy

2011-01-09 04:40

reporter   ~0001636

The ! empty() and ! isset() cases are fixed in SVN, but empty() and isset() are still incorrect.