0

問題

最近、PHPStan を使用してLaravelプロジェクトのコードを分析し始めましたが、すべての .xml で次のエラーが引き続き発生します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
{
    //...
}

これは、 Laravel IDE ヘルパーパッケージに 必要なmixinコマンドを実行することで追加されます。このパッケージは、名前が示すように、IDE がLaravelの魔法のメソッドをタイプヒントするための docblock を追加します。php artisan ide-helper:models -M

そこで、次のコードを使用してエラーを無視してこれを解決しようとしました。

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(.*)+\.
 -- ------------------------------------------------------------------------------------------------------------------------------------

追加情報

デフォルトのララスタンバージョン0.7.12拡張機能を使用しています。

4

2 に答える 2

1

PHPStan はここにあります。IdeHelperFundクラスはApp\Models名前空間にありません。

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.phpide-helper のこの mixin タグは、PHPStan の分析を妨げる可能性があります。

于 2021-09-16T08:35:42.867 に答える