Larastanで静的解析

Laravel
この記事は約4分で読めます。
スポンサーリンク

Larastanは、PHPStanのLaravel版であり、ソースコードの静的解析ツールです。
Larastanを使うことで、開発効率やコード品質の向上につながります。

スポンサーリンク

環境

Larastanを試してみた環境です。

ソフトウェアバージョン
PHP8.2.6
Laravel10.13.5
スポンサーリンク

準備

インストール

Laravelプロジェクト直下で、以下コマンドを実行します。
PHP 8.0以上、Laravel 9.0以上 が必要です。

composer require nunomaduro/larastan:^2.0 --dev

設定ファイル作成

Laravelプロジェクト直下に、「phpstan.neon」というファイルを作成します。
解析対象として「app」フォルダー以下、解析レベルを5と指定しています。
※解析レベルは、0~9の範囲で指定できます。値が大きいほど、解析が厳しくなります。

includes:
    - ./vendor/nunomaduro/larastan/extension.neon

parameters:

    paths:
        - app/

    # Level 9 is the highest level
    level: 5

#    ignoreErrors:
#        - '#PHPDoc tag @var#'
#
#    excludePaths:
#        - ./*/*/FileToBeExcluded.php
#
#    checkMissingIterableValueType: false
スポンサーリンク

お試し

解析対象

静的解析の対象とするコードです。
「use App\Models\Todo」をコメントアウトし、わざとエラーが1件発生するようにしています。

<?php

namespace App\Http\Controllers;

// use App\Models\Todo;
use Illuminate\Http\Request;

class TodoController extends Controller
{
    public function getStatus(Request $request)
    {
        $todo = Todo::find($request['id']);

        if ($todo) {
            switch ($todo->isComplete) {
                case 0:
                    return ['status' => 'unfinished'];
                case 1:
                    return ['status' => 'finished'];
            }
        } else {
            return ['status' => 'none'];
        }
    }
}

実行結果

静的解析を実行します。

./vendor/bin/phpstan analyse

実行結果が表示されます。
不明なクラスがあり、エラーが1件出ています。
エラーの原因は、「use App\Models\Todo」をコメントアウトしているためです。
今回のようなuse宣言忘れは、よくありそうですね。
アプリケーション実行時に今回のエラーを発見することもできますが、静的解析により、実行前にエラーを発見できています!


Larastanは、静的解析ツールです。
Larastanを使うことで、アプリケーション実行前に問題を発見でき、開発効率やコード品質の向上につながります。

コメント

タイトルとURLをコピーしました