PHPStan 报告“扩展未知类”的核心 CakePHP 功能

问题描述 投票:0回答:1

我有一个在 CakePHP 4.4.4 上运行的 Web 应用程序

我最近开始使用 PHPStan,代码库运行在 level 1。这个级别是在我们的配置文件中指定的,

phpstan.neon

使用生成基线

vendor/bin/phpstan analyse --configuration phpstan.neon src/ tests/ --generate-baseline 

这给

phpstan-baseline.neon
添加了大约 80 个错误。有一条消息说某些错误无法建立基线,建议重新运行 PHPStan。

运行

vendor/bin/phpstan analyse src/ --memory-limit=1G
时,它报告了有关 CakePHP 类的 6 个错误,该类在
src/Command/
内的几个不同文件中使用。其中一个例子是:

App\Command\AlertsCommand
扩展了未知类
Cake\Console\Command

如果我打开它所指的文件,

src/Command/AlertsCommand.php
,我们有这个:

<?php
namespace App\Command;

use Cake\Console\Command;

class AlertsCommand extends Command
{
    public function initialize(): void
    {
        parent::initialize();
        // ...
    }
 
    // Other functions for this command defined here onwards

}

VSCode 红色下划线“命令”(如

extends Command
)和工具提示显示

未定义类型'Cake\Console\Command'

在此处参考 CakePHP 4 文档时 https://book.cakephp.org/4/en/console-commands/commands.html 我注意到它有

use Cake\Command\Command;
而不是
use Cake\Console\Command;
。我更新了这个并重新运行 PHPStan。

错误数量从 6 个增加到 7 个,并有一条专门关于此更改的消息,其中表示:

忽略错误模式#^App\Command\AlertsCommand::initialize() 调用parent::initialize() 但App\Command\AlertsCommand 不扩展任何类。路径 src/Command/AlertsCommand.php 中的$# 不匹配报告错误。

这没有任何意义。它说 - 引用 - “AlertsCommand 不会扩展任何类”,但显然它会扩展:

class AlertsCommand **extends Command** 

应用程序本身可以工作,因此在进行

use
修改之前,原始代码都不会停止任何工作。

对此的建议将不胜感激。

cakephp phpstan
1个回答
0
投票

PHPStan告诉你:

忽略的错误模式...与报告的错误不匹配。

这意味着您忽略了不再发生的事情。您可以从配置/基线中删除这个被忽略的错误。

您还可以设置

reportUnmatchedIgnoredErrors: false
,这不会被报告。请参阅文档:https://phpstan.org/user-guide/ignoring-errors#reporting-unused-ignores

© www.soinside.com 2019 - 2024. All rights reserved.