---
generated_at: 2026-03-01 12:00:00
metrics:
  claims_total: 27
  claims_with_evidence: 23
  claims_without_evidence: 4
confidence_derived: 0.85
---

# 根拠レポート：cascadia-wt 単体テストケース一覧

## 本レポートについて

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

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

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

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

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

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**0.85**
  - 根拠あり：23 / 27、根拠なし：4
- 優先レビュー（高）
  1. **C-15 (UT-CWT-015)**：コマンドライン長上限の境界値はWindows APIの仕様に依存し、shim.cpp内には明示的な制限処理がない
  2. **C-16 (UT-CWT-016)**：MAX_PATHの境界値テストはOS/API仕様に依存
  3. **C-17 (UT-CWT-017)**：長いパスの処理はstd::filesystem::pathの実装に依存
  4. **C-19 (UT-CWT-019)**：日本語パスの動作はOS/API仕様に依存しソースコードに明示的な処理がない

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

- E-01: `src/cascadia/wt/shim.cpp` - wWinMain関数の定義（36行、モジュール唯一のソースファイル）
- E-02: `src/cascadia/wt/resource.h` - リソース定義ヘッダ（アイコンID等の定義）
- E-03: `src/cascadia/wt/wt.rc` - リソースファイル（アイコンリソースの定義）
- E-04: `src/cascadia/wt/wt.vcxproj` - プロジェクト定義（"Windows Terminal Launcher Shim"の記述）
- E-05: `shim.cpp:13` - `std::filesystem::path module{ wil::GetModuleFileNameW<std::wstring>(nullptr) };`
- E-06: `shim.cpp:16` - `std::wstring ourFilename{ module.filename() };`
- E-07: `shim.cpp:19` - `module.replace_filename(L"WindowsTerminal.exe");`
- E-08: `shim.cpp:23` - `wil::str_printf_nothrow(cmdline, L"%s %s", ourFilename.c_str(), pCmdLine)`
- E-09: `shim.cpp:24-26` - `if (FAILED(...)) { return 1; }`
- E-10: `shim.cpp:29-31` - STARTUPINFOW構造体の初期化
- E-11: `shim.cpp:34-35` - `wil::unique_process_information pi;` と `CreateProcessW` 呼び出し
- E-12: `shim.cpp:35` - `return !CreateProcessW(...)` 戻り値の論理反転

## 3) Claims と根拠の対応（レビューの主戦場）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | 正常なコマンドライン引数でWindowsTerminal.exeが起動される | E-01, E-07, E-08, E-11 | ○ |
| C-02 | コマンドライン引数なしでWindowsTerminal.exeが起動される | E-01, E-07, E-08, E-11 | ○ |
| C-03 | モジュールファイルパスからファイル名が正しく抽出される | E-05, E-06 | ○ |
| C-04 | モジュールパスのファイル名がWindowsTerminal.exeに置換される | E-05, E-07 | ○ |
| C-05 | デバッグ版(wtd.exe)でもWindowsTerminal.exeに置換される | E-01(コメント "wt, wtd"), E-07 | ○ |
| C-06 | コマンドラインが正しいフォーマットで構築される | E-08 | ○ |
| C-07 | GetStartupInfoWで正しいスタートアップ情報が取得される | E-10 | ○ |
| C-08 | CreateProcessWに正しいパラメータが渡される | E-11 | ○ |
| C-09 | セキュリティ属性がnullptrで呼び出される | E-11 | ○ |
| C-10 | bInheritHandlesがFALSEで呼び出される | E-11 | ○ |
| C-11 | str_printf_nothrow失敗時に戻り値1が返却される | E-09 | ○ |
| C-12 | CreateProcessW失敗時に戻り値1が返却される | E-12 | ○ |
| C-13 | CreateProcessW成功時に戻り値0が返却される | E-12 | ○ |
| C-14 | pCmdLineが空文字列の場合のコマンドライン構築 | E-08 | ○ |
| C-15 | 非常に長いコマンドラインの場合の動作 | **根拠なし** | △ |
| C-16 | MAX_PATH付近のパス長での動作 | **根拠なし** | △ |
| C-17 | MAX_PATHを超える長いパスの処理 | **根拠なし** | △ |
| C-18 | スペースを含むパスでの動作 | E-05, E-07(std::filesystem::pathの使用) | ○ |
| C-19 | 日本語パスでの動作 | **根拠なし** | △ |
| C-20 | 特殊文字を含むコマンドライン引数の処理 | E-08 | ○ |
| C-21 | STARTUPINFOW構造体のcbメンバの初期化 | E-10 | ○ |
| C-22 | STARTUPINFOW構造体のゼロ初期化 | E-10(`STARTUPINFOW si{};`) | ○ |
| C-23 | unique_process_informationによる自動リソース管理 | E-11(`wil::unique_process_information pi;`) | ○ |
| C-24 | GetModuleFileNameWにnullptrを渡した場合の動作 | E-05 | ○ |
| C-25 | dwCreationFlagsが0で呼び出される | E-11 | ○ |
| C-26 | lpEnvironmentがnullptrで呼び出される | E-11 | ○ |
| C-27 | lpCurrentDirectoryがnullptrで呼び出される | E-11 | ○ |

## 4) 不足情報（Unknown / Missing）
- **C-15**: shim.cpp内にコマンドライン長の明示的な制限処理がない。str_printf_nothrowの内部挙動やWindows APIのCreateProcessWのコマンドライン長制限（32768文字）に依存する
  - 候補：Windows API仕様書 / wil::str_printf_nothrowのドキュメント / CreateProcessWのドキュメント
- **C-16, C-17**: MAX_PATHの制限はWindows APIとstd::filesystem::pathの実装に依存する。shim.cpp内にはパス長に関する明示的な処理がない
  - 候補：std::filesystem::pathのドキュメント / Windows長いパスサポートの仕様
- **C-19**: 日本語（Unicode）パスの処理はWide文字列（wstring）を使用しているため理論上サポートされるが、shim.cpp内に明示的なUnicodeテストやエラー処理はない
  - 候補：wil::GetModuleFileNameWのドキュメント / std::filesystem::pathのUnicodeサポート仕様

## 5) リスクフラグ（レビュー観点）
- **リスク0（低リスク）**: shim.cppは36行の非常にシンプルなランチャーシムであり、複雑なビジネスロジックを含まない
- **リスク1（中リスク）**: str_printf_nothrowの失敗時のエラー処理は return 1 のみで、ユーザーへのエラー通知機能がない。プロセス起動失敗時も同様
- **リスク0（低リスク）**: CreateProcessWの戻り値を `!` で反転して返却する実装は、成功(TRUE=非0)で0、失敗(FALSE=0)で1(非0)を返す正しいパターン
- **リスク1（中リスク）**: 境界値テスト（C-15, C-16, C-17）はソースコードに明示的な処理がなく、外部ライブラリ・OS APIの挙動に依存するため、実際のテスト実行による検証が必要

## 6) レビュアーチェックリスト（最小）
- [ ] wWinMain関数の正常系テストケース（C-01〜C-10）がソースコードの処理フローを網羅しているか確認
- [ ] str_printf_nothrow失敗時のエラー処理（C-11）が正しく検証されているか確認
- [ ] CreateProcessWの戻り値の論理反転（C-12, C-13）のテスト観点が適切か確認
- [ ] 境界値テスト（C-15, C-16, C-17）の必要性とテスト実現可能性を評価
- [ ] 日本語パス（C-19）のテストが実行環境で有効か確認
- [ ] テスト対象がモック・スタブを必要とするWin32 API呼び出し（CreateProcessW, GetStartupInfoW, GetModuleFileNameW）であることを考慮したテスト設計の実現可能性を確認
