CakePHP4 を docker-compose で動くようにする
の続きです。
静的解析を行う phpstan を使えるようにします。
この記事でわかること
- CakePHP4 プロジェクトへ phpstan (静的解析)を使えるようにします。
- この記事内のソースは以下で公開しています。
※ 最適な phpstan の設定はこの記事ではわかりません。作りながら phpstanの設定 (phpstan.neon) を見直す予定です。
僕の Mac の各種バージョンは以下です。
バージョン | |
---|---|
docker | Docker version 19.03.8, build afacb8b |
docker-compose | docker-compose version 1.25.4, build 8d51620a |
CakePHP4 | 4.0.4 |
Vue.js | 2.6.11 |
laravel-mix | 5.0.1 |
PHPStan の導入
コンテナを使って、開発のみで利用するライブラリとして phpstan を導入します。
※ 「Use PHPStan via Docker」 というコンテナ経由で phpstan を実行する方法も提供されていますが、今回は開発ライブラリとして取り込む方法を採用します。現時点の phpstan (v0.12.14) は依存がぜんぜんなくてツールとしてバッチシな作りなので。
docker-compose up -d
docker exec -it app php composer.phar require --dev phpstan/phpstan
phpstan.neon の作成
プロジェクトのカレントディレクトリへ ./phpstan.neon
を作成します。
レベルは最大:max(現時点では 8)として、最初からエラーとなってしまう2つのファイルを解析対象からはずしました。
parameters:
level: max
excludes_analyse:
- src/Console/Installer.php
- src/Controller/PagesController.php
composer.json の変更
./composer.json
へはすでに phpstan を実行する script が設定されています。
composer check
したときに phpstan も実行したいので、その部分のみ追記します。
check の処理順も 静的解析 > コード規約チェック > テスト っという順番に変えました。
テストの前にできる範囲でのチェックはしたいなっという考えです。
{
// ...
"scripts": {
// ... "@stan" を追加します。
"check": [
"@stan",
"@cs-check",
"@test"
],
// ...
},
動作確認 (実行)
コンテナを使って実行します。
docker exec -it app php composer.phar check
空なプロジェクトなので、結果は下のような感じでした。
> phpstan analyse src/
Note: Using configuration file /var/www/html/phpstan.neon.
6/6 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
[OK] No errors
> phpcs --colors -p --standard=vendor/cakephp/cakephp-codesniffer/CakePHP src/ tests/
........... 11 / 11 (100%)
Time: 4.61 secs; Memory: 10MB
> phpunit --colors=always
PHPUnit 8.5.2 by Sebastian Bergmann and contributors.
............ 12 / 12 (100%)
Time: 3.98 seconds, Memory: 14.00 MB
OK (12 tests, 29 assertions)
たぶんですが、CakePHP4 の開発では、だいぶ緩めないと(許容するエラーを増やす)エラーが出まくる気がしてます。
対応は、作りながら考えます。
心配ばっかりして先に進めないのはつまらないですからね。