laravel-quality について
Laravel プロジェクトのテスト、静的解析、コード品質を扱うガイドです。Pest、PHPStan、Laravel Pint の利用と、CI やコミット前のチェックへの組み込みを説明します。
主な機能
- 01Pest によるテスト作成
- 02PHPStan 静的解析の設定
- 03Laravel Pint によるスタイル確認
- 04CI とコミット前チェックの設定
活用シーン
- 01Laravel プロジェクトの品質チェック構築
- 02コミット前のテストと解析の実行
- 03アーキテクチャテストによる規約の適用
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ leeovery/ agentic-skills --skill laravel-qualityインストール後、Claude Code で/laravel-qualityを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/architecture-tests.mdcode-style.mdtype-safety.md詳細
Laravel の品質
テスト、静的解析、コード品質の徹底。
関連ガイド:
- code-style.md - Laravel Pint の設定とコーディングスタイル
- type-safety.md - 厳密な型と型ヒント
- テスト - 包括的なテストガイド
品質スタック
# 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 ではなくプリミティブ型を渡す
- ドメインロジックを含むジョブ/リスナー
型安全性
- 戻り値の型の欠落
- パラメーター型の欠落
- プロパティ型の欠落
- 型指定のない配列/コレクション
テスト
- エンドポイントのフィーチャーテストの欠落
- アクションのユニットテストの欠落
- 重要な処理経路のカバレッジ不足
- 壊れやすいテスト(モックが多すぎる)
徹底するための戦略
- アーキテクチャテスト - 自動チェック
- PR レビュー - 手動での検証
- CI/CD ゲート - ビルドに失敗した場合はブロック
- チーム標準 - 文書化とトレーニング
- ペアプログラミング - 知識の共有
コメント
Markdown 対応