2
1

More than 3 years have passed since last update.

CakePHP4 で phpstan を使えるようにする

Last updated at Posted at 2020-03-15

CakePHP4 を docker-compose で動くようにする

の続きです。

静的解析を行う 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つのファイルを解析対象からはずしました。

phpstan.neon
parameters:
    level: max
    excludes_analyse:
        - src/Console/Installer.php
        - src/Controller/PagesController.php

composer.json の変更

./composer.json へはすでに phpstan を実行する script が設定されています。
composer check したときに phpstan も実行したいので、その部分のみ追記します。

check の処理順も 静的解析 > コード規約チェック > テスト っという順番に変えました。
テストの前にできる範囲でのチェックはしたいなっという考えです。

composer.json
{
    // ...
    "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 の開発では、だいぶ緩めないと(許容するエラーを増やす)エラーが出まくる気がしてます。
対応は、作りながら考えます。
心配ばっかりして先に進めないのはつまらないですからね。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1