---
generated_at: 2026-02-22 12:00:00
metrics:
  claims_total: 267
  claims_with_evidence: 261
  claims_without_evidence: 6
confidence_derived: 0.98
---

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

## 本レポートについて

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

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

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

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

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

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**0.98**
  - 根拠あり：261 / 267、根拠なし：6
- 優先レビュー（高）
  1. **UT-LRA-007 / UT-LRA-008（Command#run）**：統合的な振る舞いのため、個別メソッドの組み合わせ結果の確認が必要
  2. **UT-LRA-129（Output#render）**：テンプレートファイルとERB処理の統合テストであり、実テンプレートの存在が前提
  3. **UT-LRA-165（States#compute_ielr）**：IELR状態分割の正確な期待結果は実行時の文法に依存

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

- E-01: `tools/lrama/lib/lrama/bitmap.rb` - Bitmapモジュール（from_array, to_array）
- E-02: `tools/lrama/lib/lrama/command.rb` - Commandクラス（run）
- E-03: `tools/lrama/lib/lrama/context.rb` - Contextクラス（テーブル計算メソッド群）
- E-04: `tools/lrama/lib/lrama/digraph.rb` - Digraphクラス（compute, traverse）
- E-05: `tools/lrama/lib/lrama/diagnostics.rb` - Diagnosticsクラス（run, diagnose_conflict, diagnose_parameterizing_redefined）
- E-06: `tools/lrama/lib/lrama/grammar.rb` - Grammarクラス（prepare, validate!, add_*等）
- E-07: `tools/lrama/lib/lrama/grammar_validator.rb` - GrammarValidatorクラス（valid?, *_within_threshold）
- E-08: `tools/lrama/lib/lrama/lexer.rb` - Lexerクラス（next_token, lex_token, lex_c_code）
- E-09: `tools/lrama/lib/lrama/logger.rb` - Loggerクラス（warn, error）
- E-10: `tools/lrama/lib/lrama/options.rb` - Optionsクラス（デフォルト値）
- E-11: `tools/lrama/lib/lrama/option_parser.rb` - OptionParserクラス（parse, validate_report, validate_trace）
- E-12: `tools/lrama/lib/lrama/output.rb` - Outputクラス（render, token_enums, int_type_for等）
- E-13: `tools/lrama/lib/lrama/parser.rb` - Parserクラス（initialize, parse, on_error）
- E-14: `tools/lrama/lib/lrama/state.rb` - Stateクラス（transitions, conflicts, reduce等）
- E-15: `tools/lrama/lib/lrama/states.rb` - Statesクラス（compute, compute_ielr等）
- E-16: `tools/lrama/lib/lrama/states/item.rb` - Itemクラス（next_sym, end_of_rule?等）
- E-17: `tools/lrama/lib/lrama/states_reporter.rb` - StatesReporterクラス（report）
- E-18: `tools/lrama/lib/lrama/trace_reporter.rb` - TraceReporterクラス（report）
- E-19: `tools/lrama/lib/lrama/version.rb` - VERSION定数
- E-20: `tools/lrama/lib/lrama/grammar/counter.rb` - Counterクラス（increment）
- E-21: `tools/lrama/lib/lrama/grammar/symbol.rb` - Symbolクラス（term?, enum_name, display_name等）
- E-22: `tools/lrama/lib/lrama/grammar/rule.rb` - Ruleクラス（==, display_name, empty_rule?, translated_code等）
- E-23: `tools/lrama/lib/lrama/grammar/rule_builder.rb` - RuleBuilderクラス（add_rhs, setup_rules, resolve_inline_rules等）
- E-24: `tools/lrama/lib/lrama/grammar/symbols/resolver.rb` - Symbols::Resolverクラス（add_term, add_nterm, fill_symbol_number, validate!等）
- E-25: `tools/lrama/lib/lrama/grammar/code.rb` - Codeクラス（translated_code）
- E-26: `tools/lrama/lib/lrama/grammar/code/rule_action.rb` - RuleActionクラス（reference_to_c）
- E-27: `tools/lrama/lib/lrama/grammar/binding.rb` - Bindingクラス（resolve_symbol, concatenated_args_str）
- E-28: `tools/lrama/lib/lrama/grammar/precedence.rb` - Precedenceクラス（<=>）
- E-29: `tools/lrama/lib/lrama/grammar/parameterizing_rule/resolver.rb` - ParameterizingRule::Resolverクラス
- E-30: `tools/lrama/lib/lrama/grammar/parameterizing_rule/rule.rb` - ParameterizingRule::Ruleクラス
- E-31: `tools/lrama/lib/lrama/grammar/parameterizing_rule/rhs.rb` - ParameterizingRule::Rhsクラス
- E-32: `tools/lrama/lib/lrama/grammar/reference.rb` - Referenceクラス（value）
- E-33: `tools/lrama/lib/lrama/grammar/type.rb` - Typeクラス
- E-34: `tools/lrama/lib/lrama/grammar/union.rb` - Unionクラス（braces_less_code）
- E-35: `tools/lrama/lib/lrama/lexer/token.rb` - Tokenクラス（==, referred_by?, invalid_ref等）
- E-36: `tools/lrama/lib/lrama/lexer/token/tag.rb` - Tagクラス（member）
- E-37: `tools/lrama/lib/lrama/lexer/token/instantiate_rule.rb` - InstantiateRuleクラス
- E-38: `tools/lrama/lib/lrama/lexer/token/user_code.rb` - UserCodeクラス（references, scan_reference）
- E-39: `tools/lrama/lib/lrama/lexer/location.rb` - Locationクラス（partial_location, generate_error_message等）
- E-40: `tools/lrama/lib/lrama/lexer/grammar_file.rb` - GrammarFileクラス（lines, Text#inspect）
- E-41: `tools/lrama/lib/lrama/counterexamples.rb` - Counterexamplesクラス（compute, shortest_path等）
- E-42: `tools/lrama/lib/lrama/counterexamples/example.rb` - Exampleクラス
- E-43: `tools/lrama/lib/lrama/counterexamples/derivation.rb` - Derivationクラス（render_strings_for_report）
- E-44: `tools/lrama/lib/lrama/counterexamples/triple.rb` - Tripleクラス
- E-45: `tools/lrama/lib/lrama/counterexamples/path.rb` - Pathクラス
- E-46: `tools/lrama/lib/lrama/counterexamples/state_item.rb` - StateItemクラス
- E-47: `tools/lrama/lib/lrama/state/shift.rb` - Shiftクラス
- E-48: `tools/lrama/lib/lrama/state/reduce.rb` - Reduceクラス（selected_look_ahead等）
- E-49: `tools/lrama/lib/lrama/state/resolved_conflict.rb` - ResolvedConflictクラス（report_message）
- E-50: `tools/lrama/lib/lrama/state/shift_reduce_conflict.rb` - ShiftReduceConflictクラス
- E-51: `tools/lrama/lib/lrama/state/reduce_reduce_conflict.rb` - ReduceReduceConflictクラス
- E-52: `tools/lrama/lib/lrama/report/duration.rb` - Report::Durationモジュール
- E-53: `tools/lrama/lib/lrama/report/profile.rb` - Report::Profileモジュール

## 3) Claims と根拠の対応（レビューの主戦場）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01〜C-06 | Bitmap.from_array / to_array の正常系・境界値テスト | E-01 | ○ |
| C-07〜C-09 | Command#run の正常系・異常系テスト | E-02 | ○ |
| C-10〜C-24 | Context テーブル生成メソッド群のテスト | E-03 | ○ |
| C-25〜C-28 | Digraph#compute のテスト | E-04 | ○ |
| C-29〜C-31 | Diagnostics#run のテスト | E-05 | ○ |
| C-32〜C-48 | Grammar クラスの各メソッドテスト | E-06 | ○ |
| C-49〜C-52 | GrammarValidator#valid? のテスト | E-07 | ○ |
| C-53〜C-69 | Lexer のトークン解析テスト | E-08 | ○ |
| C-70〜C-75 | Token 基底クラスのテスト | E-35 | ○ |
| C-76〜C-77 | Tag#member のテスト | E-36 | ○ |
| C-78〜C-81 | InstantiateRule のテスト | E-37 | ○ |
| C-82〜C-91 | UserCode#references のテスト | E-38 | ○ |
| C-92〜C-95 | Location のテスト | E-39 | ○ |
| C-96〜C-100 | GrammarFile のテスト | E-40 | ○ |
| C-101〜C-103 | Logger のテスト | E-09 | ○ |
| C-104 | Options デフォルト値テスト | E-10 | ○ |
| C-105〜C-114 | OptionParser#parse のテスト | E-11 | ○ |
| C-115〜C-129 | Output の各メソッドテスト | E-12 | ○ |
| C-129 | Output#render テンプレート統合テスト | E-12 | △ |
| C-130〜C-134 | Parser のテスト | E-13 | ○ |
| C-135〜C-148 | State クラスのテスト | E-14 | ○ |
| C-149〜C-159 | State サブクラス（Shift, Reduce, Conflict）のテスト | E-47〜E-51 | ○ |
| C-160〜C-166 | States クラスのテスト | E-15 | ○ |
| C-165 | States#compute_ielr の期待結果詳細 | E-15 | △ |
| C-167〜C-175 | Item のテスト | E-16 | ○ |
| C-176〜C-177 | Counter のテスト | E-20 | ○ |
| C-178〜C-185 | Symbol のテスト | E-21 | ○ |
| C-186〜C-196 | Rule のテスト | E-22 | ○ |
| C-197〜C-203 | Code / RuleAction のテスト | E-25, E-26 | ○ |
| C-204 | Precedence#<=> のテスト | E-28 | ○ |
| C-205〜C-208 | Binding のテスト | E-27 | ○ |
| C-209〜C-215 | RuleBuilder のテスト | E-23 | ○ |
| C-216〜C-231 | Symbols::Resolver のテスト | E-24 | ○ |
| C-232〜C-241 | ParameterizingRule 関連のテスト | E-29〜E-31 | ○ |
| C-242〜C-245 | Reference, Type, Union のテスト | E-32〜E-34 | ○ |
| C-246〜C-249 | StatesReporter のテスト | E-17 | ○ |
| C-250〜C-252 | TraceReporter のテスト | E-18 | ○ |
| C-253〜C-255 | Report::Duration のテスト | E-52 | ○ |
| C-256 | VERSION 定数テスト | E-19 | ○ |
| C-257〜C-260 | Counterexamples のテスト | E-41 | ○ |
| C-258〜C-259 | Counterexamples#compute の具体的な反例生成結果 | E-41 | △ |
| C-261〜C-267 | Counterexamples サブクラスのテスト | E-42〜E-46 | ○ |

## 4) 不足情報（Unknown / Missing）
- **Output#render（C-129）**：テンプレートファイル（bison/yacc.c, bison/yacc.h）の内容は実行時に依存。ERBテンプレートの具体的な出力結果はテンプレート内容に依存するため、テストの期待結果は概要レベルに留まる。
  - 候補：テンプレートファイルの実内容確認 / 統合テストでの出力検証
- **States#compute_ielr（C-165）**：IELR状態分割の具体的な結果は入力文法に依存する。アルゴリズムの正確性は実文法での検証が必要。
  - 候補：既知の文法に対するIELR分割結果との比較
- **Counterexamples#compute（C-258〜C-259）**：反例生成の具体的な内容は入力文法とコンフリクトの種類に依存。最短経路探索の結果はグラフ構造に依存する。
  - 候補：既知のコンフリクトパターンでの反例出力との比較
- **Command#run（C-007〜C-009）**：複数コンポーネントの統合テストであり、各ステップの中間状態は確認困難。
  - 候補：統合テストフレームワークでのend-to-endテスト
- **parser.rb のRacc自動生成部分**：parser.rbの大部分はRaccから自動生成されたコードであり、Racc側のテストでカバーされるべき領域が含まれる。
  - 候補：parser.yの文法定義との照合

## 5) リスクフラグ（レビュー観点）
- **0（低リスク）**：Bitmap, Logger, Options, Version, Counter, Reference, Type, Union, Path, StateItem, Triple, Shift, ReduceReduceConflict, ShiftReduceConflict - 単純なデータ保持クラスまたはユーティリティで、ロジックが明確
- **1（中リスク）**：Lexer, Token, Symbol, Rule, RuleBuilder, Symbols::Resolver, ParameterizingRule関連, Binding, StatesReporter, TraceReporter, Diagnostics, GrammarValidator - ビジネスロジックを含むが、テスト対象が明確
- **2（高リスク）**：Parser（Racc自動生成）, States（LALR/IELR計算）, Context（テーブル生成）, Counterexamples（反例生成）, Output（テンプレートレンダリング）, Command（統合処理） - 複雑なアルゴリズムまたは外部依存を含み、テストケースの期待結果の正確性確認が困難

## 6) レビュアーチェックリスト（最小）
- [ ] Bitmap のラウンドトリップテスト（UT-LRA-006）が from_array/to_array の対称性を正しく検証しているか
- [ ] Lexer のトークン認識テスト（UT-LRA-054〜UT-LRA-066）が全PERCENT_TOKENSを網羅しているか確認（現在は代表的なもののみ）
- [ ] Context のテーブル生成テスト（UT-LRA-010〜UT-LRA-024）で、具体的な文法に対する期待値を定義できるか検討
- [ ] Symbols::Resolver の fill_symbol_number テスト（UT-LRA-225〜UT-LRA-226）で、エスケープ文字（\\b, \\n等）のASCIIコード対応が網羅されているか
- [ ] Parser のテスト（UT-LRA-131〜UT-LRA-132）で、最小限の有効な文法テキストのサンプルを準備できるか検討
- [ ] Output#render テスト（UT-LRA-129）でテンプレートファイルの存在をモック化する必要があるか検討
- [ ] States#compute_ielr テスト（UT-LRA-165）で、IELR対応文法のテストデータが用意できるか検討
- [ ] Counterexamples テスト（UT-LRA-258〜UT-LRA-259）で、既知のコンフリクトパターンのテストフィクスチャを用意できるか検討
- [ ] UserCode#references テスト（UT-LRA-082〜UT-LRA-091）が全参照パターン（$, @, $:）を網羅しているか
- [ ] RuleAction#reference_to_c テスト（UT-LRA-199〜UT-LRA-203）のインデックス計算が position_in_rhs を正しく考慮しているか
