1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

PhpStormでパラメタの値を使ってない警告を黙らせたい

Posted at

PhpStormはコードを検査しておかしなものはいろいろ警告してくれて有り難いのですが、ちょっとうるさすぎることがあります。

そのひとつに、パラメタの値を使ってない場合の警告があります。場合によっては本当に使わないのだけどだからといってパラメタを削るわけにはいかないこともあります。

例えばLaravelで独自のバリデータを定義する Validator::extend ではバリデート処理を定義するための無名関数にいろいろ渡されてきますが、結局の所そのパラメタの値である $value だけしか使わないことがよくあります。

スクリーンショット 2018-04-12 9.27.40.png

PhpStormの機能としてこれを黙らせるには以下のような方法があります。

  • Preferenceで設定する。オプションで無名関数についてだけ黙らせることも可能。
  • アノテーション /** @noinspection PhpUnusedParameterInspection */ を使う

でもどちらもちょっと範囲が広すぎて、上の例だと $value 以外の3つのパラメタについてだけ黙らせたいのですがうまくいきません。Perferenceはそもそも全体に影響しますし、@noinspection アノテーションでもブロックの最後までが影響範囲になってしまうのでパラメタごとに抑止するかしないか切り替えることはできないようです。

そこで考えたのが以下の方法です。

        Validator::extend('foo', function ($attribute, $value, $parameters, $validator) {
            assert([$attribute, $parameters, $validator]); // unused
            
            return $value === 'foo'
        });

使ってないとおこられるのなら使えば黙るんだろうということですね。PHP7だと zend.assertions を-1にしとけば assert() のコード生成がされなくなるので本番系などではそうしとけば性能への影響はないはず。やりすぎ?

PHPにも他の言語でよくある使わないパラメタを明示する方法(たとえば function (_, $value, _, _) みたいの)があるといいんですけどね。

1
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
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?