PHP 静的解析ツール PHPStan のルール一覧

[PHPStan](https://github.com/phpstan/phpstan) 0.5.2 が対象

levelは、0が最も緩くて4が最も厳しい。(デフォルト 0)

```
vendor/bin/phpstan analyse -l 4 src
```

# ルール一覧

|level| 種別     | ルール                                    | 概要                                                                                     |
|-----|----------|-------------------------------------------|------------------------------------------------------------------------------------------|
| 0   | クラス   | AccessPropertiesRule                      | 存在しないとか 親クラスの `private` とかのプロパティへのアクセス(オブジェクト演算子(->)) |
| 0   | クラス   | AccessStaticPropertiesRule                | 存在しないとか 親クラスの `private` とかのプロパティへのアクセス(スコープ定義演算子(::)) |
| 0   | クラス   | ClassConstantRule                         | 不正なクラス定数へのアクセス                                                             |
| 0   | クラス   | ExistingClassesInPropertiesRule           | クラスのプロパティのアノテーション(`/** @var UnknownClass */`)の型が存在しない           |
| 0   | クラス   | ExistingClassInInstanceOfRule             | `instanceof` の右辺値のクラスが存在しない                                                |
| 0   | クラス   | InstantiationRule                         | インスタンス生成(`new`)時のコンストラクタ引数不正                                        |
| 0   | クラス   | RequireParentConstructCallRule            | 親クラスのコンストラクタを呼んでない                                                     |
| 0   | クラス   | UnusedConstructorParametersRule           | コンストラクタのパラメーターで使ってないのがある                                         |
| 0   | 例外     | CatchedExceptionExistenceRule             | `catch` のクラス名が存在しない                                                           |
| 0   | 関数     | CallToFunctionParametersRule              | 関数呼出時の引数の数が不正                                                               |
| 0   | 関数     | CallToNonExistentFunctionRule             | 存在しない関数呼出や、関数呼出時の関数名の大文字小文字間違い                             |
| 0   | 関数     | ExistingClassesInClosureTypehintsRule     | クロージャーの型宣言のクラスが存在しない                                                 |
| 0   | 関数     | ExistingClassesInTypehintsRule            | 関数定義の型宣言のクラスが存在しない                                                     |
| 0   | 関数     | PrintfParametersRule                      | `sprintf/printf` フォーマット文字列(`%s`)と引数の数が一致しない                          |
| 0   | 関数     | UnusedClosureUsesRule                     | クロージャーの `use` の変数を使ってない                                                  |
| 0   | メソッド | CallMethodsRule                           | メソッド系エラー                                                                         |
| 0   | メソッド | CallStaticMethodsRule                     | staticメソッド系エラー                                                                   |
| 0   | メソッド | ExistingClassesInTypehintsRule            | メソッドの型宣言のクラスが存在しない                                                     |
| 1   | 変数     | DefinedVariableInAnonymousFunctionUseRule | 無名関数の `use` の変数が定義されていない                                                |
| 1   | 変数     | DefinedVariableRule                       | 定義されていない変数から、オブジェクト演算子(->)を使ったり、if文の条件式に使ったり       |
| 3   | 配列     | AppendedArrayItemTypeRule                 | 配列のアノテーション(`/** @param int[] $a */`)の型と代入する値の型が一致しない           |
| 3   | クラス   | DefaultValueTypesAssignedToPropertiesRule | クラスのプロパティのアノテーション(`/** @var string */`)の型とデフォルト値の型の不一致   |
| 3   | クラス   | TypesAssignedToPropertiesRule             | クラスのプロパティのアノテーション(`/** @var string */`)の型と一致しない値の代入         |
| 3   | 関数     | ClosureReturnTypeRule                     | クロージャーの戻り値が、宣言と一致しない                                                 |
| 3   | 関数     | ReturnTypeRule                            | 関数の戻り値が、宣言と一致しない                                                         |
| 3   | メソッド | ReturnTypeRule                            | メソッドの戻り値が、宣言と一致しない                                                     |
| 3   | 変数     | VariableCloningRule                       | `clone` の右辺値がオブジェクト型でない                                                   |
| 4   | キャスト | UselessCastRule                           | 無駄なキャスト(`(int)5; (string)'5';`)                                                   |
| 4   | 比較     | StrictComparisonOfDifferentTypesRule      | 常にfalseになる Identical(`===`)                                                         |