LoginSignup
2
0

【Laravel】PHPstanを使う

Last updated at Posted at 2024-03-01

はじめに

こんにちは、エンジニアのkeitaMaxです。

静的解析ツールのPHPStanのLaravel版のlarastanを使用していこうと思います。

この記事を参考に進めていきます。

larastanをインストールして実行する

まずは下記コマンドでLaravelにlarastanをインストールします。

composer require nunomaduro/larastan --dev

次にcomposer.jsonと同じ階層にphpstan.neonを作成します。

phpstan.neon
includes:
    - ./vendor/nunomaduro/larastan/extension.neon
parameters:
    paths:
        - app
    # The level 9 is the highest level
    level: 5
    ignoreErrors:
        - '#PHPDoc tag @var#'
    excludePaths:
        - ./*/*/FileToBeExcluded.php
    checkMissingIterableValueType: false

参考元と全く同じように作成しました。

次に、下記コマンドで解析を開始します。

./vendor/bin/phpstan analyse

すると下記のようなエラーが出てしまいました。

PS C:\develop\docker-laravel-app\src> ./vendor/bin/phpstan analyse
Note: Using configuration file C:\develop\docker-laravel-app\src\phpstan.neon.
 21/21 [============================] 100%

 -- ----------------------------------------------------------------------------- 
     Error
 -- -----------------------------------------------------------------------------
     Ignored error pattern #PHPDoc tag @var# was not matched in reported errors.
 -- -----------------------------------------------------------------------------
     
 [ERROR] Found 1 error

ignoreErrors に設定したエラーパターンがマッチするファイルがない場合に発生します。 すでにエラーが解消されているので、該当のignoreErrorsの設定を削除すればOKです。

ちなみに reportUnmatchedIgnoredErrors: false を設定すればこのエラー設定を無効化できます。ただし、無>効なignoreErrorsの設定が増える可能性があるので注意が必要です。詳細は以下のリファレンスを参照ください。
https://phpstan.org/user-guide/ignoring-errors#reporting-unused-ignores

このURLによると、下記を追加すると治ると書いてありました。

    reportUnmatchedIgnoredErrors: false

reportUnmatchedIgnoredErrorsオプションをfalseにしておかないと、ignoreErrorsオプションに指定した正規表現にマッチするエラーが発生しなかった場合に解析失敗になってしまうので注意が必要です。
(参照:https://qiita.com/ngmy/items/1a8ef21c76d74c1d4dfe)

今回ignoreErrors使っていないと思うので、削除して対処しました。

phpstan.neon
includes:
    - ./vendor/nunomaduro/larastan/extension.neon
parameters:
    paths:
        - app
    # The level 9 is the highest level
    level: 5
    excludePaths:
        - ./*/*/FileToBeExcluded.php
    checkMissingIterableValueType: false

次にLevelを7に上げてみます。

一度指定したレベルを上げるのは大変なので、7に上げておきます。

さいごに

結構すぐにPHPStanを入れることができました。

やり方が違ったり、もっといいやり方があるというご指摘がある方はコメントしていただけると幸いです。

最後まで読んでいただきありがとうございました。

参考文献

次の記事

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0