为什么 PHPUnit 代码覆盖率不会报告未调用的函数?

Why won't PHPUnit code coverage report functions that aren't called?

我正在尝试获取我的一个项目的代码覆盖率,但未调用的函数和 类 不会计入覆盖率计算。当忽略大块代码时,很难看出还没有涵盖(很多)的内容。

在下图中,我希望前三个函数的主体以红色突出显示。至少在执行的函数中未执行的行显示为红色。

为了它的价值,我 运行 Debian 测试 PHP 7.0.12-1 和 XDebug 2.4.1-1 由 apt 安装并使用 PHPUnit 4.8.27 由 Composer 安装。

代码覆盖率报告应该包括计算中的所有代码,而不仅仅是彩色的东西。您确定排除了未突出显示的代码吗?非高亮代码只是没有测试的代码,红色高亮是针对已经测试代码但尚未测试的方法中的代码位(例如条件语句,您只测试了条件的一侧)

这似乎是 XDebug 和 PHP 7.0 的持续错误,如本期所述:https://github.com/sebastianbergmann/php-code-coverage/issues/411 因此,它应该按我预期的方式工作,并且我的设置没有任何错误。我想我只需要等到根本原因(在 XDebug 中)被发现并修复。在此之前,线程指出打开进程隔离是一种解决方法。