问题
我最近开始使用PHPStan来分析我的Laravel项目的代码,但是我所有的models都一直收到以下错误
------ --------------------------------------------------------------------
Line Models/Fund.php
------ --------------------------------------------------------------------
14 PHPDoc tag @mixin contains unknown class App\Models\IdeHelperFund.
? Learn more at https://phpstan.org/user-guide/discovering-symbols
------ --------------------------------------------------------------------代码
下面是触发错误的代码:
<?php
namespace App\Models;
/**
* Class Fund
*
* @package App\Models
* @mixin IdeHelperFund
*/
class Fund extends Model
{
//...
}这个mixin是通过运行命令php artisan ide-helper:models -M添加的,这个命令是Laravel IDE-helper包所需要的,顾名思义,它将为集成开发环境添加docblocks到Laravel的输入提示魔术方法中。
所以我试着用下面这段代码用Ignore errors解决这个问题:
includes:
- ./vendor/nunomaduro/larastan/extension.neon
parameters:
paths:
- app
# The level 8 is the highest level
level: 5
ignoreErrors:
-
message: '#PHPDoc tag @mixin contains unknown class App\\Models\\IdeHelper(.*)+\.#'
path: Models/*
excludePaths:
checkMissingIterableValueType: false但不知何故,在Regexr上测试正则表达式时,错误并不匹配。
有什么建议吗?我哪里做错了?我注意到在忽略错误文档中,它们在正则表达式的开头和结尾添加了#,所以我已经将它添加到了我的phpstan配置中,但我不确定这是否是必需的,但是如果没有它们,我会得到以下错误(所以我把它们留在了里面):
-- ------------------------------------------------------------------------------------------------------------------------------------
Error
-- ------------------------------------------------------------------------------------------------------------------------------------
Delimiter must not be alphanumeric or backslash in pattern: PHPDoc tag @mixin contains unknown class App\\Models\\IdeHelper(.*)+\.
-- ------------------------------------------------------------------------------------------------------------------------------------更多信息
我使用的是默认的larastan版本0.7.12扩展。
发布于 2021-09-16 08:35:43
PHPStan就在这里。App\Models命名空间中不存在IdeHelperFund类。
您需要让PHPStan知道文件在哪里。你可以通过扫描额外的文件来做到这一点。点击此处阅读:https://phpstan.org/user-guide/discovering-symbols#third-party-code-outside-of-composer-dependencies
作为Larastan的维护者,我建议你把所有的ide-helper东西都写到文件中。与_ide_helper.php、_ide_helper_models.php、.phpstorm.meta.php一样,ide-helper的这种混合标记可能会干扰PHPStan的分析。
发布于 2021-10-20 13:24:46
为了获得良好的正则表达式,您可以生成带有--generate-baseline标志的基线文件。生成的文件将包含实际错误。
您可以复制模式并将其添加到您的霓虹灯配置中。
在再次运行phpstan之前,不要忘记删除基线文件
https://stackoverflow.com/questions/69204648
复制相似问题