品質管理
既存ツールは重要な基盤であり、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互換方針に分離しています。
詳細はPHP8.0互換方針に分離しています。
品質運用
テスト体制で運用フローは説明しています。ここでは、品質をどの視点で重ねて確認するかに絞ります。
- HTTPテストで実行品質を見る
- 静的解析でコードの整合性を見る
- 互換性スキャンで時間軸の品質を見る
- 定期サイクルと人間確認で品質を維持する
品質運用の詳細な流れ、AI相互チェック、テスト追加、人間の最終判断については テスト体制 を参照してください。
AIは検出と相互レビューを助け、人間は取捨選択と最終判断を担います。
この分担で、品質チェックの密度を上げやすくなります。
この分担で、品質チェックの密度を上げやすくなります。
だからこそ、AIにも人間にも読みやすいコード品質が必要になります。テスト体制は、コード品質への要求を引き上げます。