PHP 使用 PHPUnit 和 XDebug 的生成器中提前退出的代码覆盖率

PHP Code Coverage of early exit in Generators with PHPUnit and XDebug

我不确定这是否是一个错误,但我似乎无法通过 PHP 5.5 生成器中的提前退出获得 100% 的覆盖率。

例如:

<?php

function gen($branch = false)
{
    yield;

    if($branch) {
        echo 'branched';
        return;
    } // This line is never covered.
    echo 'did not branch';

}

永远不会覆盖 if 语句的右括号。没有考虑"dead code",表现得好像你没有考虑退出if语句的可能性。

我不想使用 else,因为正如 phpmd 所说,"else is never necessary",但我希望获得 100% 的覆盖率(这样可以很容易地看出我是否在没有向下钻取的情况下遗漏了新代码中的某些内容。

还有其他人 运行 参与其中吗?有解决办法吗?

这是一个bug in Xdebug, and is resolved in version 2.4.0