我将 Xdebug 版本从 2.9.3 升级到 3.0.1,在使用 --code-coverage 运行单元测试后,我发现代码覆盖率结果存在一些差异。 假设有两种环境:
代码示例 1:
public function getAllOptions(): array
{
$this->_options = [
[
'label' => _'label 1,
'value' => 'value 1'
],
[
'label' => _'label 2,
'value' => 'value 2'
]
];
return $this->_options;
}
代码示例 1 的结果:
代码示例 2:
private function moveImportedFileToArchive(Operation $operation): void
{
$sourceFilePath = $this->_filesystem->getDirectoryWrite(DirectoryList::ROOT)->getAbsolutePath()
. $operation->getFileInfo()['file_path']
. '/'
. $operation->getFileInfo()['file_name'];
// @codingStandardsIgnoreStart
$fileName = basename($sourceFilePath);
// @codingStandardsIgnoreEnd
$archiveFileName = (int)gmdate('U') . '_' . $fileName;
$archivePath = static::ARCHIVE_DIR . $archiveFileName;
$this->_varDirectory->renameFile($sourceFilePath, $archivePath);
}
代码示例 2 的结果:
我不知道是什么导致了这些差异。 它们通常发生在将值分配给变量的地方(通常与将数组分配给变量或将变量分配给数组或数组到数组有关)
答案 0 :(得分:3)
Xdebug 3 可能不再涵盖某些行,因为它对收集的信息更具选择性。
我相信您的第一个问题已在 Xdebug 3.0.2 (#1922) 中得到解决。对于第二个问题,如果升级到 Xdebug 3.0.2 后仍然存在,请按照 https://bugs.xdebug.org 的说明在 https://xdebug.org/reporting-bugs 提交错误报告 - 对于代码覆盖率错误,我通常只需要一个完全可解析的显示问题的 PHP 文件。 StackOverflow 不是报告错误的地方。