はじめに
Laravel での開発効率・品質向上に繋がる便利なパッケージのまとめ記事です。
パッケージ名 | 用途 | 対応バージョン |
---|---|---|
Laravel Pint | コード整形 | PHP 8.1 以上 |
Larastan | 静的コード解析 | PHP 8.0 以上 かつ Laravel 9.x 以上 |
Laravel Telescope | デバッグ | PHP 8.0 以上 かつ Laravel 8.37 以上 |
PHP Insights | コード品質分析 | PHP 7.4 以上 |
Laravel Pint
概要
PHP-CS-Fixer をベースとして作成された Laravel 用のコード整形ツール
対応バージョン
PHP 8.1 以上
インストール手順
Laravel 9.x 以上のアプリケーションであれば基本的には不要です。
もしインストールされていなければ、以下のコマンドを実行してください。
composer require laravel/pint --dev
使い方
以下のコマンドを実行するとコードが整形され、ファイルが自動で変更されます。
./vendor/bin/pint
ファイルを自動で変更したくない場合は、--test
オプションを付加して実行してください。
./vendor/bin/pint --test
補足
整形ルールを変更する場合は、PHP-CS-Fixer のドキュメントを参照して pint.json
に記載してください。
例)不要なPHPDocのタグを削除するルールを OFF にする
{
"preset": "laravel",
"rules": {
"no_superfluous_phpdoc_tags": false
}
}
Larastan
概要
PHPStan をベースとして作成された Laravel 用の静的コード解析ツール
対応バージョン
PHP 8.0 以上 かつ Laravel 9.x 以上
※ Laravel 9.x 未満の場合でも古いバージョンの Larastan であれば利用可能ですが、今回は対象外とさせていただきます。
インストール手順
以下のコマンドを実行してください。
composer require nunomaduro/larastan:^2.0 --dev
phpstan.neon
または phpstan.neon.dist
の名称で設定ファイルを作成してください。
includes:
- ./vendor/nunomaduro/larastan/extension.neon
parameters:
paths:
- app/
# Level 9 is the highest level
level: 5
使い方
以下のコマンドを実行すると静的解析が実行され、コンソールに結果が出力されます。
./vendor/bin/phpstan analyse
もし Allowed memory size exhausted
のエラーが表示された場合は、--memory-limit
オプションを付加してメモリの上限を上げて実行する必要があります。
./vendor/bin/phpstan analyse --memory-limit=2G
補足
細かい設定を行いたい場合は、以下のリンクを参照して phpstan.neon
または phpstan.neon.dist
に記載してください。
例)===
や !==
で常に true となる条件文があればエラーとする
parameters:
checkAlwaysTrueStrictComparison: true
また、既存のプロジェクトに静的解析ツールを導入して現状のプログラムを修正するのはリスクを伴います。 そのような場合は --generate-baseline
オプションを付加して静的解析を実行し、ベースラインファイルを作成すれば対応可能です。ベースラインファイルには現状のプログラムから検出されたエラーが出力されます。ファイルを読み込むことで、そのエラーを以降の静的解析で無視することができます。
./vendor/bin/phpstan analyse --generate-baseline
# メモリ不足の場合はこちら
./vendor/bin/phpstan analyse --memory-limit=2G --generate-baseline
なお、作成したベースラインファイルを読み込むためには phpstan.neon
または phpstan.neon.dist
に以下の追記が必要です。
includes:
- ./phpstan-baseline.neon
Laravel Telescope
概要
アプリケーションが受信するリクエスト、データベースのクエリ、実行した Artisan コマンド、発生した例外などをブラウザから確認できる Laravel のデバッグツール
対応バージョン
PHP 8.0 以上 かつ Laravel 8.37 以上
※ Laravel 8.37 未満の場合でも古いバージョンの Telescope であれば利用可能ですが、今回は対象外とさせていただきます。
インストール手順
データベースに接続可能な状態で、以下のコマンドを実行してください。
composer require laravel/telescope --dev
php artisan telescope:install
php artisan migrate
次に、ローカル環境でのみ Telescope を動作させるため、config/app.php
からapp\Providers\TelescopeServiceProvider::class
の記述を削除してください。そして、その代わりに app/Providers/AppServiceProvider.php
に以下の記述を追記してください。
public function register(): void
{
if ($this->app->environment('local')) {
$this->app->register(\Laravel\Telescope\TelescopeServiceProvider::class);
$this->app->register(TelescopeServiceProvider::class);
}
}
最後に、Package Discovery の機能で Telescope が自動で検出されないように、composer.json
の "dont-discover"
に "laravel/telescope"
を追記してください。
"extra": {
"laravel": {
"dont-discover": [
"laravel/telescope"
]
}
},
使い方
Laravel の開発用サーバを php artisan serve
で起動して /telescope
にアクセスすると Telescope のダッシュボードを開けます。
補足
Telescope では telescope_entries
テーブルに各種データを保存しており、あっという間に大量のデータが登録されます。したがって、以下のコマンドをスケジュール実行等で定期的に実行する必要があります。ちなみに、デフォルトで24時間を超過したデータが削除されます。
php artisan telescope:prune
また、もしローカル環境で Telescope を無効にしたくなった場合は .env
に以下の記述を追記してください。
TELESCOPE_ENABLED=false
PHP Insights
概要
以下の観点でコードの品質を分析するツール
-
コードの品質
- 未使用の変数がないか
- 等価演算子は
==
でなく===
を使用しているか など
-
コーディングスタイル
- 余分な空白行がないか
- 1行の文字数が多すぎる行がないか など
-
アプリケーションアーキテクチャ
- 1つの関数に多くの処理を記述していないか
- 1つのファイルに複数のクラスが宣言されていないか など
-
コードの複雑さ
- 循環的複雑度が高くないか
循環的複雑度とは?(Wikipedia より引用)
循環的複雑度(英: Cyclomatic complexity)とは、ソフトウェア測定法の一種である。Thomas McCabe が開発したもので、プログラムの複雑度を測るのに使われる。プログラムのソースコードから、線形的に独立した経路の数を直接数える。
対応バージョン
PHP 7.4 以上
インストール手順
以下のコマンドを実行してください。
composer require nunomaduro/phpinsights --dev
php artisan vendor:publish --provider="NunoMaduro\PhpInsights\Application\Adapters\Laravel\InsightsServiceProvider"
使い方
以下のコマンドを実行すると分析が開始されます。
php artisan insights
分析が完了すると、コード全体に関する分析結果がコンソールに表示されます。
Enter キーを押すと、続けて具体的に修正すべき箇所が表示されます。
補足
自動で修正しても問題ないと思われる一部の箇所に関しては、--fix
オプションを付加して実行すれば自動で修正を行うことができます。
php artisan insight --fix