---
generated_at: 2026-02-27 12:00:00
metrics:
  claims_total: 55
  claims_with_evidence: 52
  claims_without_evidence: 3
confidence_derived: 0.95
---

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

## 本レポートについて

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

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

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

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

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

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**0.95**
  - 根拠あり：52 / 55、根拠なし：3
- 優先レビュー（高）
  1. **C-04 (UT-VCO-004)**：@vue/runtime-dom欠落時の挙動 - ソースコード上で明示的なエラーハンドリングが未確認
  2. **C-31 (UT-VCO-031)**：テンプレートが'#'のみの場合 - document.querySelectorの挙動は実装依存
  3. **C-44 (UT-VCO-044)**：全ビルドフラグがfalseの場合のフォールバック - コード中にshould not happenコメントあり

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

- E-01: `packages/vue-compat/src/createCompatVue.ts` - createCompatVue関数、wrappedCreateApp関数の定義（全45行）
- E-02: `packages/vue-compat/src/index.ts` - compileToFunction関数、onError関数、Vue.compile割り当て、registerRuntimeCompiler呼び出し（全112行）
- E-03: `packages/vue-compat/src/runtime.ts` - ランタイムビルドエントリ、Vue.compileスタブ（全23行）
- E-04: `packages/vue-compat/src/dev.ts` - initDev関数（全14行）
- E-05: `packages/vue-compat/src/esm-index.ts` - ESMフルビルドの再エクスポート（全7行）
- E-06: `packages/vue-compat/src/esm-runtime.ts` - ESMランタイムの再エクスポート（全7行）
- E-07: `packages/runtime-core/src/compat/global.ts` - CompatVue型定義、createCompatVue関数の実装（全665行）
- E-08: `@vue/runtime-dom` - compatUtils、DeprecationTypes、createApp等のエクスポート（import文より特定）
- E-09: `@vue/shared` - extend、isString、genCacheKey、generateCodeFrame、NOOP等のユーティリティ（import文より特定）
- E-10: `@vue/compiler-dom` - compile関数、CompilerOptions型、CompilerError型（import文より特定）

## 3) Claims と根拠の対応（レビューの主戦場）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | UT-VCO-001: CompatVueオブジェクトが正しく生成される | E-01 (L41-45), E-07 (L143-330) | ○ |
| C-02 | UT-VCO-002: runtimeDomの全プロパティが拡張される | E-01 (L43: extend(Vue, runtimeDom)) | ○ |
| C-03 | UT-VCO-003: compatUtils.createCompatVueに正しい引数が渡される | E-01 (L42), E-07 (L143-146) | ○ |
| C-04 | UT-VCO-004: @vue/runtime-dom欠落時にエラーとなる | **根拠なし** | △ |
| C-05 | UT-VCO-005: 互換モード有効時にビルトインコンポーネントが登録される | E-01 (L26-31) | ○ |
| C-06 | UT-VCO-006: 互換モード有効時にビルトインディレクティブが登録される | E-01 (L35-36) | ○ |
| C-07 | UT-VCO-007: 互換モード無効時に登録されない | E-01 (L26: if条件分岐) | ○ |
| C-08 | UT-VCO-008: createAppの戻り値が返却される | E-01 (L25, L38) | ○ |
| C-09 | UT-VCO-009: 引数がcreateAppにパススルーされる | E-01 (L23-25: ...args) | ○ |
| C-10 | UT-VCO-010: __DEV__がtrueでinitDev()が呼ばれる | E-01 (L17-19) | ○ |
| C-11 | UT-VCO-011: __DEV__がfalseでinitDev()が呼ばれない | E-01 (L17: if (__DEV__)) | ○ |
| C-12 | UT-VCO-012: 文字列テンプレートが正しくコンパイルされる | E-02 (L31-105) | ○ |
| C-13 | UT-VCO-013: コンパイル結果がキャッシュされる | E-02 (L29, L44-48, L104) | ○ |
| C-14 | UT-VCO-014: HTMLElement入力時にinnerHTMLが取得される | E-02 (L35-37) | ○ |
| C-15 | UT-VCO-015: CSSセレクタでDOM要素のinnerHTMLがコンパイルされる | E-02 (L50-59) | ○ |
| C-16 | UT-VCO-016: nodeTypeなしオブジェクトでwarnとNOOP返却 | E-02 (L35-41) | ○ |
| C-17 | UT-VCO-017: 要素が見つからない場合に空テンプレート | E-02 (L52-59) | ○ |
| C-18 | UT-VCO-018: undefined入力でNOOP返却 | E-02 (L35-41: isString(template)がfalseかつnodeTypeなし) | ○ |
| C-19 | UT-VCO-019: render関数に_rcフラグがtrue | E-02 (L102) | ○ |
| C-20 | UT-VCO-020: CompilerOptionsが正しく渡される | E-02 (L66-77: extend({...}, options)) | ○ |
| C-21 | UT-VCO-021: デフォルトでhoistStatic:trueとwhitespace:'preserve' | E-02 (L70-71) | ○ |
| C-22 | UT-VCO-022: 異なるオプションで別キャッシュエントリ | E-02 (L44: genCacheKey(template, options)) | ○ |
| C-23 | UT-VCO-023: whitespace未指定時に非推奨警告 | E-02 (L62-64) | ○ |
| C-24 | UT-VCO-024: __TEST__がtrueで警告抑制 | E-02 (L62: !__TEST__) | ○ |
| C-25 | UT-VCO-025: whitespace明示指定時に警告スキップ | E-02 (L62: !options || !options.whitespace) | ○ |
| C-26 | UT-VCO-026: コンパイルエラー時に警告出力 | E-02 (L72, L79-91) | ○ |
| C-27 | UT-VCO-027: __GLOBAL__ビルドでnew Function(code)() | E-02 (L97-98) | ○ |
| C-28 | UT-VCO-028: 非__GLOBAL__でnew Function('Vue', code)(runtimeDom) | E-02 (L98) | ○ |
| C-29 | UT-VCO-029: 空文字列テンプレートのコンパイル | E-02 (L31: template引数に空文字列を許容) | ○ |
| C-30 | UT-VCO-030: 非常に長いテンプレートの処理 | E-02 (compile関数への委譲、キャッシュ機構) | ○ |
| C-31 | UT-VCO-031: テンプレートが'#'のみの場合 | **根拠なし** | △ |
| C-32 | UT-VCO-032: asWarning=falseでプレフィックス付与 | E-02 (L80-82) | ○ |
| C-33 | UT-VCO-033: asWarning=trueでプレフィックスなし | E-02 (L80-81) | ○ |
| C-34 | UT-VCO-034: err.locあり時にコードフレーム付与 | E-02 (L83-90) | ○ |
| C-35 | UT-VCO-035: err.locなしでメッセージのみ | E-02 (L83, L90) | ○ |
| C-36 | UT-VCO-036: Vue.compileにcompileToFunctionが割り当て | E-02 (L110) | ○ |
| C-37 | UT-VCO-037: デフォルトエクスポートがCompatVue型 | E-02 (L109: const Vue: CompatVue) | ○ |
| C-38 | UT-VCO-038: registerRuntimeCompilerにcompileToFunction登録 | E-02 (L107) | ○ |
| C-39 | UT-VCO-039: runtime.tsでCompatVueが生成される | E-03 (L6) | ○ |
| C-40 | UT-VCO-040: ESMバンドラー環境でcompile警告 | E-03 (L8-21, L12) | ○ |
| C-41 | UT-VCO-041: ESMブラウザ環境でcompile警告 | E-03 (L14-15) | ○ |
| C-42 | UT-VCO-042: グローバル環境でcompile警告 | E-03 (L16-17) | ○ |
| C-43 | UT-VCO-043: 本番ビルドで警告なし | E-03 (L9: if (__DEV__)) | ○ |
| C-44 | UT-VCO-044: 全ビルドフラグfalse時のフォールバック | **根拠なし** | △ |
| C-45 | UT-VCO-045: 非ESMバンドラーでコンソール出力 | E-04 (L4-9) | ○ |
| C-46 | UT-VCO-046: initCustomFormatterが呼ばれる | E-04 (L12) | ○ |
| C-47 | UT-VCO-047: ESMバンドラーでコンソール非出力 | E-04 (L5: if (!__ESM_BUNDLER__)) | ○ |
| C-48 | UT-VCO-048: 非ブラウザ環境で何も実行されない | E-04 (L4: if (__BROWSER__)) | ○ |
| C-49 | UT-VCO-049: メッセージ内容にprod.jsの案内 | E-04 (L7-8) | ○ |
| C-50 | UT-VCO-050: esm-index.tsのデフォルトエクスポート | E-05 (L1-3) | ○ |
| C-51 | UT-VCO-051: esm-index.tsのconfigureCompat | E-05 (L6-7) | ○ |
| C-52 | UT-VCO-052: esm-index.tsのruntime-dom再エクスポート | E-05 (L4) | ○ |
| C-53 | UT-VCO-053: esm-runtime.tsのデフォルトエクスポート | E-06 (L1-3) | ○ |
| C-54 | UT-VCO-054: esm-runtime.tsのconfigureCompat | E-06 (L6-7) | ○ |
| C-55 | UT-VCO-055: esm-runtime.tsのruntime-dom再エクスポート | E-06 (L4) | ○ |

## 4) 不足情報（Unknown / Missing）
- **C-04 (@vue/runtime-dom欠落時のエラー)**: ソースコード上に明示的なエラーハンドリングが存在しない。TypeScriptのモジュール解決に依存しており、実際の挙動はランタイム環境（Node.js/ブラウザ/バンドラー）によって異なる。ユニットテストとしてはモジュールモック等の工夫が必要。
  - 候補：Node.jsのMODULE_NOT_FOUND / バンドラーのビルドエラー / ランタイムのReferenceError
- **C-31 (テンプレートが'#'のみの場合)**: `document.querySelector('#')` の挙動はDOM仕様に依存し、ブラウザによってはSyntaxErrorがthrowされる可能性がある。vue-compatのソースコードではセレクタのバリデーションは行っていない（L50で `template[0] === '#'` の判定のみ）。
  - 候補：WHATWG DOM仕様 / 各ブラウザのquerySelector実装 / jsdomの挙動
- **C-44 (全ビルドフラグfalse時のフォールバック)**: `runtime.ts`のVue.compileスタブにおいて、三項演算子チェーンの末尾に空文字列(``)が設定されており、コメントで「should not happen」と記載されている（E-03 L18）。実際のビルドプロセスでは必ずいずれかのフラグがtrueとなるため、この分岐が実行されることは想定外。
  - 候補：rollup設定ファイル / Vueのビルドスクリプト

## 5) リスクフラグ（レビュー観点）
- 0: 低リスク - esm-index.ts / esm-runtime.tsの再エクスポート系テストケース（C-50からC-55）は単純な再エクスポートであり信頼性が高い
- 0: 低リスク - dev.ts（C-45からC-49）は開発者向け情報出力のみで機能的リスクは低い
- 1: 中リスク - compileToFunctionのキャッシュやオプション伝搬（C-13, C-20からC-22）はgenCacheKeyやextendの実装に依存するため、結合テストでの確認が望ましい
- 1: 中リスク - ビルドフラグ（__DEV__, __GLOBAL__, __ESM_BUNDLER__等）による条件分岐テスト（C-10, C-11, C-24, C-27, C-28, C-43, C-44, C-47, C-48）はビルド設定のモックが必要
- 1: 中リスク - wrappedCreateAppの互換コンポーネント/ディレクティブ登録（C-05からC-07）はcompatUtils.isCompatEnabledの動作に依存
- 2: 高リスク - C-04（依存モジュール欠落）はテスト実行が困難であり、実用的にはビルド時に検出されるためユニットテストとしての価値は限定的

## 6) レビュアーチェックリスト（最小）
- [ ] createCompatVue関数のテスト（C-01からC-03）がCompatVue型の主要プロパティ（version, config, compile, configureCompat等）の存在を検証しているか
- [ ] wrappedCreateApp関数のテスト（C-05からC-09）がisCompatEnabled分岐の両方を網羅しているか
- [ ] compileToFunctionのテスト（C-12からC-31）が入力パターン（文字列/HTMLElement/セレクタ/不正値）を網羅しているか
- [ ] onError関数のテスト（C-32からC-35）がasWarningフラグとloc有無の組み合わせを検証しているか
- [ ] runtime.tsのVue.compileスタブ（C-40からC-44）が各ビルド環境フラグの条件分岐を検証しているか
- [ ] initDev関数のテスト（C-45からC-49）が__BROWSER__と__ESM_BUNDLER__の組み合わせを検証しているか
- [ ] 根拠なしの項目（C-04, C-31, C-44）について、テストケースの必要性と実行可能性を判断しているか
