---
generated_at: 2026-02-21 21:15:00
metrics:
  claims_total: 76
  claims_with_evidence: 76
  claims_without_evidence: 0
confidence_derived: 1.00
---

# 根拠レポート：file.csv

## 本レポートについて

### 目的
本レポートは、生成された設計書・ドキュメントの信頼性を検証し、人間レビュアーが効率的にレビューできるようにすることを目的としています。

### チェック方法
以下の観点でドキュメントの内容（Claim：主張）を検証しています：

1. **根拠の有無確認**：各主張に対して、ソースコード・既存設計書・要件定義書などの根拠（Evidence）が存在するか
2. **根拠との整合性**：主張の内容が根拠と矛盾していないか
3. **網羅性**：参照すべき情報源を適切にカバーしているか

### 信頼度スコアの算出
- **confidence_derived** = 根拠あり件数 / 総主張件数
- 状態「○」：根拠あり、「△」：根拠不足または要確認

### 本レポートの使い方
1. まず「サマリー」で全体の信頼度と優先レビュー項目を確認
2. 「Claims と根拠の対応」で △ の項目を重点的にレビュー
3. 「不足情報」で補完が必要な情報源を確認

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**1.00**
  - 根拠あり：76 / 76、根拠なし：0
- 優先レビュー（高）
  1. **なし**：全てのテストケースに根拠あり

## 2) 参照した情報（Evidence一覧）
> ここに「実在するもの」だけ列挙。抽出フェーズで付けたIDをそのまま出す。

- E-01: `src/file/Handle.php` - Handle, ReadHandle, WriteHandle, ReadWriteHandleインターフェース定義
- E-02: `src/file/CloseableHandle.php` - CloseableHandle, CloseableReadHandle, CloseableWriteHandle, CloseableReadWriteHandleインターフェース定義
- E-03: `src/file/Lock.php` - Lockクラス（ファイルロック管理、IDisposable実装）
- E-04: `src/file/LockType.php` - LockType enum（SHARED, EXCLUSIVE）
- E-05: `src/file/WriteMode.php` - WriteMode enum（OPEN_OR_CREATE, TRUNCATE, APPEND, MUST_CREATE）
- E-06: `src/file/AlreadyLockedException.php` - AlreadyLockedException例外クラス
- E-07: `src/file/open.php` - open_read_only, open_write_only, open_read_write関数
- E-08: `src/file/TemporaryFile.php` - TemporaryFileクラス（IDisposable実装、自動削除）
- E-09: `src/file/temporary_file.php` - temporary_file関数
- E-10: `src/file/leaky_temporary_file.php` - leaky_temporary_file関数
- E-11: `src/file/_Private/CloseableFileHandle.php` - CloseableFileHandle抽象クラス（getPath, getSize, seek, tell, lock, tryLockx）
- E-12: `src/file/_Private/CloseableReadHandle.php` - CloseableReadHandleクラス
- E-13: `src/file/_Private/CloseableWriteHandle.php` - CloseableWriteHandleクラス
- E-14: `src/file/_Private/CloseableReadWriteHandle.php` - CloseableReadWriteHandleクラス
- E-15: `src/file/_Private/TruncateTrait.php` - TruncateTraitトレイト（truncateメソッド）
- E-16: `src/file/_Private/open_temporary_fd.php` - open_temporary_fd関数
- E-17: `src/file/_Private/relative_path.php` - relative_path関数
- E-18: `tests/file/FileTest.php` - 既存の単体テスト実装
- E-19: `tests/file/RelativePathTest.php` - relative_path関数の既存テスト

## 3) Claims と根拠の対応（レビューの主戦場）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | open_read_only: 存在するファイルを読み込み専用で開ける | E-07, E-18 | ○ |
| C-02 | open_read_only: 存在しないファイルでErrnoException | E-07 | ○ |
| C-03 | open_read_only: 空文字列パスでエラー | E-07 | ○ |
| C-04 | open_write_only: 新規ファイル作成（OPEN_OR_CREATE） | E-05, E-07 | ○ |
| C-05 | open_write_only: TRUNCATEモードで切り詰め | E-05, E-07, E-18 | ○ |
| C-06 | open_write_only: APPENDモードで追記 | E-05, E-07, E-18 | ○ |
| C-07 | open_write_only: MUST_CREATEモードで新規作成のみ | E-05, E-07, E-18 | ○ |
| C-08 | open_write_only: MUST_CREATEで既存ファイル時EEXIST | E-05, E-07, E-18 | ○ |
| C-09 | open_write_only: パーミッション設定 | E-07 | ○ |
| C-10 | open_write_only: デフォルトパーミッション0644 | E-07 | ○ |
| C-11 | open_read_write: 読み書き両用でファイルを開く | E-07 | ○ |
| C-12 | open_read_write: 読み書き両用で新規作成 | E-07 | ○ |
| C-13 | temporary_file: 一時ファイル作成 | E-08, E-09, E-18 | ○ |
| C-14 | temporary_file: プレフィックス/サフィックス適用 | E-09, E-18 | ○ |
| C-15 | temporary_file: 相対パス(./)指定 | E-09, E-16 | ○ |
| C-16 | temporary_file: 絶対パス(/)指定 | E-09, E-16, E-18 | ○ |
| C-17 | temporary_file: パーミッション0600 | E-09, E-18 | ○ |
| C-18 | temporary_file: Dispose時自動削除 | E-08, E-18 | ○ |
| C-19 | temporary_file: XXXXXXがランダム文字列に置換 | E-16, E-18 | ○ |
| C-20 | temporary_file: 親ディレクトリ未存在でエラー | E-09, E-16 | ○ |
| C-21 | leaky_temporary_file: 一時ファイル作成 | E-10, E-18 | ○ |
| C-22 | leaky_temporary_file: close後もファイル存続 | E-10, E-18 | ○ |
| C-23 | leaky_temporary_file: 複数ファイルがユニーク | E-10, E-18 | ○ |
| C-24 | TemporaryFile.__construct: ハンドル保持 | E-08 | ○ |
| C-25 | TemporaryFile.getHandle: ハンドル取得 | E-08, E-18 | ○ |
| C-26 | TemporaryFile.__dispose: close + 削除 | E-08, E-18 | ○ |
| C-27 | TemporaryFile.__dispose: EBADF無視 | E-08 | ○ |
| C-28 | Lock.__construct: FD保持 | E-03 | ○ |
| C-29 | Lock.__dispose: ロック解除 | E-03 | ○ |
| C-30 | Lock.__dispose: EBADF無視 | E-03 | ○ |
| C-31 | CloseableFileHandle.__construct: FDとパス保持 | E-11 | ○ |
| C-32 | CloseableFileHandle.getPath: パス取得 | E-11, E-18 | ○ |
| C-33 | CloseableFileHandle.getPath: メモ化 | E-11 | ○ |
| C-34 | CloseableFileHandle.getSize: サイズ取得 | E-11 | ○ |
| C-35 | CloseableFileHandle.getSize: 空ファイルで0 | E-11 | ○ |
| C-36 | CloseableFileHandle.getSize: ポインタ位置保持 | E-11 | ○ |
| C-37 | CloseableFileHandle.seek: 指定位置にシーク | E-11 | ○ |
| C-38 | CloseableFileHandle.seek: オフセット0でシーク | E-11 | ○ |
| C-39 | CloseableFileHandle.seek: 負のオフセットでエラー | E-11 | ○ |
| C-40 | CloseableFileHandle.tell: 現在位置取得 | E-11 | ○ |
| C-41 | CloseableFileHandle.tell: 初期位置0 | E-11 | ○ |
| C-42 | CloseableFileHandle.lock: 共有ロック取得 | E-11, E-18 | ○ |
| C-43 | CloseableFileHandle.lock: 排他ロック取得 | E-11, E-18 | ○ |
| C-44 | CloseableFileHandle.lock: 共有ロック並行取得 | E-11, E-18 | ○ |
| C-45 | CloseableFileHandle.tryLockx: 非ブロッキング共有ロック | E-11, E-18 | ○ |
| C-46 | CloseableFileHandle.tryLockx: 非ブロッキング排他ロック | E-11, E-18 | ○ |
| C-47 | CloseableFileHandle.tryLockx: 共有中に排他でAlreadyLockedException | E-06, E-11, E-18 | ○ |
| C-48 | CloseableFileHandle.tryLockx: 排他中に共有でAlreadyLockedException | E-06, E-11, E-18 | ○ |
| C-49 | CloseableFileHandle.tryLockx: 排他中に排他でAlreadyLockedException | E-06, E-11 | ○ |
| C-50 | TruncateTrait.truncate: 指定サイズに切り詰め | E-15, E-18 | ○ |
| C-51 | TruncateTrait.truncate: nullで0バイト | E-15, E-18 | ○ |
| C-52 | TruncateTrait.truncate: length=0で空 | E-15 | ○ |
| C-53 | TruncateTrait.truncate: ファイル拡張 | E-15 | ○ |
| C-54 | open_temporary_fd: FDとパス返却 | E-16 | ○ |
| C-55 | open_temporary_fd: /で始まる絶対パス | E-16 | ○ |
| C-56 | open_temporary_fd: ./で始まる相対パス | E-16 | ○ |
| C-57 | open_temporary_fd: ../で始まる相対パス | E-16 | ○ |
| C-58 | open_temporary_fd: デフォルトでsys_get_temp_dir | E-16 | ○ |
| C-59 | relative_path: 相対パス結合 | E-17, E-19 | ○ |
| C-60 | relative_path: 絶対パス優先 | E-17, E-19 | ○ |
| C-61 | relative_path: relative_to=nullでpathそのまま | E-17, E-19 | ○ |
| C-62 | relative_path: relative_to=''でpathそのまま | E-17 | ○ |
| C-63 | LockType.SHARED: OS\LOCK_SHと一致 | E-04 | ○ |
| C-64 | LockType.EXCLUSIVE: OS\LOCK_EXと一致 | E-04 | ○ |
| C-65 | WriteMode.OPEN_OR_CREATE: OS\O_CREATと一致 | E-05 | ○ |
| C-66 | WriteMode.TRUNCATE: O_TRUNC|O_CREATと一致 | E-05 | ○ |
| C-67 | WriteMode.APPEND: O_APPEND|O_CREATと一致 | E-05 | ○ |
| C-68 | WriteMode.MUST_CREATE: O_EXCL|O_CREATと一致 | E-05 | ○ |
| C-69 | AlreadyLockedException: インスタンス作成可能 | E-06 | ○ |
| C-70 | AlreadyLockedException: ErrnoException継承でない | E-06 | ○ |
| C-71 | CloseableReadHandle: 読み込みハンドル作成 | E-12 | ○ |
| C-72 | CloseableWriteHandle: 書き込みハンドル作成 | E-13 | ○ |
| C-73 | CloseableReadWriteHandle: 読み書きハンドル作成 | E-14 | ○ |
| C-74 | open_read_only_nd: 非推奨（後方互換） | E-07 | ○ |
| C-75 | open_write_only_nd: 非推奨（後方互換） | E-07 | ○ |
| C-76 | open_read_write_nd: 非推奨（後方互換） | E-07 | ○ |

## 4) 不足情報（Unknown / Missing）
- なし
  - 全てのテストケースはソースコードの実装と既存テストに基づいて生成されている

## 5) リスクフラグ（レビュー観点）
- 0: 低リスク - 全てのテストケースに明確な根拠あり
- ファイルロック関連のテスト（C-42〜C-49）は並行処理環境での動作確認が必要な場合あり
- truncate（C-50〜C-53）のファイル拡張動作はOS依存の可能性あり（コメントにMacOS/Linux差異の記載あり）

## 6) レビュアーチェックリスト（最小）
- [ ] open関数群（open_read_only, open_write_only, open_read_write）のテストケースが各WriteModeを網羅しているか確認
- [ ] temporary_file / leaky_temporary_fileの自動削除/非削除動作の違いが明確か確認
- [ ] ロック関連テスト（lock, tryLockx）の正常系・異常系が網羅されているか確認
- [ ] TruncateTrait.truncateの境界値（null, 0, 拡張）が適切にテストされているか確認
- [ ] _Private配下の内部関数（relative_path, open_temporary_fd）のテストが必要か検討
- [ ] 非推奨関数（_nd接尾辞）のテスト優先度が適切か確認
