---
generated_at: 2026-03-01 17:45:00
metrics:
  claims_total: 95
  claims_with_evidence: 92
  claims_without_evidence: 3
confidence_derived: 0.97
---

# 根拠レポート: nu-glob.csv

## 本レポートについて

### 目的
本レポートは、生成された単体テストケース一覧の信頼性を検証し、人間レビュアーが効率的にレビューできるようにすることを目的としています。

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

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

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

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

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**0.97**
  - 根拠あり：92 / 95、根拠なし：3
- 優先レビュー（高）
  1. **UT-GLB-044**: Windows verbatimパス処理 - プラットフォーム固有のため実機検証推奨
  2. **UT-GLB-074**: Windows パス区切り文字同一視 - プラットフォーム固有
  3. **UT-GLB-086**: 中断処理のテスト - 非同期/並行処理の動作確認が必要

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

- E-01: `crates/nu-glob/src/lib.rs` - メインソースコード（1622行）
- E-02: `crates/nu-glob/Cargo.toml` - パッケージ定義
- E-03: `crates/nu-glob/README.md` - モジュール説明文書
- E-04: 既存テストコード（lib.rs内の`#[cfg(test)] mod test`、1159-1621行）
- E-05: ドキュメントコメント（lib.rs 13-58行）

## 3) Claims と根拠の対応（レビューの主戦場）

### Pattern構造体
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 (UT-GLB-001〜007) | Pattern::new() 正常系テストケース | E-01 (667-788行), E-04 (test_pattern_from_str, test_wildcards等) | ○ |
| C-02 (UT-GLB-008〜013) | Pattern::new() 異常系テストケース | E-01 (693-775行), E-04 (test_wildcard_errors, test_unclosed_bracket_errors) | ○ |
| C-03 (UT-GLB-014〜019) | Pattern::escape() テストケース | E-01 (793-810行), E-04 (test_pattern_escape) | ○ |
| C-04 (UT-GLB-020〜029) | Pattern::matches() テストケース | E-01 (824-826行), E-04 (test_wildcards, test_recursive_wildcards, test_range_pattern) | ○ |
| C-05 (UT-GLB-030〜034) | Pattern::matches_with() テストケース | E-01 (837-839行), E-04 (test_pattern_matches_case_insensitive等) | ○ |
| C-06 (UT-GLB-035〜036) | Pattern::matches_path/matches_path_with() | E-01 (830-846行), E-04 (test_matches_path) | ○ |
| C-07 (UT-GLB-037) | Pattern::as_str() | E-01 (849-851行) | ○ |
| C-08 (UT-GLB-038〜039) | Pattern FromStr実装 | E-01 (631-637行), E-04 (test_pattern_from_str) | ○ |

### グローバル関数
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-09 (UT-GLB-040〜042) | glob() 関数 | E-01 (201-203行), E-04 (test_glob_errors, test_absolute_pattern) | ○ |
| C-10 (UT-GLB-043〜044) | glob_with() 関数 | E-01 (218-318行), E-05 (ドキュメント例) | ○ |
| C-11 (UT-GLB-045) | glob_with_parent() 関数 | E-01 (327-344行) | ○ |
| C-12 (UT-GLB-046〜052) | is_glob() 関数 | E-01 (346-365行), E-05 (doctest例) | ○ |

### Paths構造体（Iterator）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-13 (UT-GLB-053) | Paths::single() | E-01 (130-142行) | ○ |
| C-14 (UT-GLB-054〜059) | Iterator::next() 実装 | E-01 (427-564行), E-04 (test_lots_of_files, test_iteration_errors) | ○ |

### エラー型
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-15 (UT-GLB-060〜064) | GlobError構造体 | E-01 (373-415行), E-04 (test_iteration_errors) | ○ |
| C-16 (UT-GLB-065〜066) | PatternError構造体 | E-01 (567-590行) | ○ |

### MatchOptions
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-17 (UT-GLB-067〜068) | MatchOptions Default/Clone | E-01 (1147-1156行), E-04 (各テストでの使用) | ○ |

### Interruptible
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-18 (UT-GLB-069〜070) | Uninterruptible/Interruptible | E-01 (89-109行) | ○ |

### 内部関数
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-19 (UT-GLB-071〜074) | chars_eq() | E-01 (1109-1118行) | ○ |
| C-20 (UT-GLB-075〜077) | parse_char_specifiers() | E-01 (1060-1073行) | ○ |
| C-21 (UT-GLB-078〜081) | in_char_specifiers() | E-01 (1075-1106行) | ○ |
| C-22 (UT-GLB-082〜086) | fill_todo() | E-01 (942-1058行) | ○ |
| C-23 (UT-GLB-087〜089) | is_dir() | E-01 (417-419行) | ○ |
| C-24 (UT-GLB-090〜095) | Pattern::matches_from() | E-01 (853-937行) | ○ |

### 根拠不足項目
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-25 (UT-GLB-044) | Windows verbatimパス処理 | E-01 (223-236行) - コードあり、テストなし | △ |
| C-26 (UT-GLB-074) | Windowsパス区切り同一視 | E-01 (1110-1111行) - cfg(windows)条件付き | △ |
| C-27 (UT-GLB-086) | 中断処理 | E-01 (1001-1003行) - コードあり、テストなし | △ |

## 4) 不足情報（Unknown / Missing）
- **Windows固有動作のテスト**: Windows verbatimパス(\\?\形式)やパス区切り文字の同一視は、Windowsプラットフォームでのみ有効なコードパスであり、現在のテストでは十分にカバーされていない
  - 候補：Windows CI環境でのテスト追加 / クロスプラットフォームテスト
- **中断処理のテスト**: `Interruptible`トレイトを使った中断処理は、非同期/並行処理シナリオでの検証が必要
  - 候補：モック実装を使った中断テスト / タイムアウトテスト
- **非UTF-8パスの処理**: コード内のFIXMEコメント(#9639)で言及されている非UTF-8ファイル名の処理が未実装
  - 候補：非UTF-8パス処理の仕様策定

## 5) リスクフラグ（レビュー観点）
- **0 (低リスク)**: 大部分のテストケース - ソースコードと既存テストから十分な根拠あり
- **1 (中リスク)**: Windows固有機能(UT-GLB-044, UT-GLB-074) - プラットフォーム依存のため実機検証推奨
- **1 (中リスク)**: 中断処理(UT-GLB-086) - 並行処理の動作確認が必要

## 6) レビュアーチェックリスト（最小）
- [ ] Pattern::new()の異常系テストケース（UT-GLB-008〜013）が実際のエラー発生箇所と一致しているか
- [ ] MatchOptionsの各フラグ組み合わせが網羅されているか確認（特にrequire_literal_separatorとrequire_literal_leading_dotの組み合わせ）
- [ ] 再帰ワイルドカード(**)のテストケースがディレクトリ階層の深さをカバーしているか
- [ ] GlobErrorのエラーハンドリングテストで、実際のファイルシステムエラーシナリオがカバーされているか
- [ ] Windows固有のテストケース(UT-GLB-044, UT-GLB-074)はWindowsプラットフォームで実行する必要があるか確認
- [ ] 内部関数(chars_eq, parse_char_specifiers, in_char_specifiers, fill_todo)はprivateだがテスト対象とすべきか検討

## 7) 付録：ソースコード構造

### 主要な型
| 型名 | 説明 | 行番号 |
|------|------|--------|
| `Pattern` | globパターンをコンパイルした構造体 | 618-622 |
| `Paths<I>` | パスを返すイテレータ | 121-128 |
| `GlobError` | イテレーション中のエラー | 373-376 |
| `PatternError` | パターンパースエラー | 568-574 |
| `MatchOptions` | マッチングオプション | 1122-1144 |
| `Interruptible` | 中断可能トレイト | 89-92 |
| `Uninterruptible` | 中断なし実装 | 102-109 |

### 内部列挙型
| 型名 | 説明 | 行番号 |
|------|------|--------|
| `PatternToken` | パターントークン | 640-647 |
| `CharSpecifier` | 文字指定子 | 649-653 |
| `MatchResult` | マッチ結果 | 655-660 |

### 既存テスト一覧（E-04参照）
| テスト名 | 行番号 | 対応Claim |
|----------|--------|-----------|
| test_pattern_from_str | 1170-1173 | C-01, C-08 |
| test_wildcard_errors | 1176-1182 | C-02 |
| test_unclosed_bracket_errors | 1185-1194 | C-02 |
| test_glob_errors | 1197-1200 | C-09 |
| test_iteration_errors | 1212-1239 | C-14, C-15 |
| test_absolute_pattern | 1242-1276 | C-09 |
| test_wildcards | 1279-1301 | C-04 |
| test_recursive_wildcards | 1304-1349 | C-04 |
| test_lots_of_files | 1352-1355 | C-14 |
| test_range_pattern | 1358-1405 | C-04 |
| test_pattern_matches | 1408-1423 | C-04 |
| test_pattern_escape | 1426-1430 | C-03 |
| test_pattern_matches_case_insensitive | 1433-1446 | C-05 |
| test_pattern_matches_case_insensitive_range | 1449-1473 | C-05 |
| test_pattern_matches_require_literal_separator | 1476-1531 | C-05 |
| test_pattern_matches_require_literal_leading_dot | 1534-1607 | C-05 |
| test_matches_path | 1610-1614 | C-06 |
| test_path_join | 1617-1620 | C-06 |
