如何检测 use 语句中不存在的 class

How to detect non existing class in use statement

如何检测 class NonExistingClass 不存在?

我目前正在检查 PhpStan、Phan、Composer 的功能,但目前还没有。

开发人员删除了 class A 中调用 NonExistingClass 的代码并删除了整个 class NonExistingClass 但没有删除 [=25] 中的 use 语句=] A:

<?php

namespace App\Service;

use App\Model\NonExistingClass;

class A
{
}

如何在静态分析中检测到这种情况?

您无法在 use 语句中检测到不存在的 class,因为它可能是一个命名空间。

您可以做的是检测文件中未使用的用途,这在您的代码示例中就是这种情况。查看 SlevomatCodingStandard.Namespaces.UnusedUsesslevomat/coding-standard 中嗅探 PHP_CodeSniffer。

如果 use 语句中不存在的 class 在文件中实际使用,PHPStan 会告诉您。请在此处查看示例:https://phpstan.org/r/1f05520e-88fe-4a61-9d05-018b466e640d