---
generated_at: 2026-02-22 10:30:00
metrics:
  claims_total: 85
  claims_with_evidence: 85
  claims_without_evidence: 0
confidence_derived: 1.00
---

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

## 本レポートについて

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

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

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

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

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

---

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

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

- E-01: `src/tools/Avalonia.Analyzers.VisualBasic/AvaloniaPropertyAnalyzer.VisualBasic.cs` - Visual Basic専用のpartialメソッド実装
- E-02: `src/tools/Avalonia.Analyzers.VisualBasic/Avalonia.Analyzers.VisualBasic.csproj` - プロジェクト構成とインクルードファイル
- E-03: `src/tools/Avalonia.Analyzers.CSharp/AvaloniaPropertyAnalyzer.cs` - メインのAnalyzerクラス定義
- E-04: `src/tools/Avalonia.Analyzers.CSharp/AvaloniaPropertyAnalyzer.CompileAnalyzer.cs` - コンパイル解析ロジック
- E-05: `src/tools/Avalonia.Analyzers.CSharp/AvaloniaAnalysisException.cs` - カスタム例外クラス

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

### Visual Basic専用実装（UT-AVB-001〜012）

| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | TypeReferenceFromInvocationTypeParameterが型パラメータから正しいTypeReferenceを生成する | E-01: L11-17 | ○ |
| C-02 | TypeReferenceFromInvocationTypeParameterが複数型パラメータでOrdinalを正しく使用する | E-01: L13 `invocation.TargetMethod.TypeArguments[typeParameter.Ordinal]` | ○ |
| C-03 | TypeReferenceFromInvocationTypeParameterがOrdinal=0で最初の型引数を取得する | E-01: L13 | ○ |
| C-04 | TypeReferenceFromInvocationTypeParameterがSyntaxからLocationを取得する | E-01: L16 `typeArgumentSyntax.GetLocation()` | ○ |
| C-05 | IsSimpleAssignmentNodeがSimpleAssignmentStatementでtrueを返す | E-01: L19-20 `SyntaxKind.SimpleAssignmentStatement` | ○ |
| C-06 | IsSimpleAssignmentNodeが非代入文でfalseを返す | E-01: L20 IsKind判定 | ○ |
| C-07 | IsSimpleAssignmentNodeがCompoundAssignmentでfalseを返す | E-01: L20 | ○ |
| C-08 | IsSimpleAssignmentNodeがVariableDeclaratorでfalseを返す | E-01: L20 | ○ |
| C-09 | IsInvocationNodeがInvocationExpressionでtrueを返す | E-01: L22-23 `SyntaxKind.InvocationExpression` | ○ |
| C-10 | IsInvocationNodeが非呼び出しノードでfalseを返す | E-01: L23 IsKind判定 | ○ |
| C-11 | IsInvocationNodeがMemberAccessExpressionでfalseを返す | E-01: L23 | ○ |
| C-12 | IsInvocationNodeがObjectCreationExpressionでfalseを返す | E-01: L23 | ○ |

### 共有Analyzerクラス（UT-AVB-013〜045）

| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-13 | Initializeがコールバックを正しく登録する | E-03: L196-208 | ○ |
| C-14 | AvaloniaObjectTypeがない場合CompileAnalyzerが作成されない | E-03: L203-206 `if` 条件 | ○ |
| C-15 | SupportedDiagnosticsが15個の診断を返す | E-03: L179-194 | ○ |
| C-16 | IsAvaloniaPropertyTypeがStyledPropertyでtrueを返す | E-03: L210-217 | ○ |
| C-17 | IsAvaloniaPropertyTypeがAttachedPropertyでtrueを返す | E-03: L210-217 | ○ |
| C-18 | IsAvaloniaPropertyTypeがDirectPropertyでtrueを返す | E-03: L210-217 | ○ |
| C-19 | IsAvaloniaPropertyTypeが無関係な型でfalseを返す | E-03: L210-217 | ○ |
| C-20 | DerivesFromが派生型でtrueを返す | E-03: L219-239 | ○ |
| C-21 | DerivesFromがincludeSelf=trueで同一型でtrueを返す | E-03: L223-225 | ○ |
| C-22 | DerivesFromがincludeSelf=falseで同一型でfalseを返す | E-03: L223-226 | ○ |
| C-23 | DerivesFromが無関係な型でfalseを返す | E-03: L228-237 | ○ |
| C-24 | DerivesFromがbaseType=nullでfalseを返す | E-03: L221-222 | ○ |
| C-25 | ResolveOperationSourceが変換操作を解決する | E-03: L260-261 | ○ |
| C-26 | ResolveOperationSourceが代入操作を解決する | E-03: L262-263 | ○ |
| C-27 | ResolveOperationSourceがチェーンされた操作を解決する | E-03: L248-269 while loop | ○ |
| C-28 | ResolveOperationSourceが循環参照を検出する | E-03: L250-254 HashSet `seen` | ○ |
| C-29 | ResolveOperationSourceがキャンセル時にスローする | E-03: L256-257 | ○ |
| C-30 | ResolveOperationTargetが変換操作のParentを解決する | E-03: L287-288 | ○ |
| C-31 | ResolveOperationTargetが代入操作のTargetを解決する | E-03: L289-290 | ○ |
| C-32 | GetReferencedFieldOrPropertyがフィールド参照を解決する | E-03: L302 | ○ |
| C-33 | GetReferencedFieldOrPropertyがプロパティ参照を解決する | E-03: L303 | ○ |
| C-34 | GetReferencedFieldOrPropertyが引数内参照を解決する | E-03: L304 | ○ |
| C-35 | GetReferencedFieldOrPropertyがnull入力でnullを返す | E-03: L300 | ○ |
| C-36 | GetReferencedFieldOrPropertyが非対象操作でnullを返す | E-03: L305 | ○ |
| C-37 | IsValidAvaloniaPropertyStorage(Field)がstatic readonlyでtrueを返す | E-03: L308 | ○ |
| C-38 | IsValidAvaloniaPropertyStorage(Field)が非staticでfalseを返す | E-03: L308 | ○ |
| C-39 | IsValidAvaloniaPropertyStorage(Field)が非readonlyでfalseを返す | E-03: L308 | ○ |
| C-40 | IsValidAvaloniaPropertyStorage(Property)がstatic readonlyでtrueを返す | E-03: L309 | ○ |
| C-41 | WrapAndThrowIfNotCancellationがキャンセル例外を再スローしない | E-03: L312-317 | ○ |
| C-42 | WrapAndThrowIfNotCancellationが非キャンセル例外をラップする | E-03: L319 | ○ |
| C-43 | SymbolEqualsが同一シンボルでtrueを返す | E-03: L322-331 | ○ |
| C-44 | SymbolEqualsが異なるシンボルでfalseを返す | E-03: L330 | ○ |
| C-45 | SymbolEqualsが両方nullでtrueを返す | E-03: L330 SymbolEqualityComparer.Default | ○ |

### AvaloniaPropertyDescription（UT-AVB-046〜054）

| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-46 | AddOwnerが所有者を追加する | E-03: L401 | ○ |
| C-47 | AddOwnerがシール後に例外をスローする | E-03: L399, L401 | ○ |
| C-48 | AddPropertyWrapperがラッパーを追加する | E-03: L403 | ○ |
| C-49 | SetAssignmentが代入ターゲットを設定する | E-03: L405 | ○ |
| C-50 | SealがコレクションをImmutableにする | E-03: L407-424 | ○ |
| C-51 | Sealが既にシール済みの場合同じインスタンスを返す | E-03: L409-412 | ○ |
| C-52 | ClosestAssignmentForが最も近い代入シンボルを返す | E-03: L429-443 | ○ |
| C-53 | ClosestAssignmentForが代入がない型でnullを返す | E-03: L433-439 | ○ |
| C-54 | TypeReference Constructorがプロパティを設定する | E-03: L446-456 | ○ |

### AvaloniaAnalysisException（UT-AVB-055〜056）

| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-55 | コンストラクタがメッセージと内部例外を設定する | E-05: L9-11 | ○ |
| C-56 | コンストラクタが内部例外nullで動作する | E-05: L9 default null | ○ |

### CompileAnalyzer（UT-AVB-057〜085）

| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-57 | コンストラクタが必要な型シンボルを解決する | E-04: L51-110 | ○ |
| C-58 | コンストラクタが型不足時に例外をスローする | E-04: L104 GetTypeOrThrow | ○ |
| C-59 | AnalyzeFieldInitializerが有効な格納で診断を報告しない | E-04: L433-459 | ○ |
| C-60 | AnalyzeFieldInitializerが無効な格納でAVP1000を報告する | E-04: L446-449 | ○ |
| C-61 | AnalyzePropertyInitializerが有効な格納で診断を報告しない | E-04: L463-489 | ○ |
| C-62 | AnalyzePropertyInitializerが無効な格納でAVP1000を報告する | E-04: L476-479 | ○ |
| C-63 | AnalyzePropertyStorageAssignmentが代入を検出する | E-04: L492-522 | ○ |
| C-64 | AnalyzeMethodInvocationが静的コンストラクタ内のRegisterで診断を報告しない | E-04: L582-645 | ○ |
| C-65 | AnalyzeMethodInvocationが静的コンストラクタ外のRegisterでAVP1001を報告する | E-04: L602-605 | ○ |
| C-66 | AnalyzeMethodInvocationがジェネリック所有者でAVP1002を報告する | E-04: L611-614 | ○ |
| C-67 | AnalyzeMethodInvocationが冗長なAddOwnerでAVP1013を報告する | E-04: L616-633 | ○ |
| C-68 | AnalyzePropertyWrapperAssignmentがコンストラクタパラメータで診断を報告しない | E-04: L552-560 | ○ |
| C-69 | AnalyzePropertyWrapperAssignmentがStyledPropertyへの代入でAVP1012を報告する | E-04: L562-576 | ○ |
| C-70 | AnalyzePropertyWrapperAssignmentがUserControl派生型で診断を報告しない | E-04: L567-573 | ○ |
| C-71 | AnalyzePropertyWrapperAssignmentがTopLevel派生型で診断を報告しない | E-04: L567-573 | ○ |
| C-72 | AnalyzeWrapperCrlPropertyが正しいCLRプロパティでAVP0001を報告する | E-04: L691-692 | ○ |
| C-73 | AnalyzeWrapperCrlPropertyが複数候補でAVP1021を報告する | E-04: L675-681 | ○ |
| C-74 | AnalyzeWrapperCrlPropertyが型不一致でAVP1040を報告する | E-04: L694-698 | ○ |
| C-75 | AnalyzeWrapperCrlPropertyがアクセシビリティ不一致でAVP1032を報告する | E-04: L700-702 | ○ |
| C-76 | AnalyzeWrapperCrlPropertyがgetter欠如でAVP1031を報告する | E-04: L705, L712-721 | ○ |
| C-77 | AnalyzeWrapperCrlPropertyがsetter欠如でAVP1031を報告する | E-04: L707-710 | ○ |
| C-78 | RegisterAvaloniaPropertySymbolsが全名前空間を走査する | E-04: L117-134 | ○ |
| C-79 | RegisterAvaloniaPropertySymbolsがAvaloniaPropertyシンボルを収集する | E-04: L136, L151-160 | ○ |
| C-80 | RegisterInitializer_InvocationがRegisterからプロパティ説明を生成する | E-04: L305-376 | ○ |
| C-81 | RegisterInitializer_InvocationがAddOwnerで所有者を追加する | E-04: L377-423 | ○ |
| C-82 | RegisterInitializer_Invocationがinheritsパラメータを解析する | E-04: L349-355 | ○ |
| C-83 | RegisterInitializer_Invocationがnameofからプロパティ名を抽出する | E-04: L339-340 | ○ |
| C-84 | RegisterInitializer_Invocationが文字列リテラルからプロパティ名を抽出する | E-04: L336-337 | ○ |
| C-85 | RegisterInitializer_InvocationがAttachedPropertyでhostTypeを設定する | E-04: L357-368 | ○ |

## 4) 不足情報（Unknown / Missing）
- なし：全テストケースに根拠が存在します

## 5) リスクフラグ（レビュー観点）
- 0: 低リスク - 全テストケースがソースコードに基づいており、根拠が明確です

### 注意点
1. このモジュールはVisual Basic専用の実装（3つのpartialメソッド）のみを含み、共有コードはAvalonia.Analyzers.CSharpプロジェクトからインクルードされています
2. 共有コードのテストケース（UT-AVB-013〜085）は、Visual Basic環境でも同様に動作することを前提としています
3. Visual Basic特有のSyntaxKind（SimpleAssignmentStatement, InvocationExpression）の判定ロジックがテスト対象として重要です

## 6) レビュアーチェックリスト（最小）
- [ ] Visual Basic専用メソッド（UT-AVB-001〜012）が言語固有の構文を正しくカバーしているか確認
- [ ] SyntaxKind.SimpleAssignmentStatementとC#のSimpleAssignmentExpressionの違いが考慮されているか確認
- [ ] 共有コードのテストケースがVisual Basic環境でも適用可能か確認
- [ ] 診断ID（AVP0001〜AVP1040）の網羅性を確認
- [ ] エラーハンドリング（循環参照検出、キャンセル処理）のテストケースが十分か確認
