View Issue Details

IDProjectCategoryView StatusLast Update
0000651XdebugUncategorizedpublic2011-01-10 21:08
Reportercbandy Assigned Toderick  
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.

Issue History

Date Modified Username Field Change
2011-01-05 22:45 cbandy New Issue
2011-01-07 23:52 derick Note Added: 0001635
2011-01-07 23:52 derick Status new => closed
2011-01-07 23:52 derick Assigned To => derick
2011-01-07 23:52 derick Resolution open => fixed
2011-01-09 04:40 cbandy Note Added: 0001636
2011-01-09 04:40 cbandy Status closed => feedback
2011-01-09 04:40 cbandy Resolution fixed => reopened
2011-01-10 21:08 derick Status feedback => closed
2011-01-10 21:08 derick Resolution reopened => fixed
2016-07-31 12:36 derick Category Usage problems => Usage problems (Crashes)
2016-07-31 12:38 derick Category Usage problems (Crashes) => Usage problems (Wrong Results)
2020-03-12 16:35 derick Category Usage problems (Wrong Results) => Variable Display
2020-03-12 16:38 derick Category Variable Display => Uncategorized