---
generated_at: 2026-02-22 16:10:00
metrics:
  claims_total: 76
  claims_with_evidence: 76
  claims_without_evidence: 0
confidence_derived: 1.00
---

# 根拠レポート：Avalonia.Designer.HostApp 単体テストケース一覧

## 本レポートについて

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

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

1. **根拠の有無確認**：各テストケースに対して、ソースコード上の対応するクラス・メソッド・処理が存在するか
2. **根拠との整合性**：テストケースの内容がソースコードの実装と矛盾していないか
3. **網羅性**：publicメソッド、ビジネスロジック、境界条件を適切にカバーしているか

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

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

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**1.00**
  - 根拠あり：76 / 76、根拠なし：0
- 優先レビュー（高）
  1. **UT-DHA-001〜004**: DesignXamlLoader.Load のテストケース - XAMLローダーの基本機能
  2. **UT-DHA-017〜025**: JSONParser.FromJson のテストケース - JSONパース機能の中核
  3. **UT-DHA-069〜076**: Program.Main のテストケース - デザイナーアプリケーション起動

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

- E-01: `src/tools/Avalonia.Designer.HostApp/DesignXamlLoader.cs` - DesignXamlLoaderクラス（3メソッド: Load, PreloadDepsAssemblies, ParseRuntimeDeps）
- E-02: `src/tools/Avalonia.Designer.HostApp/TinyJson.cs` - JSONParserクラス（8メソッド: FromJson, AppendUntilStringEnd, Split, ParseValue, ParseAnonymousValue, CreateMemberNameDictionary, ParseObject）
- E-03: `src/tools/Avalonia.Designer.HostApp/Program.cs` - Programクラス（Main, Exec, CurrentDomain_AssemblyResolve）

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

### DesignXamlLoader クラス（UT-DHA-001〜016）

| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | DesignXamlLoader.Load で有効なXAMLドキュメントがロードされる | E-01 (L15-20) | ○ |
| C-02 | Load で依存アセンブリがプリロードされる | E-01 (L17) | ○ |
| C-03 | Load で document が null の場合の挙動 | E-01 (L15) | ○ |
| C-04 | Load で configuration が null の場合の挙動 | E-01 (L15) | ○ |
| C-05 | PreloadDepsAssemblies でアセンブリ依存関係がロードされる | E-01 (L22-89) | ○ |
| C-06 | PreloadDepsAssemblies で targetAssembly が null の場合に早期リターン | E-01 (L26-30) | ○ |
| C-07 | PreloadDepsAssemblies で assemblyLocation が空の場合に早期リターン | E-01 (L27-30) | ○ |
| C-08 | PreloadDepsAssemblies で deps.json 不在時のフォールバック処理 | E-01 (L33-46) | ○ |
| C-09 | PreloadDepsAssemblies でフォールバックが複数の場合の警告 | E-01 (L37-44) | ○ |
| C-10 | PreloadDepsAssemblies でフォールバックが 0 件の場合 | E-01 (L43-44) | ○ |
| C-11 | ParseRuntimeDeps で有効な deps.json から依存関係抽出 | E-01 (L91-121) | ○ |
| C-12 | ParseRuntimeDeps で複数ターゲット対応 | E-01 (L100-113) | ○ |
| C-13 | ParseRuntimeDeps で不正 JSON 時に空リスト返却 | E-01 (L116-119) | ○ |
| C-14 | ParseRuntimeDeps で空文字列時に空リスト返却 | E-01 (L96) | ○ |
| C-15 | ParseRuntimeDeps で targets キー不在時に空リスト返却 | E-01 (L97-98) | ○ |
| C-16 | ParseRuntimeDeps で runtime セクション不在ライブラリのスキップ | E-01 (L106-109) | ○ |

### JSONParser クラス（UT-DHA-017〜068）

| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-17 | FromJson で Dictionary<string,object> がパースされる | E-02 (L42-68) | ○ |
| C-18 | FromJson で List<object> がパースされる | E-02 (L42-68) | ○ |
| C-19 | FromJson でネスト構造がパースされる | E-02 (L136-270) | ○ |
| C-20 | FromJson でエスケープ文字が処理される | E-02 (L70-91, L145-167) | ○ |
| C-21 | FromJson で Unicode エスケープが処理される | E-02 (L154-162) | ○ |
| C-22 | FromJson で null JSON が処理される | E-02 (L186-189) | ○ |
| C-23 | FromJson で空 JSON オブジェクトがパースされる | E-02 (L98-99) | ○ |
| C-24 | FromJson で空 JSON 配列がパースされる | E-02 (L98-99) | ○ |
| C-25 | FromJson で不正 JSON 形式時に null 返却 | E-02 (L269) | ○ |
| C-26 | ParseValue で string 型がパースされる | E-02 (L138-168) | ○ |
| C-27 | ParseValue で int 型がパースされる | E-02 (L169-173) | ○ |
| C-28 | ParseValue で bool 型 true がパースされる | E-02 (L169-173, L314) | ○ |
| C-29 | ParseValue で bool 型 false がパースされる | E-02 (L169-173, L316) | ○ |
| C-30 | ParseValue で double 型がパースされる | E-02 (L169-173) | ○ |
| C-31 | ParseValue で decimal 型がパースされる | E-02 (L174-179) | ○ |
| C-32 | ParseValue で DateTime 型がパースされる | E-02 (L180-185) | ○ |
| C-33 | ParseValue で Enum 型がパースされる | E-02 (L190-202) | ○ |
| C-34 | ParseValue で配列型がパースされる | E-02 (L203-215) | ○ |
| C-35 | ParseValue で List<T> 型がパースされる | E-02 (L216-228) | ○ |
| C-36 | ParseValue で Dictionary<string,T> 型がパースされる | E-02 (L229-259) | ○ |
| C-37 | ParseValue で非 string キー Dictionary 時に null 返却 | E-02 (L239-240) | ○ |
| C-38 | ParseValue で配列記号なし時に null 返却 | E-02 (L206-207) | ○ |
| C-39 | ParseValue で長さ 2 以下の文字列で空文字列返却 | E-02 (L140-141) | ○ |
| C-40 | ParseValue で不正 Enum 値時に 0 返却 | E-02 (L198-201) | ○ |
| C-41 | ParseAnonymousValue でオブジェクト形式時に Dictionary 返却 | E-02 (L276-285) | ○ |
| C-42 | ParseAnonymousValue で配列形式時に List 返却 | E-02 (L286-293) | ○ |
| C-43 | ParseAnonymousValue で整数が int としてパースされる | E-02 (L308-311) | ○ |
| C-44 | ParseAnonymousValue で小数が double としてパースされる | E-02 (L301-306) | ○ |
| C-45 | ParseAnonymousValue で負の数値がパースされる | E-02 (L299) | ○ |
| C-46 | ParseAnonymousValue で true が bool としてパースされる | E-02 (L314-315) | ○ |
| C-47 | ParseAnonymousValue で false が bool としてパースされる | E-02 (L316-317) | ○ |
| C-48 | ParseAnonymousValue で null が null としてパースされる | E-02 (L319) | ○ |
| C-49 | ParseAnonymousValue で空文字列時に null 返却 | E-02 (L274-275) | ○ |
| C-50 | ParseObject でクラスの public フィールドが設定される | E-02 (L380-381) | ○ |
| C-51 | ParseObject でクラスの public プロパティが設定される | E-02 (L382-383) | ○ |
| C-52 | ParseObject で DataMemberAttribute.Name でカスタム名が使用される | E-02 (L332-337) | ○ |
| C-53 | ParseObject で IgnoreDataMemberAttribute のフィールドが無視される | E-02 (L328-329) | ○ |
| C-54 | ParseObject で key/value ペアが奇数の場合にインスタンス返却 | E-02 (L354-356) | ○ |
| C-55 | ParseObject で空 JSON オブジェクトで空インスタンス返却 | E-02 (L354-356) | ○ |
| C-56 | ParseObject で大文字小文字を区別しない名前マッチング | E-02 (L324) | ○ |
| C-57 | Split でカンマ区切りの要素が分割される | E-02 (L94-134) | ○ |
| C-58 | Split でコロン区切りの key:value が分割される | E-02 (L117-124) | ○ |
| C-59 | Split でネストした配列内のカンマが分割されない | E-02 (L106-113) | ○ |
| C-60 | Split で文字列内のカンマが分割されない | E-02 (L114-116) | ○ |
| C-61 | Split で長さ 2 の JSON で空リスト返却 | E-02 (L98-99) | ○ |
| C-62 | AppendUntilStringEnd でエスケープなし文字列が抽出される | E-02 (L70-91) | ○ |
| C-63 | AppendUntilStringEnd でエスケープ文字が処理される | E-02 (L75-80) | ○ |
| C-64 | AppendUntilStringEnd でエスケープされた引用符が処理される | E-02 (L75-80) | ○ |
| C-65 | AppendUntilStringEnd で閉じ引用符がない場合に最後のインデックス返却 | E-02 (L90) | ○ |
| C-66 | CreateMemberNameDictionary で public フィールドが辞書に登録される | E-02 (L322-343) | ○ |
| C-67 | CreateMemberNameDictionary で IgnoreDataMember 属性付きメンバーが除外される | E-02 (L328-329) | ○ |
| C-68 | CreateMemberNameDictionary で DataMemberAttribute.Name でカスタム名が使用される | E-02 (L332-337) | ○ |

### Program クラス（UT-DHA-069〜076）

| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-69 | Main で DesignXamlLoader が AvaloniaLocator にバインドされる | E-03 (L47-48) | ○ |
| C-70 | Main で RemoteDesignerEntryPoint.Main が呼び出される | E-03 (L49) | ○ |
| C-71 | Main で args 配列が空の場合でも正常起動する | E-03 (L44-50) | ○ |
| C-72 | Main (NETFRAMEWORK) で AssemblyResolve イベントが登録される | E-03 (L26) | ○ |
| C-73 | Main (NETFRAMEWORK) で現在ディレクトリの DLL がロードされる | E-03 (L27-38) | ○ |
| C-74 | CurrentDomain_AssemblyResolve で存在するアセンブリがロードされる | E-03 (L16-21) | ○ |
| C-75 | CurrentDomain_AssemblyResolve で存在しないアセンブリの場合に null 返却 | E-03 (L19) | ○ |
| C-76 | Exec (NETFRAMEWORK) で DesignXamlLoader がバインドされ処理完了 | E-03 (L42-50) | ○ |

## 4) 不足情報（Unknown / Missing）
- **該当なし**: すべてのテストケースは実際のソースコードに基づいて生成されており、根拠が存在します。

## 5) リスクフラグ（レビュー観点）
- **0（低リスク）**: モジュールは3ファイルのみで構成されており、すべてのpublicメソッドと主要なロジックパスをカバーしています。
- **注意点**:
  - TinyJson.cs は外部ライブラリのコピー（MIT License）であり、変更なしで使用されています
  - NETFRAMEWORK条件コンパイル部分はNET Framework環境でのみテスト可能です
  - AvaloniaXamlIlRuntimeCompiler への依存は外部モジュールであり、統合テストでの検証が推奨されます

## 6) レビュアーチェックリスト（最小）
- [ ] DesignXamlLoader.Load のテストケース（UT-DHA-001〜004）がデザイナーの基本機能をカバーしているか確認
- [ ] JSONParser のテストケースがすべての型パース（string, int, bool, double, decimal, DateTime, Enum, Array, List, Dictionary）をカバーしているか確認
- [ ] 境界値テストケース（空文字列、空配列、null）が適切に含まれているか確認
- [ ] NETFRAMEWORK条件コンパイル部分のテストケース（UT-DHA-072〜076）が適切か確認
- [ ] TinyJson.cs のエスケープシーケンス処理のテストケースが十分か確認
