Larastan は Can Vural と Nuno Maduro によって作成され、アートワークは @Caneco によってデザインされ、Can Vural と Viktor Szépe によって保守されており、Laravel の PHPStan 拡張機能です。 Larastan はコード内のエラーを見つけることに重点を置いています。コードのテストを作成する前でも、バグのクラス全体を捕捉します。
ただし、定義上、「静的分析」ではアプリケーションのコードは読み込まれません。 Larastan はアプリケーションのコンテナを起動するため、実行時にのみ計算可能な型を解決できます。このため、「静的分析」ではなく「コード分析」という用語を使用します。
Laravelのバージョン | ララスタンバージョン |
---|---|
< 9 | 1.x |
> 9.0 && <11.15 | 2.x |
11.15+ | 3.0+ |
必要:
1 : まず、Composer を使用して、Larastan を開発依存関係として Laravel プロジェクトにインストールします。
composer require --dev " larastan/larastan:^3.0 "
Laravel パッケージの分析に Larastan を使用しますか?
orchestra/testbench
のインストールが必要な場合があります。
2 : 次に、アプリケーションのルートにphpstan.neon
またはphpstan.neon.dist
ファイルを作成します。次のようになります。
includes:
- vendor/larastan/larastan/extension.neon
- vendor/nesbot/carbon/extension.neon
parameters:
paths:
- app/
# Level 10 is the highest level
level: 5
# ignoreErrors:
# - '#PHPDoc tag @var#'
#
# excludePaths:
# - ./*/*/FileToBeExcluded.php
利用可能なすべてのオプションについては、PHPStan のドキュメントをご覧ください: https://phpstan.org/config-reference
3 : 最後に、phpstan コンソール コマンドを使用してコードの分析を開始できます。
./vendor/bin/phpstan analyse
Allowed memory size exhausted
エラーが発生した場合は、 --memory-limit
オプションを使用して問題を解決できます。
./vendor/bin/phpstan analyse --memory-limit=2G
特定のエラーを無視するには、PHP コメントまたは設定ファイルで実行できます。
// @phpstan-ignore-next-line
$ test -> badMethod ();
$ test -> badMethod (); // @phpstan-ignore-line
PHPStan の設定ファイル内のエラーを無視する場合、エラー メッセージに基づいて正規表現を記述することでエラーが無視されます。
parameters :
ignoreErrors :
- ' #Call to an undefined method .*badMethod()# '
古いコードベースでは、高い PHPStan レベルに合格するようにすべてのコードを修正するのに時間を費やすのは難しい場合があります。
これを回避するには、ベースライン ファイルを生成できます。ベースライン ファイルは、現在のエラーをすべて含む構成ファイルを作成するため、古いコードよりも高い標準に従って新しいコードを作成できます。 (PHPStan ドキュメント)
./vendor/bin/phpstan analyse --generate-baseline
Laravel に固有の構成可能なルールのリストは、ここにあります。
Larastan の機能のリストはここにあります。
Larastan に固有の PHPDoc タイプのリストは、ここにあります。
PHPStan 構成ファイルで使用できるカスタム構成パラメーターのリストは、ここにあります。
Laravel の一部の部分は、現在、Larastan/PHPStan が理解できないほど魔法的です。無視すべき一般的なエラーをリストしました。必要に応じて追加してください
ララスタンへの貢献をご検討いただきありがとうございます。すべての投稿ガイドラインはここに記載されています。
Larastan は、MIT ライセンスに基づいてライセンス供与されたオープンソース ソフトウェアです。