mcpField
L
laravel-quality

laravel-quality

github.com/leeoveryテスト・品質1558 回インストール2 週間前に更新
リポジトリ

laravel-quality について

Laravel プロジェクトのテスト、静的解析、コード品質を扱うガイドです。Pest、PHPStan、Laravel Pint の利用と、CI やコミット前のチェックへの組み込みを説明します。

主な機能

  1. 01Pest によるテスト作成
  2. 02PHPStan 静的解析の設定
  3. 03Laravel Pint によるスタイル確認
  4. 04CI とコミット前チェックの設定

活用シーン

  1. 01Laravel プロジェクトの品質チェック構築
  2. 02コミット前のテストと解析の実行
  3. 03アーキテクチャテストによる規約の適用

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/leeovery/agentic-skills --skill laravel-quality

インストール後、Claude Code で/laravel-qualityを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
architecture-tests.md
code-style.md
type-safety.md

詳細

Laravel の品質

テスト、静的解析、コード品質の徹底。

関連ガイド:

品質スタック

# composer.json scripts
{
    "test": "pest",
    "analyse": "phpstan analyse",
    "format": "pint",
    "quality": [
        "@analyse",
        "@test"
    ]
}

すべてのファイルの先頭に declare(strict_types=1) を記述する必要があります。コミットの前には毎回、品質チェックを実行してください。

アーキテクチャテスト(Pest)

プロジェクトに適している場合は、Pest のアーキテクチャテストで規約を徹底します。

→ アーキテクチャテストの例:architecture-tests.md

静的解析(PHPStan)

インストール
composer require phpstan/phpstan --dev
composer require phpstan/phpstan-strict-rules --dev
composer require larastan/larastan --dev
設定

phpstan.neon

includes:
    - vendor/larastan/larastan/extension.neon
    - vendor/phpstan/phpstan-strict-rules/rules.neon

parameters:
    level: 5  # Minimum 5, increase per-project as practical (up to 8)
    paths:
        - app
        - tests
    excludePaths:
        - app/Providers/TelescopeServiceProvider.php
    checkMissingIterableValueType: true
    checkGenericClassInNonGenericObjectType: true
    reportUnmatchedIgnoredErrors: false
実行
./vendor/bin/phpstan analyse

コードスタイル(Laravel Pint)

インストール
composer require laravel/pint --dev
設定

pint.json

{
    "preset": "laravel",
    "rules": {
        "simplified_null_return": true,
        "no_unused_imports": true,
        "ordered_imports": {
            "sort_algorithm": "alpha"
        }
    }
}
実行
./vendor/bin/pint
./vendor/bin/pint --test  # Check only

テストカバレッジ

カバレッジを有効にする(Pest)

phpunit.xml

<coverage>
    <report>
        <html outputDirectory="coverage"/>
        <text outputFile="php://stdout"/>
    </report>
</coverage>
カバレッジを測定して実行
./vendor/bin/pest --coverage
./vendor/bin/pest --coverage --min=80  # Enforce minimum

CI/CD チェック

GitHub Actions の例

.github/workflows/tests.yml

name: Tests

on: [push, pull_request]

jobs:
  test:
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v3

      - name: Setup PHP
        uses: shivammathur/setup-php@v2
        with:
          php-version: 8.4
          extensions: dom, curl, libxml, mbstring, zip, pcntl, pdo, sqlite, pdo_sqlite
          coverage: xdebug

      - name: Install Dependencies
        run: composer install --prefer-dist --no-interaction

      - name: Code Style
        run: ./vendor/bin/pint --test

      - name: Static Analysis
        run: ./vendor/bin/phpstan analyse

      - name: Run Tests
        run: ./vendor/bin/pest --coverage --min=80

コミット前フック

インストール
composer require brainmaestro/composer-git-hooks --dev
設定

composer.json

{
    "extra": {
        "hooks": {
            "pre-commit": [
                "./vendor/bin/pint",
                "./vendor/bin/phpstan analyse",
                "./vendor/bin/pest"
            ]
        }
    },
    "scripts": {
        "post-install-cmd": "vendor/bin/cghooks add --ignore-lock",
        "post-update-cmd": "vendor/bin/cghooks update"
    }
}

品質指標

追跡する項目
  • テストカバレッジ - 80% 以上を目指します
  • PHPStan レベル - レベル 8(最大)
  • アーキテクチャテストの合格率 - 100%
  • コードスタイル違反 - 0 件
定期レビュー
  • 毎週 - テストカバレッジの推移を確認します
  • PR ごと - すべての品質チェックを実行します
  • 毎月 - アーキテクチャへの準拠状況を確認します
  • リリース時 - 品質を全面的に監査します

よくある注意点

アンチパターン
  • コントローラー内のドメインロジック
  • ビルダーの代わりにスコープを使用する
  • 厳密な型宣言の欠落
  • DTO ではなくプリミティブ型を渡す
  • ドメインロジックを含むジョブ/リスナー
型安全性
  • 戻り値の型の欠落
  • パラメーター型の欠落
  • プロパティ型の欠落
  • 型指定のない配列/コレクション
テスト
  • エンドポイントのフィーチャーテストの欠落
  • アクションのユニットテストの欠落
  • 重要な処理経路のカバレッジ不足
  • 壊れやすいテスト(モックが多すぎる)

徹底するための戦略

  1. アーキテクチャテスト - 自動チェック
  2. PR レビュー - 手動での検証
  3. CI/CD ゲート - ビルドに失敗した場合はブロック
  4. チーム標準 - 文書化とトレーニング
  5. ペアプログラミング - 知識の共有

コメント