こんにちは!
突然ですが、Laravelを使っていてコードの可読性の低さやバグの多さに悩んでいませんか?
特に、プロジェクトが大きくなるにつれて、保守性や可読性が低下し、開発チーム全体の生産性が影響を受けることも。
そんな悩みを解消するための強力なツールが、今回ご紹介する「Larastan」です。
Larastanは、PHPStanを基にしたLaravel専用の静的解析ツールで、型安全性を向上させると同時に、潜在的なバグを事前に検出することができます。
本記事では、LarastanがどのようにLaravel開発をサポートするのか、その導入方法や実際の活用事例を紹介します。開発の効率を高めたいあなたに、ぴったりの情報をお届けします!
導入方法
まずは公式サイトをご紹介します。
こちらの公式に沿って解説していきます。
まずは、composer経由でLarastanをLaravelプロジェクトにインストールしていきましょう。
$ composer require --dev "larastan/larastan:^2.0"
phpstanの設定
次に、プロジェクトルートに設定ファイルを作成します。
$ touch phpstan.neon
作成した設定ファイルを以下のように編集します。
includes:
- vendor/larastan/larastan/extension.neon
parameters:
paths:
- app/
# Level 9 is the highest level
level: 5
# ignoreErrors:
# - '#PHPDoc tag @var#'
#
# excludePaths:
# - ./*/*/FileToBeExcluded.php
#
# checkMissingIterableValueType: false
重要なのは、以下の行です。
level: 5
ここで、解析のレベルを設定しています。解析レベルは1〜9まであり、数字が大きくなるにつれて判定が厳しくなります。なおデフォルトでは、5となっています。
解析実行
ここまでで基本的なセットアップは終了です。非常に簡単ですよね。
解析を実行するには、以下のコマンドを実行します。
$ ./vendor/bin/phpstan analyse
何もエラーがなければ、以下のような出力になります。
エラーがあった場合は、以下のようになります。
具体的にどこがどのような理由でエラーになっているかがわかるので、便利ですよね✨
運用方法あれこれ
普通にコマンドを叩いて、都度解析結果を確認するのでも良しです。
ただ、より本格的に開発に組み込みたい場合は、次に紹介する方法など試してみてはいかがでしょうか。
Gitのpre-pushフックにLarastanを導入する
お恥ずかしながら筆者は最近知ったのですが、Gitには「pre-pushフック」といって、リポジトリにpushする前に特定の処理を実行できる機能があったらしいです。というわけで、これを使ってみます。
pre-pushフックの実行ファイルは、.git/hooks/pre-push
になるようです。デフォルトで、.git/hooks/pre-push.sample
というファイルがあるので、こちらをコピーしていきます。
$ cp .git/hooks/pre-push.sample .git/hooks/pre-push
$ vim .git/hooks/pre-push
テキストエディタはなんでも良いですが、今回はvimで編集していきます。
echo "larastan実行中..."
cmd="./vendor/bin/phpstan analyse"
$cmd
if [[ $? -ne 0 ]]; then
echo "静的解析が失敗したので、pushしませんでした"
exit 1
fi
echo "静的解析が通ったので、pushを進めます"
exit 0
こんな感じでシェルスクリプトを書くと、pushする前にLarastanを実行してくれます。
$ git push -u origin master
larastan実行中...
静的解析が通ったので、pushを進めます
...
他にも、pre-commitフックなど色々とあるみたいなので、ぜひ一度調べてみると良いです。
CIでLarastanを実行する
例えば、GitHub ActionsなどでリポジトリにpushするたびにLarastanを実行することもできます。
$ mkdir .github/workflows && touch .github/workflows/laravel-test.yml
laravel-test.yml
を次のように編集します。
name: Laravel Test
on:
push:
branches:
- master
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Set up PHP
uses: shivammathur/setup-php@v2
with:
php-version: '8.2'
- name: Install dependencies
run: |
cp .env.example .env
composer install
php artisan key:generate
- name: Run Larastan
run: ./vendor/bin/phpstan analyse
こうすることで、masterブランチにpushされるたびに、Larastanを実行することができるようになります。
コメント