概要
Larabelで開発の際に静的解析をしたかったのでlarastanを導入することになりました。
ただこの系統の資料がgitlabではあんまりなかったので調べながら進めた内容を少しでも対応する人の手助けになったらと思い今回の記事を書きました。
larastan
導入
筆者の環境は以下のような感じ
Laravel Framework 8.83.19
PHP 8.0.23 (cli)
larastan 1.X
まずはlarastanの導入をします。
基本は、公式を見てもらえば大丈夫なんですがざっくりと説明しておきます。
まずはLaravelとPHPのバージョンによって導入するlarastanのバージョンが違うので気をつけてください。
- PHP 8.0+
- Laravel 9.0+
ならばlarastanの2.X
ただし今回筆者はlaravelのバージョンが足りないためlarastanの1.Xをインストールします。
composer require nunomaduro/larastan:^1.0 --dev
インストール後は、アプリのルートディレクトリでphpstan.neon
のファイルを作成します。
設定は、様々ありますがここでは最低限の内容のみ記載します。
includes:
- ./vendor/nunomaduro/larastan/extension.neon
parameters:
paths:
- app
level: 5
では各内容をします。
includes
ではlarastanで使用する設定を他のファイルから取得できるようになっています。
今回記載しているのは、基本の設定っぽいので脳死で入れています。
parameters
では各項目に対して設定します。
基本は、ここから下の内容をどんどん設定をいじる形ですね。
paths
ではソースコードを解析する場所を指定します。
今回であればapp配下のソースコードを解析するように指示します。
level
では解析するルールのレベルを変えることができます。
0~9まであるみたいですが9まで進めることは、筆者では難しかったです…。
また詳細は、長くなってしまうので割愛します。
その他の設定は、こちらからどうぞ
実行
ここまで設定ができればあとは、実行するだけです。
./vendor/bin/phpstan analyse -c phpstan.neon
これで解析OKですがよくここで起こるのは、メモリが足りないってエラーです。
なので筆者でも下記のようにオプションを追加して実行しています。
./vendor/bin/phpstan analyse -c phpstan.neon --memory-limit=1G
これによりメモリが足りないエラーがなくなるのでつけることをおすすめします。
gitlab
導入
CIの説明やgitlabでのCIのやり方は、ここでの説明ではないと思うので割愛します。
実際に記載したコードとしては以下の通りです。
test:
stage: test
script:
- composer install
- ./vendor/bin/phpstan analyse -c phpstan.neon --memory-limit 1G --error-format table
これで実際に実行されてテストの内容を把握することができます。
まとめ
正直導入自体は、そこまで問題ないと思います。
ただし自分自身としては、reviewdogを導入してコメントできるまでは落とし込みたかったんですがよくわからなかったんですよね…。
実際gitlabでの導入が公式参考にしてましたが他の例が少なすぎて断念しました…。
ただし今度は、その参考例にもなりたいので再チャレンジします。