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

# 根拠レポート：DevAnalyzers 単体テストケース一覧

## 本レポートについて

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

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

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

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

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

---

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

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

- E-01: `src/tools/DevAnalyzers/GenericVirtualAnalyzer.cs`
- E-02: `src/tools/DevAnalyzers/OnPropertyChangedOverrideAnalyzer.cs`
- E-03: `src/tools/DevAnalyzers/GlobalSuppressions.cs`

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

### GenericVirtualAnalyzer クラス

| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | SupportedDiagnosticsがAVADEV1001を含むImmutableArrayを返す | E-01 (Line 21: `ImmutableArray.Create(Rule)`) | ○ |
| C-02 | InitializeでRegisterSymbolActionがMethodシンボルに対して登録される | E-01 (Line 27: `RegisterSymbolAction(AnalyzeMethod, SymbolKind.Method)`) | ○ |
| C-03 | InitializeでConfigureGeneratedCodeAnalysis(None)が呼ばれる | E-01 (Line 25: `ConfigureGeneratedCodeAnalysis(GeneratedCodeAnalysisFlags.None)`) | ○ |
| C-04 | InitializeでEnableConcurrentExecutionが呼ばれる | E-01 (Line 26: `EnableConcurrentExecution()`) | ○ |
| C-05 | ジェネリック仮想メソッドで警告が報告される | E-01 (Line 34-37: `if (symbol.IsGenericMethod && (symbol.IsVirtual || ...))`) | ○ |
| C-06 | インターフェースのジェネリックメソッドで警告が報告される | E-01 (Line 35: `symbol.ContainingType.TypeKind == TypeKind.Interface`) | ○ |
| C-07 | 非ジェネリック仮想メソッドで警告が報告されない | E-01 (Line 34: `symbol.IsGenericMethod`の条件による) | ○ |
| C-08 | ジェネリック非仮想メソッドで警告が報告されない | E-01 (Line 35: `symbol.IsVirtual`の条件による) | ○ |
| C-09 | 診断メッセージにメソッド名が含まれる | E-01 (Line 37: `symbol.Name`が引数として渡される) | ○ |
| C-10 | 診断の位置がメソッド宣言を指す | E-01 (Line 37: `symbol.Locations[0]`) | ○ |
| C-11 | DiagnosticIdがAVADEV1001である | E-01 (Line 10: `public const string DiagnosticId = "AVADEV1001"`) | ○ |
| C-12 | RuleのカテゴリがPerformanceである | E-01 (Line 16: `"Performance"`) | ○ |
| C-13 | Ruleの重大度がWarningである | E-01 (Line 17: `DiagnosticSeverity.Warning`) | ○ |
| C-14 | Ruleがデフォルトで有効である | E-01 (Line 18: `isEnabledByDefault: true`) | ○ |
| C-15 | 抽象ジェネリックメソッドで警告が報告される | E-01 (Line 34-35: 抽象メソッドはIsVirtual=trueとなる) | ○ |

### OnPropertyChangedOverrideAnalyzer クラス

| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-16 | SupportedDiagnosticsがAVADEV2001を含むImmutableArrayを返す | E-02 (Line 24: `ImmutableArray.Create(Rule)`) | ○ |
| C-17 | InitializeでRegisterSyntaxNodeActionがMethodDeclarationに対して登録される | E-02 (Line 30: `RegisterSyntaxNodeAction(AnalyzeMethod, SyntaxKind.MethodDeclaration)`) | ○ |
| C-18 | InitializeでConfigureGeneratedCodeAnalysis(None)が呼ばれる | E-02 (Line 28: `ConfigureGeneratedCodeAnalysis(GeneratedCodeAnalysisFlags.None)`) | ○ |
| C-19 | InitializeでEnableConcurrentExecutionが呼ばれる | E-02 (Line 29: `EnableConcurrentExecution()`) | ○ |
| C-20 | base.OnPropertyChangedが呼ばれていない場合に警告が報告される | E-02 (Line 40-55: baseInvocationsのチェックロジック) | ○ |
| C-21 | base.OnPropertyChangedが呼ばれている場合に警告が報告されない | E-02 (Line 48-51: `SymbolEqualityComparer.Default.Equals`で一致した場合return) | ○ |
| C-22 | OnPropertyChanged以外のメソッドで解析されない | E-02 (Line 37: `currentMethod.Name == "OnPropertyChanged"`) | ○ |
| C-23 | オーバーライドでないメソッドで解析されない | E-02 (Line 38: `currentMethod.OverriddenMethod is IMethodSymbol`) | ○ |
| C-24 | 診断メッセージにメソッド名が含まれる | E-02 (Line 55: `currentMethod.Name`が引数として渡される) | ○ |
| C-25 | 診断の位置がメソッド宣言を指す | E-02 (Line 55: `currentMethod.Locations[0]`) | ○ |
| C-26 | メソッドボディがnullの場合に例外が発生しない | E-02 (Line 40: `method.Body?.DescendantNodes()`のnull条件演算子) | ○ |
| C-27 | 別のbaseメソッド呼び出しがある場合に警告が報告される | E-02 (Line 47-48: originalMethodとの一致を確認) | ○ |
| C-28 | 複数のbase呼び出しがある場合に正しく判定される | E-02 (Line 43: `foreach (var baseInvocation in baseInvocations)`) | ○ |
| C-29 | GetDeclaredSymbolがnullを返す場合に例外が発生しない | E-02 (Line 36: `is IMethodSymbol currentMethod`パターンマッチ) | ○ |
| C-30 | DiagnosticIdがAVADEV2001である | E-02 (Line 13: `public const string DiagnosticId = "AVADEV2001"`) | ○ |
| C-31 | RuleのカテゴリがPotential issueである | E-02 (Line 19: `"Potential issue"`) | ○ |
| C-32 | Ruleの重大度がWarningである | E-02 (Line 20: `DiagnosticSeverity.Warning`) | ○ |
| C-33 | Ruleがデフォルトで有効である | E-02 (Line 21: `isEnabledByDefault: true`) | ○ |

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

## 5) リスクフラグ（レビュー観点）
- 0（低リスク）：全テストケースがソースコードに基づいており、アナライザーの主要機能を網羅している

## 6) レビュアーチェックリスト（最小）
- [ ] GenericVirtualAnalyzerのテストケースがジェネリック仮想メソッド検出の全パターンをカバーしているか確認
- [ ] OnPropertyChangedOverrideAnalyzerのテストケースがbase呼び出し検出の全パターンをカバーしているか確認
- [ ] Roslyn Diagnostic Analyzerのテストベストプラクティスに従っているか確認
- [ ] 実際のテスト実行時にMicrosoft.CodeAnalysis.Testing.Verifersの使用を検討
