PHP コードの静的アナライザー PHPStan 1.0 のリリース

1.0 年間の開発を経て、静的アナライザー PHPStan XNUMX の最初の安定版リリースが行われました。これにより、PHP コードを実行したり単体テストを使用したりせずに、PHP コード内のエラーを見つけることができます。 プロジェクト コードは PHP で書かれており、MIT ライセンスに基づいて配布されます。

アナライザーは 10 レベルのチェックを提供します。後続の各レベルは前のレベルの機能を拡張し、より厳格なチェックを提供します。

  • 基本的なチェック、不明なクラス、関数、メソッド ($this) の定義、未定義の変数、および間違った数の引数の渡し。
  • __call と __get を使用して、未定義の可能性のある変数、未知のマジック メソッド、クラスのプロパティを特定します。
  • $this による呼び出しに限定されず、すべての式で未知のメソッドを検出します。 PHPDocを確認しています。
  • 戻り値の型を確認し、型をプロパティに割り当てます。
  • 「デッド」(決して呼び出されない)コードの基本的な識別。 常に false を返す instanceof 呼び出し、決して起動しない "else" ブロック、および return 後のコードを特定します。
  • メソッドや関数に渡される引数の型を確認します。
  • 型情報の注釈が欠落していることに関する警告。
  • XNUMX つ以上の型のコレクションを定義する間違った共用体型に関する警告。
  • 「nullable」型のメソッドの呼び出しとプロパティへのアクセスに関する警告。
  • 「混合」タイプの使用を確認します。

    特定された根本的な問題の例:

    • 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

  • コメントを追加します