首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHPStan忽略错误正则表达式

PHPStan忽略错误正则表达式
EN

Stack Overflow用户
提问于 2021-09-16 08:09:39
回答 2查看 1.2K关注 0票数 0

问题

我最近开始使用PHPStan来分析我的Laravel项目的代码,但是我所有的models都一直收到以下错误

代码语言:javascript
复制
 ------ --------------------------------------------------------------------
  Line   Models/Fund.php
 ------ --------------------------------------------------------------------
  14     PHPDoc tag @mixin contains unknown class App\Models\IdeHelperFund.
         ? Learn more at https://phpstan.org/user-guide/discovering-symbols
 ------ --------------------------------------------------------------------

代码

下面是触发错误的代码:

代码语言:javascript
复制
<?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解决这个问题:

代码语言:javascript
复制
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配置中,但我不确定这是否是必需的,但是如果没有它们,我会得到以下错误(所以我把它们留在了里面):

代码语言:javascript
复制
 -- ------------------------------------------------------------------------------------------------------------------------------------
     Error
 -- ------------------------------------------------------------------------------------------------------------------------------------
     Delimiter must not be alphanumeric or backslash in pattern: PHPDoc tag @mixin contains unknown class App\\Models\\IdeHelper(.*)+\.
 -- ------------------------------------------------------------------------------------------------------------------------------------

更多信息

我使用的是默认的larastan版本0.7.12扩展。

EN

回答 2

Stack Overflow用户

发布于 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的分析。

票数 1
EN

Stack Overflow用户

发布于 2021-10-20 13:24:46

为了获得良好的正则表达式,您可以生成带有--generate-baseline标志的基线文件。生成的文件将包含实际错误。

您可以复制模式并将其添加到您的霓虹灯配置中。

在再次运行phpstan之前,不要忘记删除基线文件

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69204648

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档