Psalmについて¶
Psalmは、プログラムを深く掘り下げ、できるだけ多くの型関連のバグを見つけようとする静的解析ツールです。
他の類似ツールよりも進んでいる機能がいくつかあります:
-
混合型の警告
Psalmが式の型を推論できない場合、mixed
というプレースホルダー型を使用します。mixed
型は時にバグを隠してしまうことがあるため、これらを追跡することで多くの一般的な落とし穴を避けるのに役立ちます。 -
インテリジェントなロジックチェック
Psalmはコードに関する論理的な主張を追跡するため、if ($a && $a) {}
とif ($a && !$a) {}
はどちらも問題として扱われます。また、以前のコードパスで行われた論理的な主張も追跡するため、if ($a) {} elseif ($a) {}
のような問題を防ぎます。 -
プロパティ初期化チェック
Psalmは、コンストラクタが呼び出された後、与えられたオブジェクトのすべてのプロパティに値が設定されているかをチェックします。 -
汚染分析
Psalmはコード内のセキュリティ脆弱性を検出できます。 -
言語サーバー
PsalmにはさまざまなIDEと互換性のある言語サーバーがあります。 -
自動修正
Psalmは検出した多くの問題を自動的に修正できます。 -
自動リファクタリング
Psalmはコマンドラインから簡単なリファクタリングを実行することもできます。
出力例¶
implode_strings.php
というファイルがある場合:
> ./vendor/bin/psalm implode_strings.php
ERROR: InvalidArgument - somefile.php:3:14 - Argument 1 of implode expects `string`, `array` provided (see https://psalm.dev/004)
インスピレーション¶
Psalmには主に2つのインスピレーションがあります:
- EtsyのPhan。これはnikicのphp-ast拡張を使用して抽象構文木を作成します。
- FacebookのHack。これはPHPに似た言語で、多くの高度な型付け機能をネイティブにサポートしているため、docblockが不要です。
目次¶
- Psalmの実行:
- インストール
- 設定
- プラグイン
- コマンドライン使用法
- IDEサポート
- エラー処理:
- PHP以外のファイルのチェック
- コードへの注釈:
- コードの操作: