LoginSignup
2
1

PHPStan どうしても解消できない静的解析エラーをPHPStanの設定で見なかったことにする

Last updated at Posted at 2024-01-28

概要

PHPStanを使っていてどうやっても解消できない静的解析エラーをエラーとして扱わないようにする方法を簡単にまとめる。

注意

本方法は多用してはいけません。多用するとPHPStanを入れている意味がなくなります。
コード上でどうにかして対処し、それでもどうしても解消できない場合に使いましょう。

お願い

なるべくエラーを許容する方法で解決したくありません。もっと良い解決方法がございましたらぜひ教えてほしいです。。!

方法

phpstan.neonというファイルに見過ごしたいエラーを指定することでそのエラーをなかったことにする事ができる。
具体的にはignoreErrors:のあとに正規表現を使って見過ごしたいエラーを指定する。

エラーとは下記のように行数とエラー内容で表示されるヤツのことである。

------ ------------------------------------------------------------------------------------- 
 Line   ファイルパス  
------ ------------------------------------------------------------------------------------- 
 107    Access to an undefined property Stripe\StripeObject::$last4.                         
------ -------------------------------------------------------------------------------------

今回のエラー内容は$last4 = $this->paymentMethod?->card?->last4;という処理でlast4のプロパティが見つからないというエラーである。
それもそのはず、対象のプロパティが含まれるクラスは動的クラスだ。last4プロパティは動的クラスに存在しない。

phpstan.neonを探して下記のように書いてみよう。(おそらくこのファイルはPHPStanのチェックレベルを指定するものなのでPHPStanを運用しているならほぼ確実に存在しているはずである。)

phpstan.neon
includes:
    - ./vendor/nunomaduro/larastan/extension.neon

parameters:

    paths:
        - app/
        - config/
        - database/
        - tests/
        - lang/

    # Level 9 is the highest level
    level: 6

    ignoreErrors:
        # Stripe PHP SDK系の動的メソッド回避
        - '#^Access to an undefined property Stripe\\StripeObject::\$last4\.#'

上記で注目すべきはparameters:のなかのignoreErrors:の中の- '#^Access to an undefined property Stripe\\StripeObject::\$last4\.#'の部分である。
配列的にignoreErrors:の中に許容したいエラーを正規表現で記載するらしい。

上記の設定を行い、再びPHPStanを実行したところ当該のエラーは出なかった。

2
1
1

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
1