---
generated_at: 2026-02-22 10:30:00
metrics:
  claims_total: 122
  claims_with_evidence: 118
  claims_without_evidence: 4
confidence_derived: 0.97
---

# 根拠レポート：Avalonia.Markup.Xaml.Loader 単体テストケース一覧

## 本レポートについて

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

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

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

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

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

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**0.97**
  - 根拠あり：118 / 122、根拠なし：4
- 優先レビュー（高）
  1. **UT-AML-020（DumpRuntimeCompilationResults）**：内部実装に依存、環境による挙動差
  2. **UT-AML-023（FindAssembliesGrantingInternalAccess nullケース）**：実装確認済みだがガード条件の確認が必要
  3. **UT-AML-113,114（ThemeVariantNodeEquals）**：内部比較ロジックの検証

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

- E-01: `src/Markup/Avalonia.Markup.Xaml.Loader/AvaloniaRuntimeXamlLoader.cs`
- E-02: `src/Markup/Avalonia.Markup.Xaml.Loader/AvaloniaXamlIlRuntimeCompiler.cs`
- E-03: `src/Markup/Avalonia.Markup.Xaml.Loader/CompilerExtensions/AvaloniaXamlIlCompiler.cs`
- E-04: `src/Markup/Avalonia.Markup.Xaml.Loader/CompilerExtensions/AvaloniaXamlIlLanguage.cs`
- E-05: `src/Markup/Avalonia.Markup.Xaml.Loader/CompilerExtensions/AvaloniaXamlIlLanguageParseIntrinsics.cs`
- E-06: `src/Markup/Avalonia.Markup.Xaml.Loader/CompilerExtensions/XamlIlAvaloniaPropertyHelper.cs`
- E-07: `src/Markup/Avalonia.Markup.Xaml.Loader/CompilerExtensions/XamlIlBindingPathHelper.cs`
- E-08: `src/Markup/Avalonia.Markup.Xaml.Loader/CompilerExtensions/Transformers/AvaloniaXamlIlSelectorTransformer.cs`
- E-09: `src/Markup/Avalonia.Markup.Xaml.Loader/CompilerExtensions/Transformers/AvaloniaXamlIlBindingPathParser.cs`
- E-10: `src/Markup/Avalonia.Markup.Xaml.Loader/CompilerExtensions/GroupTransformers/XamlMergeResourceGroupTransformer.cs`
- E-11: `src/Markup/Avalonia.Markup.Xaml.Loader/CompilerExtensions/Transformers/AvaloniaXamlIlWellKnownTypes.cs`
- E-12: `src/Markup/Avalonia.Markup.Xaml.Loader/CompilerExtensions/AvaloniaXamlDiagnosticCodes.cs`

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

### AvaloniaRuntimeXamlLoader (UT-AML-001 - UT-AML-015)

| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | Load(string)で有効なXAML文字列からオブジェクトが生成される | E-01 Line 25-33 | ○ |
| C-02 | null入力でArgumentNullExceptionがスローされる | E-01 Line 27 `xaml = xaml ?? throw new ArgumentNullException(nameof(xaml))` | ○ |
| C-03 | 空文字列入力時のエラー処理 | E-01 パース処理に委譲 | ○ |
| C-04 | 不正なXAML文字列で例外がスローされる | E-01, E-02 パースエラー処理 | ○ |
| C-05 | localAssembly指定時のアセンブリコンテキスト | E-01 Line 25, 45 パラメータ処理 | ○ |
| C-06 | rootInstance指定時の既存オブジェクトへの適用 | E-01 Line 45-48 | ○ |
| C-07 | uri指定時のURIコンテキスト設定 | E-01 Line 45-48 | ○ |
| C-08 | designMode=trueでデザインモードが有効化 | E-01 Line 46-48 | ○ |
| C-09 | Load(Stream)でストリームからオブジェクトが生成される | E-01 Line 44-48 | ○ |
| C-10 | Load(RuntimeXamlLoaderDocument)でドキュメントロード | E-01 Line 57-58 | ○ |
| C-11 | LoadGroupで複数ドキュメントのグループロード | E-01 Line 67-68 | ○ |
| C-12 | LoadGroupで空コレクション処理 | E-02 LoadGroupSreCore実装 | ○ |
| C-13 | LoadGroupで1件ドキュメント処理 | E-02 LoadGroupSreCore実装 | ○ |
| C-14 | Parse<T>でジェネリック型パース | E-01 Line 88-89 | ○ |
| C-15 | Parse<T>で型不一致時のキャスト例外 | E-01 Line 89 キャスト処理 | ○ |

### AvaloniaXamlIlRuntimeCompiler (UT-AML-016 - UT-AML-025)

| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-16 | InitializeSreでSREタイプシステム初期化 | E-02 Line 75-124 | ○ |
| C-17 | InitializeSreの重複初期化防止 | E-02 Line 86-88 nullチェック | ○ |
| C-18 | LoadでXAMLドキュメントコンパイル | E-02 Line 469-479 | ○ |
| C-19 | LoadGroupで複数ドキュメント一括コンパイル | E-02 Line 481-488 | ○ |
| C-20 | DumpRuntimeCompilationResultsでダンプ出力 | E-02 Line 47-64 | △ |
| C-21 | EmitIgnoresAccessCheckAttributeDefinition | E-02 Line 132-167 | ○ |
| C-22 | FindAssembliesGrantingInternalAccessでアセンブリ検出 | E-02 Line 185-238 | ○ |
| C-23 | FindAssembliesGrantingInternalAccessのnull入力処理 | E-02 Line 188-189 | △ |
| C-24 | GetSafeUriIdentifierでURI変換 | E-02 Line 490-498 | ○ |
| C-25 | GetSafeUriIdentifierのnull入力処理 | E-02 Line 492 null条件演算子 | ○ |

### AvaloniaXamlIlCompiler (UT-AML-026 - UT-AML-036)

| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-26 | コンストラクタでコンパイラ初期化 | E-03 Line 27-112 | ○ |
| C-27 | ParseでXAML文字列パース | E-03 Line 173-207 | ○ |
| C-28 | Parseでx:Class解決 | E-03 Line 182-193 | ○ |
| C-29 | Parseで型互換性チェック例外 | E-03 Line 198-201 | ○ |
| C-30 | TransformでAST変換 | E-03 継承元XamlILCompiler | ○ |
| C-31 | TransformGroupでグループ変換 | E-03 Line 152-168 | ○ |
| C-32 | CompileでILコンパイル | E-03 Line 209-223 | ○ |
| C-33 | ParseAndCompileで一括処理 | E-03 Line 228-234 | ○ |
| C-34 | OverrideRootTypeで型オーバーライド | E-03 Line 236-254 | ○ |
| C-35 | IsDesignModeプロパティ設定 | E-03 Line 138-142 | ○ |
| C-36 | DefaultCompileBindingsプロパティ設定 | E-03 Line 144-148 | ○ |

### AvaloniaXamlIlLanguage (UT-AML-037 - UT-AML-040)

| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-37 | Configureで言語設定構成 | E-04 Line 23-83 | ○ |
| C-38 | CustomValueConverterでカスタム値変換 | E-04 Line 243-304 | ○ |
| C-39 | CustomValueConverterでFontFamily変換 | E-04 Line 243-304, E-05 Line 65-69 | ○ |
| C-40 | CustomValueConverterで変換失敗時false返却 | E-04 Line 300-303 | ○ |

### AvaloniaXamlIlLanguageParseIntrinsics (UT-AML-041 - UT-AML-062)

| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-41 | TimeSpanパース | E-05 Line 42-63 | ○ |
| C-42 | TimeSpan秒数ショートハンド | E-05 Line 49-53 | ○ |
| C-43 | TimeSpanパースエラー報告 | E-05 Line 55 | ○ |
| C-44 | Thicknessパース | E-05 Line 71-86 | ○ |
| C-45 | Pointパース | E-05 Line 88-103 | ○ |
| C-46 | Vectorパース | E-05 Line 105-120 | ○ |
| C-47 | Sizeパース | E-05 Line 122-137 | ○ |
| C-48 | Matrixパース | E-05 Line 139-154 | ○ |
| C-49 | CornerRadiusパース | E-05 Line 156-171 | ○ |
| C-50 | Colorパース（16進数） | E-05 Line 173-187 | ○ |
| C-51 | Colorパース（色名） | E-05 Line 176 Color.TryParse | ○ |
| C-52 | RelativePointパース | E-05 Line 189-210 | ○ |
| C-53 | GridLengthパース（*） | E-05 Line 212-226 | ○ |
| C-54 | GridLength Autoパース | E-05 Line 216 GridLength.Parse | ○ |
| C-55 | GridLength数値パース | E-05 Line 216 GridLength.Parse | ○ |
| C-56 | Cursorパース | E-05 Line 251-261 | ○ |
| C-57 | IBrush用Color文字列変換 | E-05 Line 263-275 | ○ |
| C-58 | TextTrimmingパース | E-05 Line 277-288 | ○ |
| C-59 | Uriパース | E-05 Line 316-335 | ○ |
| C-60 | Uriパースエラー | E-05 Line 322-324 | ○ |
| C-61 | ThemeVariantパース | E-05 Line 337-348 | ○ |
| C-62 | 配列型パース | E-05 Line 351-442 | ○ |

### XamlIlAvaloniaPropertyHelper (UT-AML-063 - UT-AML-072)

| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-63 | EmitProvideValueTargetでAvaloniaPropertyエミット | E-06 Line 20-32 | ○ |
| C-64 | EmitProvideValueTargetでCLRプロパティエミット | E-06 Line 25-31 | ○ |
| C-65 | EmitProvideValueTargetでプロパティ未発見時false | E-06 Line 26-27 | ○ |
| C-66 | Emit(XamlAstClrProperty)でAvaloniaPropertyロード | E-06 Line 34-49 | ○ |
| C-67 | CreateNodeでAvaloniaPropertyNode作成 | E-06 Line 62-106 | ○ |
| C-68 | CreateNodeでClasses.PropertyName処理 | E-06 Line 71-77 | ○ |
| C-69 | CreateNodeでAttached property解決 | E-06 Line 79-94 | ○ |
| C-70 | CreateNodeで存在しないプロパティ例外 | E-06 Line 91-92 | ○ |
| C-71 | GetAvaloniaPropertyTypeで型取得 | E-06 Line 108-126 | ○ |
| C-72 | GetAvaloniaPropertyTypeで継承なし例外 | E-06 Line 122-125 | ○ |

### XamlIlBindingPathHelper (UT-AML-073 - UT-AML-087)

| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-73 | UpdateCompiledBindingExtensionでパス変換 | E-07 Line 21-77 | ○ |
| C-74 | UpdateCompiledBindingExtensionでパスなし処理 | E-07 Line 44-50 | ○ |
| C-75 | TransformBindingPathでPropertyNameNode変換 | E-07 Line 191-221 | ○ |
| C-76 | TransformBindingPathでIndexerNode変換 | E-07 Line 222-267 | ○ |
| C-77 | TransformBindingPathでAttachedPropertyNameNode変換 | E-07 Line 268-284 | ○ |
| C-78 | TransformBindingPathでStreamNode（Observable）変換 | E-07 Line 154-171 | ○ |
| C-79 | TransformBindingPathでStreamNode（Task）変換 | E-07 Line 173-188 | ○ |
| C-80 | TransformBindingPathでストリーム不可型エラー | E-07 Line 189 | ○ |
| C-81 | TransformBindingPathでNotNode変換 | E-07 Line 151-152 | ○ |
| C-82 | TransformBindingPathでSelfNode変換 | E-07 Line 285-287 | ○ |
| C-83 | TransformBindingPathでAncestorNode変換 | E-07 Line 305-349 | ○ |
| C-84 | TransformBindingPathでNameNode変換 | E-07 Line 350-369 | ○ |
| C-85 | TransformBindingPathで存在しない要素名エラー | E-07 Line 365-368 | ○ |
| C-86 | TransformBindingPathでTypeCastNode変換 | E-07 Line 371-380 | ○ |
| C-87 | TransformForTargetTypingでICommand変換 | E-07 Line 79-114 | ○ |

### AvaloniaXamlIlSelectorTransformer (UT-AML-088 - UT-AML-100)

| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-88 | Style.Selectorパース | E-08 Line 27-243 | ○ |
| C-89 | クラスセレクター変換 | E-08 Line 87-89 | ○ |
| C-90 | 名前セレクター変換 | E-08 Line 90-92 | ○ |
| C-91 | 子セレクター変換 | E-08 Line 157-158 | ○ |
| C-92 | 子孫セレクター変換 | E-08 Line 159-160 | ○ |
| C-93 | テンプレートセレクター変換 | E-08 Line 163-164 | ○ |
| C-94 | Notセレクター変換 | E-08 Line 166-167 | ○ |
| C-95 | nth-childセレクター変換 | E-08 Line 169-170 | ○ |
| C-96 | プロパティセレクター変換 | E-08 Line 93-115 | ○ |
| C-97 | Attachedプロパティセレクター変換 | E-08 Line 116-156 | ○ |
| C-98 | Orセレクター変換 | E-08 Line 175-179 | ○ |
| C-99 | ネストセレクター変換 | E-08 Line 181-188 | ○ |
| C-100 | 不正セレクター構文例外 | E-08 Line 203-210 | ○ |

### AvaloniaXamlIlBindingPathParser (UT-AML-101 - UT-AML-108)

| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-101 | CompiledBindingのPathパース | E-09 Line 17-79 | ○ |
| C-102 | ElementName変換 | E-09 Line 118-125 | ○ |
| C-103 | RelativeSource FindAncestor変換 | E-09 Line 154-223 | ○ |
| C-104 | RelativeSource Self変換 | E-09 Line 228-231 | ○ |
| C-105 | RelativeSource TemplatedParent変換 | E-09 Line 233-249 | ○ |
| C-106 | ElementNameとRelativeSource両方指定エラー | E-09 Line 127-130, 137-140 | ○ |
| C-107 | ControlTemplate外でTemplatedParentエラー | E-09 Line 234-240 | ○ |
| C-108 | 不正バインディングパースエラー | E-09 Line 81-91 | ○ |

### XamlMergeResourceGroupTransformer (UT-AML-109 - UT-AML-114)

| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-109 | MergeResourceIncludeマージ | E-10 Line 13-175 | ○ |
| C-110 | ThemeDictionariesマージ | E-10 Line 135-170 | ○ |
| C-111 | 無効MergeResourceIncludeエラー | E-10 Line 40-47 | ○ |
| C-112 | MergeResourceInclude順序エラー | E-10 Line 49-55 | ○ |
| C-113 | ThemeVariantNodeEquals等価判定 | E-10 Line 185-210 | △ |
| C-114 | ThemeVariantNodeEquals不等価判定 | E-10 Line 185-210 | △ |

### AvaloniaXamlIlWellKnownTypes (UT-AML-115 - UT-AML-118)

| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-115 | コンストラクタで既知型解決 | E-11 Line 186-358 | ○ |
| C-116 | Interactivity型解決 | E-11 Line 142-181 | ○ |
| C-117 | GetAvaloniaTypes(AstTransformationContext) | E-11 Line 363-369 | ○ |
| C-118 | GetAvaloniaTypes(XamlEmitContext) | E-11 Line 371-377 | ○ |

### AvaloniaXamlDiagnosticCodes (UT-AML-119 - UT-AML-122)

| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-119 | XamlTransformExceptionマッピング | E-12 Line 59 | ○ |
| C-120 | XamlBindingsTransformExceptionマッピング | E-12 Line 54 | ○ |
| C-121 | XamlSelectorsTransformExceptionマッピング | E-12 Line 57 | ○ |
| C-122 | 未知例外マッピング | E-12 Line 64 | ○ |

## 4) 不足情報（Unknown / Missing）

- **UT-AML-020 (DumpRuntimeCompilationResults)**:
  - 理由：環境依存の動作（.NET Core vs .NET Framework）であり、実際のファイル出力は環境によって異なる
  - 候補：ユニットテストでのモック使用 / 環境分岐テスト / 統合テストへの移行

- **UT-AML-023 (FindAssembliesGrantingInternalAccess nullケース)**:
  - 理由：実装上nullチェックは存在するが、早期リターンの詳細な検証が必要
  - 候補：デバッグ実行での確認 / 明示的なnullテスト追加

- **UT-AML-113,114 (ThemeVariantNodeEquals)**:
  - 理由：内部比較ロジックであり、XamlConstantNode, XamlStaticExtensionNode, XamlAstNewClrObjectNodeの各ケースの網羅性確認が必要
  - 候補：各ノードタイプの組み合わせテスト / エッジケース追加

## 5) リスクフラグ（レビュー観点）

| リスクレベル | 項目 | 説明 |
|-------------|------|------|
| 1（中） | IL生成関連テスト（UT-AML-032, 033） | 実行時コード生成のため、実際のIL検証が困難 |
| 1（中） | デザインモードテスト（UT-AML-008, 035） | UIフレームワーク依存の状態テスト |
| 0（低） | パーサーテスト（UT-AML-041-062） | 入出力が明確で検証容易 |
| 0（低） | エラーコードマッピングテスト（UT-AML-119-122） | 単純なマッピングで検証容易 |

## 6) レビュアーチェックリスト（最小）

- [ ] テストケースNo.1-15（AvaloniaRuntimeXamlLoader）の入力バリエーションが十分か確認
- [ ] テストケースNo.88-100（SelectorTransformer）のセレクター構文網羅性を確認
- [ ] テストケースNo.73-87（BindingPathHelper）のバインディングパス変換ロジックの複雑なケースを追加検討
- [ ] 境界値テスト（空配列、1件、最大値等）が各クラスで網羅されているか確認
- [ ] 例外処理テスト（異常系）のエラーメッセージ内容の検証を追加検討
- [ ] IL生成関連のテストで実行時検証方法を確立
