首页 > 解决方案 > Xdebug跟踪功能如何排除供应商目录

问题描述

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

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

但是对于trace,我不知道如何配置排除目录。像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>

标签: phpxdebugtracexdebug-profiler

解决方案


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

要排除跟踪中供应商子目录中的所有文件:

例子:

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

您需要 Xdebug 2.6 或更高版本才能正常工作。你可以把它放在你的index.php脚本中,或者放在一个auto_prepend脚本中。/vendor/唯一重要的注意事项是,在执行文件夹中的包含/调用之前需要运行此行。

FWIW,在 Xdebug 3 中,XDEBUG_PATH_BLACKLIST重命名XDEBUG_PATH_EXCLUDE.


推荐阅读