はじめに
PHPを学習して2か月が経ち、コード量が増えるにつれてエラー原因の特定に時間がかかるようになってきました。そのため、潜在的なバグやエラーを検出できる静的解析ツールを導入することにしました。
PHPStanとは
PHPStanはPHPの静的解析ツールで、実行ファイルを実行することなくコードを解析し、バグやエラーを検出することができます。
導入
公式ドキュメントに従い、Composerを使ってインストールします。PHPStanの実行ファイルはデフォルトで /vendor/bin
に配置されます。
composer require --dev phpstan/phpstan
設定ファイルの作成
PHPStanの設定ファイル (phpstan.neon
) を作成します。level
には0から9までの数値が設定可能で、数値が大きくなるほど解析が厳しくなります。記事を参考にすると、レベル8や9は厳しすぎると感じる人が多いようです。今回はレベル6を使用します。
paths
には静的解析の対象となるフォルダを指定し、excludePaths
には静的解析を除外したいフォルダを指定します。
parameters:
level: 6
paths:
- .
excludePaths:
- vendor
実行
型が一致していないコードを用意して、PHPStanを実行してみます。
<?php
function addNum(int $a, int $b): int
{
return $a + $b;
}
$result = addNum("10", 20); // 引数の型が不一致
次に、以下のコマンドでPHPStanを実行します。
./vendor/bin/phpstan analyze -c phpstan.neon
結果は、引数の型が一致していないというエラーが表示されます。
------ ---------------------------------------------------------------
Line sample.php
------ ---------------------------------------------------------------
:7 Parameter #1 $a of function addNum expects int, string given.
------ ---------------------------------------------------------------
また、composer.json
に以下を追加すると、composer phpstan
だけで実行できるようになります。
"scripts": {
"phpstan": "./vendor/bin/phpstan analyze -c phpstan.neon"
}
参考資料
終わりに
静的解析ツールの真価は、実際に運用する中で実感するものだと思います。高品質なコードを書くために、使い続けられるようにしたいと思います。