Xdebug 跟踪功能如何排除供应商目录

Xdebug trace function how to exclude vendor dir

我正在使用 Xdebug 分析我的 Laravel 代码。我使用跟踪和覆盖功能。

为了覆盖,我可以配置白名单和排除来配置我要分析的目录和文件。

但是对于trace,我不知道如何配置exclude目录。像vendor,我认为他们没有变化,所以我想排除他们。我只想专注于我的代码。

你知道我如何配置跟踪排除或黑名单吗?

<?xml version="1.0" encoding="UTF-8" ?>
<phpunit backupGlobals="true" colors="true" convertErrorsToExceptions="true"
    convertNoticesToExceptions="true" convertWarningsToExceptions="true" stopOnFailure="false">
    <filter>
        <whitelist processUncoveredFilesFromWhitelist="false" addUncoveredFilesFromWhitelist="false">
            <directory suffix=".php">./../</directory>
            <exclude>
                <directory suffix=".php">./../vendor</directory>
            </exclude>
        </whitelist>
        <blacklist>
        </blacklist>
    </filter>
</phpunit>

要从痕迹中删除东西,您可以使用 Xdebug 的 xdebug_set_filter() 函数。 手册中有一个例子,内容如下:

To exclude all files in the vendor sub-directory in traces:

Example:

<?php
xdebug_set_filter(
    XDEBUG_FILTER_TRACING, XDEBUG_PATH_BLACKLIST, 
    [ __DIR__ . "/vendor/" ]
);
?>

您需要 Xdebug 2.6 或更高版本才能运行。您可以将它放在 index.php 脚本中,或者放在 auto_prepend 脚本中。唯一需要注意的是,在执行 /vendor/ 文件夹中的 include/calls 之前,此行需要 运行。

FWIW,在 Xdebug 3 中,XDEBUG_PATH_BLACKLIST 将是 renamedXDEBUG_PATH_EXCLUDE