Appearance
PHPStan 分離環境対応設定
概要
本プロジェクトでは、開発環境とcore_srcディレクトリで依存関係を分離して管理しています。 この設定により、本番環境への影響を最小限に抑えながら、開発環境での型安全性を確保しています。
依存関係の構成
ルートディレクトリ (/)
- 用途: 開発ツールの管理
- 依存関係: PHPStan, PHPCS, PHPUnit等
- composer.json: 開発ツールのみを含む
core_srcディレクトリ (/core_src)
- 用途: アプリケーション依存関係の管理
- 依存関係: Twig等のアプリケーションライブラリ
- composer.json: 本番環境で使用される依存関係のみ
PHPStan設定 (phpstan.neon)
bootstrapFiles設定
yaml
bootstrapFiles:
- vendor/autoload.php # ルートの開発ツール
- core_src/vendor/autoload.php # core_srcのTwig等
- config/phpstan_bootstrap.php # PHPStan用のWordPress関数モックphpstan_bootstrap.phpの役割
config/phpstan_bootstrap.phpは、PHPStan静的解析時にWordPress環境で提供される関数や定数をモックするファイルです。
含まれる定義
WordPress定数
MINUTE_IN_SECONDS: WordPress時間定数(実際にDailyDataPerUnitRepository.phpで使用)
WordPress関数モック
sanitize_text_field(): テキストフィールドのサニタイズwp_strip_all_tags(): HTMLタグの除去shortcode_atts(): ショートコード属性のマージ
含まれない定義(理由)
以下の定義は含まれていません。これらは実行時に他のファイルで定義されるため、PHPStanではignoreErrorsで無視しています:
- ConfigRoot.phpで定義される定数: VERSION, MVC, VIEW, MODEL, SERVICE, CONTROLLER, UTIL, SHORTCODE等
- ConfigGeneral.phpで定義される定数: HALL**_JAPANESE, HALL*ROMA, ICON, IMAGE_BASE_URL等
- 使用されていない定数: CLASSHEATMAP_TABLE_SAMAI*(phpstan.neonで既に無視設定済み)
ignoreErrors設定(セキュリティ強化版)
yaml
ignoreErrors:
# 未定義変数エラーの無視(段階的改善のため一時的に無視)
# パス指定により特定ディレクトリのみに限定
- message: '#Variable \$[a-zA-Z0-9_]+ might not be defined\.#'
paths:
- core_src/View/*
- core_src/pastFunctions/*
- message: '#Undefined variable: \$[a-zA-Z0-9_]+\.#'
paths:
- core_src/View/*
- core_src/pastFunctions/*
- '#Variable \$[a-zA-Z0-9_]+ in isset\(\) always exists and is not nullable\.#'
- '#Variable \$[a-zA-Z0-9_]+ on left side of \?\? always exists and is not nullable\.#'
# Twig関連のエラーを一時的に無視(型定義が解決されるまで)
- message: '#Class Twig\\Environment not found\.#'
paths:
- core_src/View/*
- message: '#Class Twig\\Loader\\FilesystemLoader not found\.#'
paths:
- core_src/View/*GitHub Actions対応
PHPStanワークフローの変更点
core 依存関係のインストール:
yaml- name: Install core dependencies run: | cd core_src composer install --no-progress --prefer-dist --optimize-autoloaderPHPStan実行方法:
yaml- name: Run PHPStan analysis run: composer analyse continue-on-error: true
ローカル開発環境
依存関係インストール
bash
# ルートディレクトリの開発ツール
composer install
# core_srcのアプリケーション依存関係
cd core_src && composer installPHPStan実行
bash
# 設定ファイルを明示的に指定
vendor/bin/phpstan analyse --memory-limit=1G --configuration=config/phpstan.neon
# または composer script経由
composer analyse本番環境デプロイ
本番環境ではcore_srcディレクトリのみがデプロイされ、core_YYYYMMDD_HHMMSSにリネームされます。 この設定により以下のメリットがあります:
- セキュリティ: 開発ツールが本番環境に含まれない
- パフォーマンス: 必要最小限の依存関係のみ
- 保守性: 開発環境と本番環境の依存関係を明確に分離
トラブルシューティング
Twig型定義エラーが発生する場合
- core_src/vendor/autoload.phpが存在することを確認
- phpstan.neonのbootstrapFilesにcore_src/vendor/autoload.phpが含まれることを確認
- ignoreErrorsパターンが適切に設定されていることを確認
検証方法
bash
# 設定確認と品質チェック(config/phpstan.neon の存在も検証される)
composer quality-check
# PHPStan設定の個別テスト(必要に応じて)
vendor/bin/phpstan analyse --memory-limit=1G --configuration=config/phpstan.neon test_twig_types.php