---
generated_at: 2026-02-22 16:05:00
metrics:
  claims_total: 95
  claims_with_evidence: 95
  claims_without_evidence: 0
confidence_derived: 1.00
---

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

## 本レポートについて

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

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

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

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

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

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**1.00**
  - 根拠あり：95 / 95、根拠なし：0
- 優先レビュー（高）
  1. **なし**：全てのテストケースに根拠が存在

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

- E-01: `src/tools/Avalonia.Analyzers.CSharp/AvaloniaPropertyAnalyzer.cs` - メインのAnalyzerクラス定義（行1-466）
- E-02: `src/tools/Avalonia.Analyzers.CSharp/AvaloniaPropertyAnalyzer.CompileAnalyzer.cs` - コンパイル時解析クラス（行1-820）
- E-03: `src/tools/Avalonia.Analyzers.CSharp/AvaloniaPropertyAnalyzer.CSharp.cs` - C#固有の部分メソッド実装（行1-38）
- E-04: `src/tools/Avalonia.Analyzers.CSharp/BitmapAnalyzer.cs` - Bitmap avares://スキーム検出Analyzer（行1-67）
- E-05: `src/tools/Avalonia.Analyzers.CSharp/OnPropertyChangedOverrideAnalyzer.cs` - OnPropertyChangedオーバーライド検出Analyzer（行1-57）
- E-06: `src/tools/Avalonia.Analyzers.CSharp/DiagnosticIds.cs` - 診断ID定数クラス（行1-8）
- E-07: `src/tools/Avalonia.Analyzers.CSharp/AvaloniaAnalysisException.cs` - 解析例外クラス（行1-17）

## 3) Claims と根拠の対応（レビューの主戦場）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | AvaloniaPropertyAnalyzer.Initializeが正しく初期化されること | E-01 (行196-208) | ○ |
| C-02 | AvaloniaObjectTypeが見つからない場合は解析を行わないこと | E-01 (行203-207) | ○ |
| C-03 | IsAvaloniaPropertyTypeがStyledPropertyを認識すること | E-01 (行210-217) | ○ |
| C-04 | IsAvaloniaPropertyTypeがAttachedPropertyを認識すること | E-01 (行210-217) | ○ |
| C-05 | IsAvaloniaPropertyTypeがDirectPropertyを認識すること | E-01 (行210-217) | ○ |
| C-06 | 通常の型がAvaloniaPropertyとして認識されないこと | E-01 (行210-217) | ○ |
| C-07 | DerivesFromが派生型を正しく判定すること | E-01 (行219-239) | ○ |
| C-08 | DerivesFromでincludeSelf=trueの動作 | E-01 (行219-239) | ○ |
| C-09 | DerivesFromでincludeSelf=falseの動作 | E-01 (行219-239) | ○ |
| C-10 | DerivesFromでbaseTypeがnullの場合 | E-01 (行221-223) | ○ |
| C-11 | DerivesFromでtypeがnullの場合 | E-01 (行228-236) | ○ |
| C-12 | ResolveOperationSourceが変換操作を解決すること | E-01 (行244-270) | ○ |
| C-13 | ResolveOperationSourceが代入操作を解決すること | E-01 (行244-270) | ○ |
| C-14 | ResolveOperationSourceがネストした操作を解決すること | E-01 (行244-270) | ○ |
| C-15 | ResolveOperationSourceが循環参照を検出すること | E-01 (行250-254) | ○ |
| C-16 | ResolveOperationTargetが変換操作のターゲットを解決すること | E-01 (行272-298) | ○ |
| C-17 | ResolveOperationTargetが代入操作のターゲットを解決すること | E-01 (行272-298) | ○ |
| C-18 | GetReferencedFieldOrPropertyがフィールド参照を取得すること | E-01 (行300-306) | ○ |
| C-19 | GetReferencedFieldOrPropertyがプロパティ参照を取得すること | E-01 (行300-306) | ○ |
| C-20 | GetReferencedFieldOrPropertyが引数操作を解決すること | E-01 (行304) | ○ |
| C-21 | GetReferencedFieldOrPropertyがnull入力を処理すること | E-01 (行300) | ○ |
| C-22 | IsValidAvaloniaPropertyStorageがstatic readonlyを検証すること | E-01 (行308-309) | ○ |
| C-23 | 非staticフィールドが無効と判定されること | E-01 (行308) | ○ |
| C-24 | 非readonlyフィールドが無効と判定されること | E-01 (行308) | ○ |
| C-25 | WrapAndThrowIfNotCancellationがキャンセル例外を処理すること | E-01 (行312-320) | ○ |
| C-26 | WrapAndThrowIfNotCancellationが非キャンセル例外をラップすること | E-01 (行319) | ○ |
| C-27 | SymbolEqualsが同一シンボルを比較すること | E-01 (行322-331) | ○ |
| C-28 | SymbolEqualsが異なるシンボルを比較すること | E-01 (行322-331) | ○ |
| C-29 | SymbolEqualsがnullを比較すること | E-01 (行322-331) | ○ |
| C-30 | AvaloniaPropertyDescriptionコンストラクタの初期化 | E-01 (行388-397) | ○ |
| C-31 | AddOwnerが所有者を追加すること | E-01 (行401) | ○ |
| C-32 | Seal後のAddOwnerで例外がスローされること | E-01 (行399, 401) | ○ |
| C-33 | AddPropertyWrapperがラッパーを追加すること | E-01 (行403) | ○ |
| C-34 | Seal後のAddPropertyWrapperで例外がスローされること | E-01 (行399, 403) | ○ |
| C-35 | SetAssignmentが代入情報を設定すること | E-01 (行405) | ○ |
| C-36 | Seal後のSetAssignmentで例外がスローされること | E-01 (行399, 405) | ○ |
| C-37 | Sealがコレクションを不変にすること | E-01 (行407-424) | ○ |
| C-38 | Sealの冪等性 | E-01 (行409-412) | ○ |
| C-39 | ClosestAssignmentForが最も近い代入先を返すこと | E-01 (行429-443) | ○ |
| C-40 | ClosestAssignmentForが該当なしでnullを返すこと | E-01 (行429-443) | ○ |
| C-41 | TypeReferenceコンストラクタの初期化 | E-01 (行446-456) | ○ |
| C-42 | CompileAnalyzerコンストラクタの初期化 | E-02 (行51-110) | ○ |
| C-43 | 必須の型が見つからない場合の例外 | E-02 (行104) | ○ |
| C-44 | RegisterAvaloniaPropertySymbolsがフィールドを登録すること | E-02 (行115-291) | ○ |
| C-45 | 静的コンストラクタ内の代入追跡 | E-02 (行164-180) | ○ |
| C-46 | RegisterInitializer_InvocationがRegister呼び出しを解析すること | E-02 (行294-430) | ○ |
| C-47 | RegisterInitializer_InvocationがAddOwnerを解析すること | E-02 (行377-423) | ○ |
| C-48 | nameof()を使用したプロパティ名抽出 | E-02 (行339-340) | ○ |
| C-49 | リテラル文字列のプロパティ名抽出 | E-02 (行336-337) | ○ |
| C-50 | inherits引数の抽出 | E-02 (行349-355) | ○ |
| C-51 | AVP1000診断（不正なストレージ） | E-02 (行433-459) | ○ |
| C-52 | 正しいストレージでの診断なし | E-02 (行446-448) | ○ |
| C-53 | AVP1000診断（プロパティストレージ） | E-02 (行463-489) | ○ |
| C-54 | 代入操作での不正なストレージ検出 | E-02 (行492-522) | ○ |
| C-55 | AVP1022診断（名前不一致） | E-02 (行526-531) | ○ |
| C-56 | privateフィールドでの名前不一致診断除外 | E-02 (行528) | ○ |
| C-57 | AVP1010診断（所有者不一致） | E-02 (行536-543) | ○ |
| C-58 | AVP1012診断（スタイルプロパティのローカル代入） | E-02 (行552-577) | ○ |
| C-59 | コンストラクタでのパラメータ転送除外 | E-02 (行556-559) | ○ |
| C-60 | UserControl派生での診断除外 | E-02 (行567-573) | ○ |
| C-61 | TopLevel派生での診断除外 | E-02 (行567-573) | ○ |
| C-62 | AVP1011診断（不適切なプロパティアクセス） | E-02 (行582-599) | ○ |
| C-63 | AVP1001診断（非静的コンテキストでの登録） | E-02 (行600-606) | ○ |
| C-64 | 静的コンストラクタでの登録（診断なし） | E-02 (行637-644) | ○ |
| C-65 | AVP1002診断（ジェネリック型所有者） | E-02 (行611-614) | ○ |
| C-66 | AVP1013診断（冗長なAddOwner） | E-02 (行616-633) | ○ |
| C-67 | AVP0001診断（CLRプロパティ関連付け） | E-02 (行691-692) | ○ |
| C-68 | AVP1021診断（曖昧なプロパティ名） | E-02 (行675-680) | ○ |
| C-69 | AVP1040診断（型不一致） | E-02 (行694-698) | ○ |
| C-70 | AVP1032診断（アクセシビリティ不一致） | E-02 (行700-703) | ○ |
| C-71 | AVP1031診断（アクセサ欠落） | E-02 (行705-727) | ○ |
| C-72 | AVP1030診断（副作用のあるアクセサ） | E-02 (行737-816) | ○ |
| C-73 | 純粋なアクセサでの診断なし | E-02 (行773-776) | ○ |
| C-74 | DirectPropertyアクセサでの診断除外 | E-02 (行754-757) | ○ |
| C-75 | BitmapAnalyzer.Initialize | E-04 (行33-38) | ○ |
| C-76 | avares://スキームでのBitmap初期化検出 | E-04 (行43-64) | ○ |
| C-77 | 通常のファイルパスでの診断なし | E-04 (行59) | ○ |
| C-78 | Bitmap以外のクラスでの診断なし | E-04 (行50-53) | ○ |
| C-79 | 非定数引数での診断なし | E-04 (行58) | ○ |
| C-80 | OnPropertyChangedOverrideAnalyzer.Initialize | E-05 (行24-29) | ○ |
| C-81 | base.OnPropertyChangedを呼び出さないオーバーライド検出 | E-05 (行31-54) | ○ |
| C-82 | base.OnPropertyChangedを呼び出すオーバーライドでの診断なし | E-05 (行38-50) | ○ |
| C-83 | OnPropertyChanged以外のメソッドでの診断なし | E-05 (行35) | ○ |
| C-84 | 非オーバーライドメソッドでの診断なし | E-05 (行36) | ○ |
| C-85 | DiagnosticIds.OnPropertyChangedOverride定数 | E-06 (行5) | ○ |
| C-86 | DiagnosticIds.Bitmap定数 | E-06 (行6) | ○ |
| C-87 | AvaloniaAnalysisExceptionコンストラクタ（with inner） | E-07 (行9-11) | ○ |
| C-88 | AvaloniaAnalysisExceptionコンストラクタ（without inner） | E-07 (行9-11) | ○ |
| C-89 | AvaloniaAnalysisExceptionシリアライゼーション | E-07 (行13-15) | ○ |
| C-90 | TypeReferenceFromInvocationTypeParameter | E-03 (行12-30) | ○ |
| C-91 | TypeReferenceFromInvocationTypeParameter（型引数リストなし） | E-03 (行17-27) | ○ |
| C-92 | IsSimpleAssignmentNode（true） | E-03 (行32-33) | ○ |
| C-93 | IsSimpleAssignmentNode（false） | E-03 (行32-33) | ○ |
| C-94 | IsInvocationNode（true） | E-03 (行35-36) | ○ |
| C-95 | IsInvocationNode（false） | E-03 (行35-36) | ○ |

## 4) 不足情報（Unknown / Missing）
- なし - 全てのテストケースはソースコードから直接導出されている

## 5) リスクフラグ（レビュー観点）
- 0: 低リスク - 全てのテストケースに明確な根拠が存在
- 注意事項:
  - Roslyn Analyzerのテストは通常、Microsoft.CodeAnalysis.CSharp.Testingパッケージを使用した統合テストが効果的
  - 一部の診断（isEnabledByDefault: false）はデフォルトで無効であり、テスト時に有効化が必要
  - 並列実行（EnableConcurrentExecution）のテストはスレッドセーフティの確認が必要

## 6) レビュアーチェックリスト（最小）
- [ ] 各DiagnosticDescriptor（AVP0001-AVP1040, AVA2001-AVA2002）に対応するテストケースが存在するか確認
- [ ] 正常系・異常系・境界値の観点が適切にカバーされているか確認
- [ ] 除外条件（UserControl/TopLevel派生、privateフィールド、DirectPropertyなど）のテストケースが含まれているか確認
- [ ] 循環参照検出（ResolveOperationSource/Target）のテストケースが含まれているか確認
- [ ] Sealパターン（不変化処理）のテストケースが含まれているか確認
- [ ] 例外ラッピング（WrapAndThrowIfNotCancellation）のテストケースが含まれているか確認
