# QA 検出基準

## エラーハンドリングとログ

| 基準 | 判定 |
|------|------|
| エラーの握りつぶし（空のcatch） | REJECT |
| ユーザー向けエラーメッセージが不明確 | 修正が必要 |
| システム境界でのバリデーション欠如 | 警告 |
| 新しいコードパスにデバッグログがない | 警告 |
| ログへの機密情報の出力 | REJECT |

## 保守性

| 基準 | 判定 |
|------|------|
| 関数/ファイルが複雑すぎる（追いにくい） | 警告 |
| 重複コードが多い | 警告 |
| 命名が不明確 | 修正が必要 |

## 技術的負債

| パターン | 判定 |
|---------|------|
| Issue番号・外部制約・除去条件のない TODO/FIXME | REJECT |
| Issue番号・外部制約・除去条件がある TODO/FIXME | 警告 |
| 空実装、スタブ、コメントアウトされた旧実装の放置 | REJECT |
| 理由なしの @ts-ignore, @ts-expect-error | 警告 |
| 理由なしの eslint-disable | 警告 |
| 非推奨APIの使用 | 警告 |

## 書き込み後の副作用チェック

ファイルやディレクトリへの書き込み後にスキャン・読み取りを行う処理がある場合、書き込んだファイルが意図せずスキャン対象に含まれていないか確認する。

| パターン | 例 | 判定 |
|---------|-----|------|
| 出力先ディレクトリのスキャン | facets をコピーした後に同ディレクトリを走査して構文を検出 | REJECT |
| 一時ファイルの読み戻し | 一時ディレクトリに書き込み後、同ディレクトリの全ファイルを処理 | REJECT |
| 自己参照的な処理 | 生成したファイルが次の処理パイプラインの入力になる | 警告 |

検証アプローチ:
1. ファイル書き込み後にディレクトリスキャン（readdir, glob 等）を行う箇所を確認
2. スキャン対象に書き込み先が含まれていないか確認
3. 含まれている場合、除外フィルタが存在するか確認
