PhpStormで下線警告（インスペクション表示）を出さないようにする

## PhpStorm9 始めました！

　PHPエディタとしてはTeraPad→SublimeText2と使ってきましたが、PhpStorm9になってからかなり高速になったようで、候補表示やクラス認識能力がすごく向上しています。まだまだ使いこなせていませんが、下線警告（インスペクション表示）を訂正していくだけでなんだか精神的に浄化される気がします（笑

## PhpStormで下線警告（インスペクション表示）を出さないようにする

　それでは本題。PhpStormでインスペクションを有効にしていると、PhpDocコメントをこまめに書いてないと怒られまくります。大抵は/** */で囲まれたPhpDocで変数等に注釈をつけることで解消できますが、動的なinclude文など、どうしても解消できない部分がでてきます。そんな時は、思い切って警告を非表示にしてしまいましょう！

　警告を非表示にするには、設定画面の[Editor]-[Inspections]-[PHP]辺りをいじってもいいのですが、範囲が限られている場合はソースコード中にコメント表記で警告を非表示にできます。

　たとえば、動的includeをしていて「そんなファイルねーよ！」と怒られた場合、

```php
/** @noinspection PhpIncludeInspection */
include(SOME_CONSTANT . '/hoge/boo.php');
```

と書いてあげれば、includeの下線を消去することができます。スッキリ～。

･･･と、ここまでは参考記事そのままなんですが、この@noinspectionの次に書いてあるPhpIncludeInspectionの部分（ルール？）、これ以外にもさまざまなものがあります。
（https://gist.github.com/discordier/ed4b9cba14652e7212f5 から引用）

```php
PhpAbstractStaticMethodInspection
PhpHierarchyChecksInspection
PhpUnreachableStatementInspection
PhpUnusedLocalVariableInspection
PhpWrongCatchClausesOrderInspection
PhpDeprecationInspection
PhpDocMissingReturnTagInspection
PhpDocMissingThrowsInspection
PhpDocSignatureInspection
PhpMissingDocCommentInspection
PhpDuplicateArrayKeysInspection
PhpDuplicateCaseInspection
PhpDynamicAsStaticMethodCallInspection
PhpExpressionResultUnusedInspection
PhpForeachArrayIsUsedAsValueInspection
PhpForeachNestedOuterKeyValueVariablesConflictInspection
PhpIllegalArrayKeyTypeInspection
PhpIncludeInspection
PhpInconsistentReturnPointsInspection
PhpInternalEntityUsedInspection
PhpLanguageLevelInspection
PhpMissingBreakStatementInspection
PhpParamsInspection
PhpPassByRefInspection
PhpRedundantClosingTagInspection
PhpSillyAssignmentInspection
PhpTraditionalSyntaxArrayLiteralInspection
PhpUndefinedCallbackInspection
PhpUndefinedClassConstantInspection
PhpUndefinedClassInspection
PhpUndefinedConstantInspection
PhpUndefinedFieldInspection
PhpUndefinedFunctionInspection
PhpUndefinedGotoLabelInspection
PhpUndefinedMethodInspection
PhpUndefinedNamespaceInspection
PhpUndefinedVariableInspection
PhpUnnecessaryFullyQualifiedNameInspection
PhpUnusedAliasInspection
PhpUnusedClassInspection
PhpUnusedFunctionInspection
PhpUnusedParameterInspection
PhpUnusedPrivateFieldInspection
PhpUnusedPrivateMethodInspection
PhpUsageOfSilenceOperatorInspection
PhpVoidFunctionResultUsedInspection
PhpWrongForeachArgumentTypeInspection
PhpAssignmentInConditionInspection
PhpConstantReassignmentInspection
PhpDivisionByZeroInspection
PhpNonCompoundUseInspection
PhpToStringImplementationInspection
PhpToStringReturnInspection
PhpWrongStringConcatenationInspection
PhpIllegalPsrClassPathInspection
PhpMultipleClassesDeclarationsInOneFile
```

これらは設定画面の[Editor]-[Inspections]-[PHP]辺りの設定と対応しているのかな？

## PhpIncludeInspection以外で使いそうなの

UnusedとかUndefined系のインスペクションはエラーの匂いがするのでソースの方を訂正すべきかと思いますが、ソースは変更したくない（動作として問題ない）が警告を消してスッキリしたいことはあると思います。

下記は有用そうだと感じたルールです。

|ルール                        |意味             |使いどころ       |
|-----------------------------|----------------|----------------|
|PhpUndefinedClassInspection  |クラスが未定義　　|PHP7以前でThrowableをcatchしてるとか

使えそうなルールがあったら教えてください！（編集リクエスト待ってます）

## 余談

```php
function hoge($b, $c){
    try{
        // 例外が発生するかもしれないコード
        $a = $b / $c;
        return $a;
    }
    catch( Exception $e ){
        // TODO: 何かの回復処理
        throw new SomeException($e);
    }
}
```

みたいなコードで「Missing return statement」みたいに怒られるのはいかがなものかー･･･
（こういうコード書きませんか？）
~~PhpStormをだまくらかすために~~警告を回避するためには、こう書きます。

```php
function hoge($b, $c){
    $a = NULL;    // 値は何でもいい。初期化しないと怒られる(^^;
    try{
        // 例外が発生するかもしれないコード
        $a = $b / $c;
    }
    catch( Exception $e ){
        // TODO: 何かの回復処理
        throw new SomeException($e);
    }
    return $a;
}
```

うーん、前のコードの方がどう考えても処理効率はいいような気が･･･
他にも最後throwで終わってるとreturnないよとか怒られる。

##参考記事

* [options for phpStorm @noinspection annotation](https://gist.github.com/discordier/ed4b9cba14652e7212f5)
* [PHPStorm で @noinspection を広範囲に適用する](http://qiita.com/ngyuki/items/2db629ad382c08ff3df2) @ngyuki さん
* [PhpStormのInspection警告を制御する](http://qiita.com/tanakahisateru/items/1367cc0412b4b31ae29c) @tanakahisateru さん