品質管理

既存ツールは重要な基盤であり、Naifyはそれを補完する形で使います。
品質は1つの手段で担保しません。複数の視点で重ねて確認します。AIが一度コードを書けることより、同じコードを読み直し、修正し、検証し続けられることを重視します。

既存ツールとカスタムチェック

PHPStanやPsalmは型チェックに優れていますが、プロジェクト固有のルールまでは標準では確認しません。

既存ツールの標準ルールで確認できること

  • 型の整合性(引数、戻り値、null安全)
  • 未定義メソッド/プロパティの検出
  • 到達不能コードの検出

標準ルールでは確認しないこと

  • @package と namespace の一致チェック
  • @version とファイル更新日の乖離検出
  • プロジェクト固有の命名規約チェック
  • ドキュメントの整合性(コード例が実装と一致しているか)

これらはPHPStanのカスタムルールやPHP_CodeSnifferなどで追加することもできます。Naifyでは、汎用ツールの標準ルールに加えて、プロジェクト固有のチェックを用意しています。これらも開発時の確認項目に含めています。

確認項目確認する内容
DB操作CRUD、クエリの組み立て、セキュリティに関わる動作
境界条件通常と異なる入力やエラー時の動作
PHP互換性PHP更新時に見直す構文と動作
PHPDocクラスやメソッドの定義と説明の整合性

型検査に加え、命名規約やPHPDocの整合性など、プロジェクト固有のルールも確認します。

静的解析と動作テストを組み合わせる

開発環境の静的解析で型の不整合、未使用コード、PHPDocの不一致を確認します。HTTPテストによる実際の動作確認と組み合わせ、異なる観点から問題を検出します。

互換性管理:更新箇所を記録する

NaifyはPHP8.0を最低動作にしつつ、設計基準は新しいPHP側へ寄せています。互換の妥協点は#[NaifyCompatibility]アトリビュートとスキャナで追跡し、lintやHTTPテストと組み合わせて守っています。

ここでは、品質運用の一部として互換性管理を扱います。
詳細はPHP8.0互換方針に分離しています。

品質運用

テスト体制で運用フローは説明しています。ここでは、品質をどの視点で重ねて確認するかに絞ります。

  • HTTPテストで実行品質を見る
  • 静的解析でコードの整合性を見る
  • 互換性スキャンで時間軸の品質を見る
  • 定期サイクルと人間確認で品質を維持する

品質運用の詳細な流れ、AI相互チェック、テスト追加、人間の最終判断については テスト体制 を参照してください。

AIは検出と相互レビューを助け、人間は取捨選択と最終判断を担います。
この分担で、品質チェックの密度を上げやすくなります。

だからこそ、AIにも人間にも読みやすいコード品質が必要になります。テスト体制は、コード品質への要求を引き上げます。