1. tanakahisateru

    Posted

    tanakahisateru
Changes in title
+PhpStormのInspection警告を制御する
Changes in tags
Changes in body
Source | HTML | Preview
@@ -0,0 +1,48 @@
+PhpStormのInspectionは、型がなかったりスクリプトだったりするPHPなのに、いろいろ厳しくバグの可能性を見てくれてありがたいのですが、ちょっと変わったトリックを使うと警告になってしまいます。一気にチェックしたとき、いちいち警告の中を見て「これは大丈夫なコードだったはず」と除外してレポートを読むのが面倒です。
+
+たとえば、クラスローダやビューなどで、include/require のパスに変数を使うなどすると、Inspection で Unresolved include が出てしまいます。これは include するファイルがないかもしれないという警告です。平易なPHPスクリプトを書いているときはありがたいのですが、フレームワークレベルの開発では邪魔になります。チェックしないようオフにしてしまうのはもったいないので、特定の箇所でだけ警告が出ないようにしたいです。
+
+```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:
+<?php
+class MyPageRenderer
+{
+ public function render($class)
+ {
+ /** @noinspection PhpUnusedLocalVariableInspection */
+ $helper = new MyViewHelper($this);
+
+ /** @noinspection PhpIncludeInspection */
+ require dirname(__FILE__) . '/' . $viewFile;
+ }
+}
+```
+
+これも例の豆電球から `Inspection 'Unresolved local valiable' options` > `Suppress for statement` で挿入できます。
+
+便利なのはだいたいこのあたりでしょうか。
+
+ほか、`@noinspection` には PhpUnusedParameterInspection という、パラメータ未使用の場合に使うものもありました。`func_get_args()` を使った可変長引数をやっている場合などに有効かもしれません。ただ、メソッド宣言のカッコの中に書かないといけないので、これは逆にちょっとうるさいかもしれませんね。
+
+他にも、こんなのもあるみたいなので、意図しない警告が出たら試してみてください。
+
+- PhpUndefinedFunctionInspection
+- PhpUndefinedConstantInspection