1. tanakahisateru

    No comment

    tanakahisateru
Changes in body
Source | HTML | Preview

PhpStormのInspectionは、型がなかったりスクリプトだったりするPHPなのに、いろいろ厳しくバグの可能性を見てくれてありがたいのですが、ちょっと変わったトリックを使うとすぐに警告まみれになってしまいます。一気にチェックしたとき、いちいち警告の中を見て「これは大丈夫なコードだったはず」と除外してレポートを読むのが面倒です。

たとえば、クラスローダやビューなどで、include/require のパスに変数を使うなどすると、Inspection で Unresolved include が出てしまいます。これは include するファイルがないかもしれないという警告です。平易なPHPスクリプトを書いているときはありがたいのですが、フレームワークレベルの開発では邪魔になります。チェックしないようオフにしてしまうのはもったいないので、特定の箇所でだけ警告が出ないようにしたいです。

<?php
class MyClassLoader
{
    public function load($class)
    {
        // ...

        /** @noinspection PhpIncludeInspection */
        require_once dirname(__FILE__) . '/' . $classFile;
    }
}

このアノテーションを挿入すると、そこでだけ警告を出さないようになります。

例の豆電球から Inspection 'Unresolved include' options > Suppress for statement でも挿入できます。

また、メソッド内で includeを呼び、その外部ファイルで使うためのローカル変数を設けるなどした場合、本当は必要なのに、使われていない変数があるという意味の、Unused local valiable 警告が出ます。

<?php
class MyPageRenderer
{
    public function render($view)
    {
        // ...

        /** @noinspection PhpUnusedLocalVariableInspection */
        $helper = new MyViewHelper($this); // 下のrequireで使われる変数

        /** @noinspection PhpIncludeInspection */
        require dirname(__FILE__) . '/' . $viewFile;
    }
}

これも例の豆電球から Inspection 'Unresolved local valiable' options > Suppress for statement で挿入できます。

便利なのはだいたいこのあたりでしょうか。

ほか、@noinspection には PhpUnusedParameterInspection という、パラメータ未使用の場合に使うものもありました。func_get_args() を使った可変長引数をやっている場合などに有効かもしれません。ただ、メソッド宣言のカッコの中に書かないといけないので、これは逆にちょっとうるさいかもしれませんね。

他にも、こんなのもあるみたいなので、意図しない警告が出たら試してみてください。

  • PhpUndefinedFunctionInspection
  • PhpUndefinedConstantInspection