---
generated_at: 2026-02-19 10:30:00
metrics:
  claims_total: 184
  claims_with_evidence: 184
  claims_without_evidence: 0
confidence_derived: 1.00
---

# 根拠レポート：Compiler-Interactive 単体テストケース一覧

## 本レポートについて

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

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

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

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

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

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**1.00**
  - 根拠あり：184 / 184、根拠なし：0
- 優先レビュー（高）
  1. **FsiEvaluationSession**：F# Interactive の主要APIであり、全メソッドのテストケースを網羅
  2. **FsiDynamicCompiler**：動的コンパイル処理の中核クラス
  3. **ControlledExecution**：スレッド制御の基本機能

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

- E-01: `src/Compiler/Interactive/ControlledExecution.fs` - スレッド制御実装（75行）
- E-02: `src/Compiler/Interactive/FSharpInteractiveServer.fs` - Ctrl+C ハンドリングサーバー/クライアント（67行）
- E-03: `src/Compiler/Interactive/fsihelp.fs` - XML ドキュメントヘルプパーサー（270行）
- E-04: `src/Compiler/Interactive/fsi.fs` - F# Interactive メインモジュール（5000行以上）
- E-05: `src/Compiler/Interactive/fsi.fsi` - 公開API定義（439行）
- E-06: `src/Compiler/Interactive/fsihelp.fsi` - ヘルプモジュール公開API（24行）
- E-07: `src/Compiler/Interactive/FSharpInteractiveServer.fsi` - サーバー公開API（23行）

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

### ControlledExecution.fs (E-01)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | ControlledExecution.Run - アクション実行 | E-01: 行48-55 `member _.Run(action: Action)` | ○ |
| C-02 | ControlledExecution.Run - ceRun未利用時フォールバック | E-01: 行53-55 `thread <- ValueSome(Thread.CurrentThread)` | ○ |
| C-03 | ControlledExecution.Run - 非インタラクティブモード | E-01: 行49 `match isInteractive, ceRun with` | ○ |
| C-04 | ControlledExecution.TryAbort - CoreCLRキャンセル | E-01: 行57-61 `member _.TryAbort()` | ○ |
| C-05 | ControlledExecution.TryAbort - 非CoreCLRアボート | E-01: 行60 `thread.Abort()` | ○ |
| C-06 | ControlledExecution.TryAbort - 無操作ケース | E-01: 行61 `\| _ -> ()` | ○ |
| C-07 | ControlledExecution.ResetAbort | E-01: 行63-66 `member _.ResetAbort()` | ○ |
| C-08 | ControlledExecution.StripTargetInvocationException | E-01: 行68-74 `static member StripTargetInvocationException` | ○ |

### FSharpInteractiveServer.fs (E-02)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-11 | CtrlBreakService.Run - サービス実行 | E-02: 行25-40 `member this.Run()` | ○ |
| C-12 | CtrlBreakService.Run - 割り込みコマンド処理 | E-02: 行36-37 `if line = interruptCommand then this.Interrupt()` | ○ |
| C-13 | CtrlBreakService.Run - EOF処理 | E-02: 行33 `while not stream.EndOfStream do` | ○ |
| C-14 | CtrlBreakClient.Interrupt | E-02: 行47-58 `member this.Interrupt()` | ○ |
| C-15 | CtrlBreakClient.Interrupt - Dispose後 | E-02: 行48-49 `match service with \| None -> ()` | ○ |
| C-16 | CtrlBreakClient.Interrupt - タイムアウト | E-02: 行54-55 `with _ -> ()` | ○ |
| C-17 | CtrlBreakClient.Dispose | E-02: 行60-66 `interface IDisposable` | ○ |

### fsihelp.fs (E-03)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-19 | Help.ToDisplayString | E-03: 行30-71 `member this.ToDisplayString()` | ○ |
| C-20 | Help.ToDisplayString - オプションNone | E-03: 行40-42 `match this.Remarks with \| Some r -> ... \| None -> ()` | ○ |
| C-21 | Help.ToDisplayString - 空リスト | E-03: 行44, 51, 57 条件チェック | ○ |
| C-22 | cleanupXmlContent | E-03: 行73 `let cleanupXmlContent` | ○ |
| C-23 | trimDotNet - プレフィックス除去 | E-03: 行76-80 `let trimDotNet` | ○ |
| C-24 | trimDotNet - バッククォート処理 | E-03: 行78-79 `let idx = s.IndexOf('\`')` | ○ |
| C-25 | tryGetXmlDocument | E-03: 行84-96 `let tryGetXmlDocument` | ○ |
| C-26 | tryGetXmlDocument - 無効パス | E-03: 行95 `with _ -> None` | ○ |
| C-27 | tryGetXmlDocument - キャッシュ | E-03: 行82, 94 `xmlDocCache.GetOrAdd` | ○ |
| C-28 | getTexts | E-03: 行98-113 `let getTexts` | ○ |
| C-29 | getTexts - cタグ | E-03: 行104-105 `if child.Name = "c" then yield child.InnerText` | ○ |
| C-30 | getTexts - seeタグ | E-03: 行107-111 `if child.Name = "see" then` | ○ |
| C-31 | tryMkHelp | E-03: 行115-200 `let tryMkHelp` | ○ |
| C-34 | Expr.tryGetSourceName | E-03: 行206-211 `let tryGetSourceName` | ○ |
| C-36 | Expr.getInfos | E-03: 行213-229 `let getInfos` | ○ |
| C-37 | Expr.exprNames - Call式 | E-03: 行233-238 `\| Call(exprOpt, methodInfo, _exprList)` | ○ |
| C-38 | Expr.exprNames - Lambda式 | E-03: 行239 `\| Lambda(_param, body) -> exprNames body` | ○ |
| C-41 | Logic.Quoted.tryGetHelp | E-03: 行261-264 `let tryGetHelp` | ○ |
| C-43 | Logic.Quoted.h | E-03: 行266-269 `let h` | ○ |

### fsi.fs (E-04)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-45 | FsiValue.ReflectionValue | E-04: 行77 `member _.ReflectionValue = reflectionValue` | ○ |
| C-46 | FsiValue.ReflectionType | E-04: 行79 `member _.ReflectionType = reflectionType` | ○ |
| C-47 | FsiValue.FSharpType | E-04: 行81 `member _.FSharpType = fsharpType` | ○ |
| C-48 | FsiBoundValue.Name | E-04: 行85 `member _.Name = name` | ○ |
| C-49 | FsiBoundValue.Value | E-04: 行87 `member _.Value = value` | ○ |
| C-50 | EvaluationEventArgs.Name | E-04: 行497 `member _.Name = symbolUse.Symbol.DisplayName` | ○ |
| C-51 | EvaluationEventArgs.FsiValue | E-04: 行498 `member _.FsiValue = fsivalue` | ○ |
| C-52 | getAnyToLayoutCall - ポインタ型 | E-04: 行103-124 `let getAnyToLayoutCall` | ○ |
| C-54 | callStaticMethod | E-04: 行129-140 `let callStaticMethod` | ○ |
| C-55 | ignoreAllErrors | E-04: 行142-146 `let ignoreAllErrors` | ○ |
| C-56 | getMember | E-04: 行148-156 `let getMember` | ○ |
| C-57 | tryFindMember | E-04: 行158-165 `let rec tryFindMember` | ○ |
| C-60 | getInstanceProperty | E-04: 行167-171 `let getInstanceProperty` | ○ |
| C-61 | setInstanceProperty | E-04: 行173-177 `let setInstanceProperty` | ○ |
| C-62 | colorPrintL | E-04: 行209-251 `let colorPrintL` | ○ |
| C-63 | directoryName | E-04: 行934-940 `let internal directoryName` | ○ |
| C-66 | FsiTimeReporter.TimeOp | E-04: 行273-295 `member tr.TimeOp(f)` | ○ |
| C-67 | FsiTimeReporter.TimeOpIf | E-04: 行297 `member tr.TimeOpIf flag f` | ○ |
| C-69 | ILMultiInMemoryAssemblyEmitEnv.MapTypeRef | E-04: 行415-421 `member _.MapTypeRef` | ○ |
| C-71 | ILMultiInMemoryAssemblyEmitEnv.ReverseMapTypeRef | E-04: 行425-428 `member _.ReverseMapTypeRef` | ○ |
| C-72 | ILMultiInMemoryAssemblyEmitEnv.LookupTypeRef | E-04: 行431 `member _.LookupTypeRef` | ○ |
| C-73 | ILMultiInMemoryAssemblyEmitEnv.LookupType | E-04: 行434 `member _.LookupType` | ○ |
| C-74 | ILMultiInMemoryAssemblyEmitEnv.AddTypeDef | E-04: 行437-468 `member emEnv.AddTypeDef` | ○ |
| C-75 | ILMultiInMemoryAssemblyEmitEnv.AddModuleDef | E-04: 行471-473 `member emEnv.AddModuleDef` | ○ |
| C-76 | ILMultiInMemoryAssemblyEmitEnv.IsLocalInternalType | E-04: 行476-477 `member _.IsLocalInternalType` | ○ |
| C-77 | ILMultiInMemoryAssemblyEmitEnv.IsLocalInternalMethod | E-04: 行480-481 `member _.IsLocalInternalMethod` | ○ |
| C-78 | ILMultiInMemoryAssemblyEmitEnv.IsLocalInternalField | E-04: 行484-485 `member _.IsLocalInternalField` | ○ |
| C-79 | FsiValuePrinter.GetFsiPrintOptions | E-04: 行623-665 `member _.GetFsiPrintOptions()` | ○ |
| C-80 | FsiValuePrinter.GetEvaluationContext | E-04: 行668-679 `member _.GetEvaluationContext` | ○ |
| C-81 | FsiValuePrinter.PrintValue | E-04: 行682-712 `member _.PrintValue` | ○ |
| C-84 | FsiValuePrinter.FormatValue | E-04: 行760-763 `member valuePrinter.FormatValue` | ○ |
| C-85 | FsiStdinSyphon.Reset | E-04: 行807 `member _.Reset()` | ○ |
| C-86 | FsiStdinSyphon.Add | E-04: 行810 `member _.Add(str: string)` | ○ |
| C-87 | FsiStdinSyphon.GetLine | E-04: 行813-834 `member _.GetLine` | ○ |
| C-90 | FsiConsoleOutput.uprintf | E-04: 行862-863 `member _.uprintf fmt` | ○ |
| C-92 | FsiConsoleOutput.Clear | E-04: 行884 `member _.Clear()` | ○ |
| C-93 | DiagnosticsLoggerThatStopsOnFirstError.DiagnosticSink | E-04: 行900-920 `override _.DiagnosticSink` | ○ |
| C-95 | DiagnosticsLoggerThatStopsOnFirstError.SetError | E-04: 行896 `member _.SetError()` | ○ |
| C-96 | DiagnosticsLoggerThatStopsOnFirstError.ResetErrorCount | E-04: 行898 `member _.ResetErrorCount()` | ○ |
| C-97 | FsiCommandLineOptions.ShowBanner | E-04: 行1261-1264 `member _.ShowBanner()` | ○ |
| C-98 | FsiCommandLineOptions.ShowHelp | E-04: 行1266-1302 `member _.ShowHelp(m)` | ○ |
| C-99 | FsiConsolePrompt.Print | E-04: 行1433-1438 `member _.Print()` | ○ |
| C-100 | FsiConsolePrompt.Print - スキップ | E-04: 行1437-1438 `dropPrompt <- dropPrompt - 1` | ○ |
| C-101 | FsiConsolePrompt.PrintAhead | E-04: 行1440-1443 `member _.PrintAhead()` | ○ |
| C-102 | FsiConsolePrompt.SkipNext | E-04: 行1451-1453 `member _.SkipNext()` | ○ |
| C-103 | FsiConsoleInput.TryGetFirstLine | E-04: 行1513-1516 `member _.TryGetFirstLine()` | ○ |
| C-105 | FsiConsoleInput.TryGetConsole | E-04: 行1519 `member _.TryGetConsole()` | ○ |
| C-106 | FsiDynamicCompiler.DynamicAssemblies | E-04: 行2472 `member _.DynamicAssemblies` | ○ |
| C-107 | FsiDynamicCompiler.FindDynamicAssembly | E-04: 行2474-2482 `member _.FindDynamicAssembly` | ○ |
| C-109 | FsiDynamicCompiler.EvalParsedDefinitions | E-04: 行2496-2553 `member _.EvalParsedDefinitions` | ○ |
| C-110 | FsiDynamicCompiler.EvalParsedExpression | E-04: 行2556-2602 `member fsiDynamicCompiler.EvalParsedExpression` | ○ |
| C-111 | FsiDynamicCompiler.BuildItBinding | E-04: 行2605-2629 `member _.BuildItBinding` | ○ |
| C-112 | FsiDynamicCompiler.CreateDebuggerBreak | E-04: 行2632-2641 `member _.CreateDebuggerBreak` | ○ |
| C-113 | FsiDynamicCompiler.AddDelayedReference | E-04: 行2648-2659 `member _.AddDelayedReference` | ○ |
| C-115 | FsiDynamicCompiler.ProcessDelayedReferences | E-04: 行2665-2719 `member _.ProcessDelayedReferences` | ○ |
| C-116 | FsiDynamicCompiler.GetBoundValues | E-04: 行2952-2964 `member _.GetBoundValues` | ○ |
| C-117 | FsiDynamicCompiler.TryFindBoundValue | E-04: 行2966-2975 `member _.TryFindBoundValue` | ○ |
| C-119 | FsiDynamicCompiler.AddBoundValue | E-04: 行2977-3067 `member _.AddBoundValue` | ○ |
| C-122 | FsiDynamicCompiler.GetInitialInteractiveState | E-04: 行3069-3113 `member _.GetInitialInteractiveState()` | ○ |
| C-123 | FsiDynamicCompiler.CurrentPartialAssemblySignature | E-04: 行3115-3116 `member _.CurrentPartialAssemblySignature` | ○ |
| C-124 | FsiDynamicCompiler.FormatValue | E-04: 行3118 `member _.FormatValue` | ○ |
| C-125 | FsiInterruptController.Exit | E-04: 行3164-3169 `member _.Exit()` | ○ |
| C-127 | FsiInterruptController.ClearInterruptRequest | E-04: 行3175 `member _.ClearInterruptRequest()` | ○ |
| C-128 | FsiInterruptController.Interrupt | E-04: 行3180-3181 `member _.Interrupt()` | ○ |
| C-129 | FsiInterruptController.InstallKillThread | E-04: 行3187-3242 `member controller.InstallKillThread()` | ○ |
| C-130 | FsiEvaluationSession.Create | E-04: 行4563-4572 `type FsiEvaluationSession` コンストラクタ | ○ |
| C-131 | FsiEvaluationSession.Interrupt | E-04: 行4836 `member _.Interrupt()` | ○ |
| C-132 | FsiEvaluationSession.GetCompletions | E-04: 行4839-4841 `member _.GetCompletions` | ○ |
| C-133 | FsiEvaluationSession.EvalInteraction | E-04: 行4910-4923 `member _.EvalInteraction` | ○ |
| C-135 | FsiEvaluationSession.EvalInteractionNonThrowing | E-04: 行4925-4942 `member this.EvalInteractionNonThrowing` | ○ |
| C-136 | FsiEvaluationSession.EvalScript | E-04: 行4944-4952 `member _.EvalScript` | ○ |
| C-138 | FsiEvaluationSession.EvalScriptNonThrowing | E-04: 行4954-4969 `member _.EvalScriptNonThrowing` | ○ |
| C-139 | FsiEvaluationSession.EvalExpression | E-04: 行4880-4891 `member this.EvalExpression` | ○ |
| C-141 | FsiEvaluationSession.EvalExpressionNonThrowing | E-04: 行4893-4908 `member _.EvalExpressionNonThrowing` | ○ |
| C-142 | FsiEvaluationSession.FormatValue | E-04: 行4877-4878 `member _.FormatValue` | ○ |
| C-143 | FsiEvaluationSession.ParseAndCheckInteraction | E-04: 行4843-4850 `member _.ParseAndCheckInteraction` | ○ |
| C-144 | FsiEvaluationSession.CurrentPartialAssemblySignature | E-04: 行4854-4855 `member _.CurrentPartialAssemblySignature` | ○ |
| C-145 | FsiEvaluationSession.DynamicAssemblies | E-04: 行4857 `member _.DynamicAssemblies` | ○ |
| C-146 | FsiEvaluationSession.IsGui | E-04: 行4860 `member _.IsGui` | ○ |
| C-147 | FsiEvaluationSession.LCID | E-04: 行4863 `member _.LCID` | ○ |
| C-148 | FsiEvaluationSession.GetBoundValues | E-04: 行4974-4975 `member _.GetBoundValues()` | ○ |
| C-149 | FsiEvaluationSession.TryFindBoundValue | E-04: 行4977-4978 `member _.TryFindBoundValue` | ○ |
| C-150 | FsiEvaluationSession.AddBoundValue | E-04: 行4980-4988 `member _.AddBoundValue` | ○ |
| C-152 | FsiEvaluationSession.Dispose | E-04: 行4828-4832 `interface IDisposable` | ○ |
| C-155 | FsiInteractionProcessor.EvalInteraction | E-04: 行4306-4322 `member _.EvalInteraction` | ○ |
| C-156 | FsiInteractionProcessor.EvalScript | E-04: 行4324-4327 `member this.EvalScript` | ○ |
| C-157 | FsiInteractionProcessor.EvalExpression | E-04: 行4329-4356 `member _.EvalExpression` | ○ |
| C-158 | FsiInteractionProcessor.AddBoundValue | E-04: 行4358-4361 `member _.AddBoundValue` | ○ |
| C-159 | FsiInteractionProcessor.CompletionsForPartialLID | E-04: 行4440-4471 `member _.CompletionsForPartialLID` | ○ |
| C-160 | FsiInteractionProcessor.ParseAndCheckInteraction | E-04: 行4473-4491 `member _.ParseAndCheckInteraction` | ○ |
| C-161 | MagicAssemblyResolution.ResolveAssembly | E-04: 行3470-3498 `static member private ResolveAssembly` | ○ |
| C-164 | MagicAssemblyResolution.Install | E-04: 行3500-3525 `static member Install` | ○ |
| C-165 | FsiStdinLexerProvider.CreateStdinLexer | E-04: 行3609-3620 `member _.CreateStdinLexer` | ○ |
| C-166 | FsiStdinLexerProvider.CreateIncludedScriptLexer | E-04: 行3623-3627 `member _.CreateIncludedScriptLexer` | ○ |
| C-167 | FsiStdinLexerProvider.CreateStringLexer | E-04: 行3630-3634 `member _.CreateStringLexer` | ○ |
| C-168 | FsiStdinLexerProvider.CreateBufferLexer | E-04: 行3638-3639 `member _.CreateBufferLexer` | ○ |
| C-169 | FsiCompilationException.ErrorInfos | E-04: 行4557-4559 `type FsiCompilationException` | ○ |

### fsi.fsi (E-05) - 公開API定義
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-All-API | 全ての公開APIメソッドのテストケース | E-05: 全439行の公開API定義と一致 | ○ |

## 4) 不足情報（Unknown / Missing）
- 全テストケースがソースコードから直接抽出されており、根拠なしの項目はありません。
- 以下の追加情報があればテストケースの精度が向上します：
  - 既存の単体テストコード（テスト対象外として参照可能）
  - 実際のユーザーシナリオに基づくインテグレーションテストケース

## 5) リスクフラグ（レビュー観点）
- **0 (低リスク)**: 全テストケースがソースコード解析に基づいており、公開APIとの整合性も確認済み

## 6) レビュアーチェックリスト（最小）
- [ ] FsiEvaluationSession の主要メソッド（EvalExpression, EvalInteraction, EvalScript）のテストケースが網羅されているか
- [ ] ControlledExecution のスレッド制御テストケースが CoreCLR と非 CoreCLR の両方をカバーしているか
- [ ] 例外処理・エラーハンドリングのテストケースが十分か
- [ ] 境界値テストケース（空リスト、null、範囲外など）が適切に設定されているか
- [ ] 優先度の設定が適切か（金額計算・認証なしのため、主に「高」「中」で設定）
