1.0 年間の開発を経て、静的アナライザー PHPStan XNUMX の最初の安定版リリースが行われました。これにより、PHP コードを実行したり単体テストを使用したりせずに、PHP コード内のエラーを見つけることができます。 プロジェクト コードは PHP で書かれており、MIT ライセンスに基づいて配布されます。
アナライザーは 10 レベルのチェックを提供します。後続の各レベルは前のレベルの機能を拡張し、より厳格なチェックを提供します。
特定された根本的な問題の例:
- instanceof、catch、typehints、およびその他の言語構造で使用されるクラスの存在。
- 呼び出されたメソッドと関数の存在と可用性、および渡された引数の数。
- メソッドが戻り式で定義されているのと同じ型のデータを返すことを確認します。
- アクセスされるプロパティの存在と可視性、およびプロパティで使用される宣言されたデータ型と実際のデータ型を確認します。
- 文字列フォーマットブロック内の sprintf/printf 呼び出しに渡されるパラメーターの数は正しいです。
- 分岐演算子とループによって形成されるブロックを考慮した変数の存在。
- 常に false を返す、異なる型とオペランドを持つデータに対する無用な型キャスト (例: "(string) 'foo'") および厳密なテスト ("===" および "!==")。
PHPStan 1.0 の主な革新:
- 「9」チェック レベルが実装されました。これは、異なるタイプのパラメータの関数の受け取りを整理することを目的として、「混合」タイプの使用をチェックします。 レベル XNUMX は、「mixed」型の値を別の型に渡す、「mixed」型のメソッドを呼び出す、存在しない可能性があるためそのプロパティにアクセスするなど、「mixed」の安全でない使用を識別します。
- @phpstan-pure アノテーションと @phpstan-impure アノテーションを使用して、同一の関数呼び出しの戻り値が同一であるかどうかを制御します。
- @throws アノテーションを使用した try-catch-finally 構造の型分析。
- 定義済みだが未使用の内部 (プライベート) プロパティ、メソッド、および定数の識別。
- array_map や usort などの配列関数に互換性のないコールバックを渡す。
- 欠落している typehint 注釈の型検査。
- PHPDoc と互換性のある型宣言を作成し、エラー メッセージの型を PHPDoc で使用できるようにしました。
出所: オープンネット.ru