概要
PHPStanはPHPのソースコードを検証し、バグの原因になりうる記述や非推奨・廃止されたメソッド等を警告してくれる静的分析ツール。
本稿では、PHPStanを導入しVSCodeで自動チェックする方法を紹介する。
PHPStanを導入することで、バグを未然に防ぐことができるようになる。
またここでは、Drupalの開発で利用する想定で紹介する。
環境情報
- Mac Monterey 12.7
- Apple M1
composer:2.6.5
- HomeBrewでインストール
- 以下のパスが通っていること
export PATH=$HOME/.composer/vendor/bin:$PATH
*Drupal 9, 10 で動作確認 済
手順
PHPStanをcomposerでインストール
composerを使って、PHPStanとDrupal用のPHPStanプラグインをGrobalにインストールする。
- *プロジェクト(composer local)に導入するのが一般的。その場合は
--dev
オプションをつけることを推奨する。 - ここでは
~/.composer/vendor
にインストールされる。
composer global require phpstan/phpstan phpstan/extension-installer mglaman/phpstan-drupal phpstan/phpstan-deprecation-rules
- *プロジェクト(composer local)に導入するのが一般的。その場合は
phpstanがインストールできたことを確認する。
phpstan --version
PHPStan - PHP Static Analysis Tool 1.10.40
phpstanの設定ファイルを作成
任意の場所に
phpstan.neon
を作成する。- ファイル名は任意に変えて良い。
- ここでは
~/.composer/
に作成する。*プロジェクトルートに作成するのが一般的。
vi ~/.composer/phpstan.neon
以下の内容を記載して保存する。
level
:分析の強度、0 から 9(= max) の整数値。大きいほどチェックが厳しくなる。 参考
parameters: level: 6 paths: - %currentWorkingDirectory%/web/modules/custom - %currentWorkingDirectory%/web/themes/custom excludePaths: - %currentWorkingDirectory%/**/*Test.php - %currentWorkingDirectory%/**/*TestBase.php
*2023/11/02 設定ファイルの内容を修正。プロジェクトルート以外に置く場合は、
%currentWorkingDirectory%
でファイルパスを補完する必要がある。
VSCode側の操作
VSCodeの拡張機能「phpstan」をインストールします。
コマンドパレットを開き(
⌘ + Shift+ p
)、「基本設定:ユーザ設定を開く」を押下する。settings.jsonに以下の設定を追加して保存する。
- 最後尾の設定は
,
がいらない点に注意 - 設定画面からでも入力可能。添付画像を参照のこと。
"phpstan.binPath": "/Users/user_name/.composer/vendor/bin/phpstan", "phpstan.configFile": "/Users/user_name/.composer/phpstan.neon",
- 最後尾の設定は
サンプルソースで動作確認 *すでにDrupalの環境がある方はスキップ&自分の書いたコードで動作確認のこと。
任意の場所で、Drupal project を作成する
composer create-project drupal/recommended-project:10.0.11 "test"
cd test
サンプルモジュール:helloworld 2.0.1 | Drupal.orgをインストールします。
composer require 'drupal/helloworld:^2.0'
vscodeで
helloworld/src/Controller/DefaultController.php
を開きます。- 【注意】プロジェクトルートがワークスペースのルートになるように開かないと、うまく分析できない。
画像の通り、18行目に警告が出ている。*「問題」一覧でも確認可能。
以上
参考
- Getting started | PHPStan | Drupal Wiki guide on Drupal.org
- GitHub - mglaman/phpstan-drupal: Extension for PHPStan to allow analysis of Drupal code.
- PHPStan 公式ドキュメント
付録
A: コマンド
本編はエディタで自動チェックする方法を紹介したがコマンドラインでも使用することができる。
コマンドラインでの使い方はここでは割愛する。公式ドキュメントを参照されたし。
特に、DrupalにおいてはDrupal Checkというツールでどうようのことができる(裏でPHPStanが動いているようす)。
このパッケージを導入し、以下のようなコマンドを実行すると、PHPStanを分析レベル6で実行した時と同じ結果を得ることができる。
drupal-check -a /path/to/target/file.php
Druapl Check 導入は以下の記事で紹介している。
Drupalの非推奨コードをチェックしてくれる分析ツールの紹介 | 株式会社アイ・プライド
B: phpstan: Class Drupal\node\Entity\Node not found
左のエラーなどあるはずのクラスが認識されない
Globalのvendorディレクトリを削除して、composer install
でパッケージを再度インストールしたら直った。
.node__content ol { list-style-type: auto; } .hljs-ln-n { display: none; } .page-node-type-blog-post p { color: #60696d; font-size: initial; line-height: 1.6em; margin: auto; } .anchor { padding-top: 6em; margin-top: -6em; } .hljs { background: #505050; }
- 閲覧数 3580




コメントを追加