---
generated_at: 2026-02-22 12:00:00
metrics:
  claims_total: 206
  claims_with_evidence: 198
  claims_without_evidence: 8
confidence_derived: 0.96
---

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

## 本レポートについて

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

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

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

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

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

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**0.96**
  - 根拠あり：198 / 206、根拠なし：8
- 優先レビュー（高）
  1. **C-121/C-122 (search_package)**：pkg-configの外部コマンド実行結果に依存するため、テスト環境によって動作が異なる可能性
  2. **C-185/C-186/C-187 (update_opcode_md)**：ops.hとopcode.mdの実際の形式に依存するためフォーマット検証が必要
  3. **C-070/C-071 (Git commit_hash/current_branch)**：外部gitコマンド実行に依存するため、テスト環境依存

## 2) 参照した情報（Evidence一覧）
> ここに「実在するもの」だけ列挙。

- E-01: `lib/mruby/build.rb` - MRuby::Build, MRuby::Toolchain, MRuby::CrossBuild クラス定義
- E-02: `lib/mruby/build/command.rb` - MRuby::Command 及びそのサブクラス群定義
- E-03: `lib/mruby/build/load_gems.rb` - MRuby::LoadGems, GemCheckout, GemLoader クラス定義
- E-04: `lib/mruby/gem.rb` - MRuby::Gem::Specification, Version, List, GemBox 定義
- E-05: `lib/mruby/core_ext.rb` - Object, String, Array のモンキーパッチ、_pp関数定義
- E-06: `lib/mruby/source.rb` - MRuby::Source モジュール定義
- E-07: `lib/mruby/lockfile.rb` - MRuby::Lockfile クラス定義
- E-08: `lib/mruby/presym.rb` - MRuby::Presym クラス定義
- E-09: `lib/mruby/doc.rb` - MRuby::Documentation モジュール定義
- E-10: `lib/mruby/amalgam.rb` - MRuby::Amalgam クラス定義
- E-11: `docs/code-to-docs/単体テストケース一覧/plan.md` - モジュール定義と対象パス

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

### build.rb - MRuby::Toolchain (C-001 ~ C-007)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-001 | Toolchain.guessはCC環境変数にclangが含まれる場合clangを返す | E-01 L32-34 | ○ |
| C-002 | darwinプラットフォームでclangを返す | E-01 L35 | ○ |
| C-003 | cygwinプラットフォームでgccを返す | E-01 L36 | ○ |
| C-004 | VisualStudioVersion環境変数でvisualcppを返す | E-01 L37-38 | ○ |
| C-005 | デフォルトでgccを返す | E-01 L40 | ○ |
| C-006 | initializeでツールチェインが登録される | E-01 L44-47 | ○ |
| C-007 | setupでブロックがconf上で実行される | E-01 L49-51 | ○ |

### build.rb - MRuby::Build クラスメソッド (C-008 ~ C-014)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-008 | MRUBY_CONFIG環境変数で設定パスが返る | E-01 L61-62 | ○ |
| C-009 | CONFIG環境変数がフォールバック | E-01 L61 | ○ |
| C-010 | カレントディレクトリのbuild_config.rb検出 | E-01 L63-64 | ○ |
| C-011 | デフォルト設定ファイルへのフォールバック | E-01 L66 | ○ |
| C-012 | 空文字列時のデフォルト | E-01 L62 | ○ |
| C-013 | INSTALL_DIR環境変数による設定 | E-01 L75-76 | ○ |
| C-014 | デフォルトでMRUBY_ROOT/bin | E-01 L76 | ○ |

### build.rb - MRuby::Build インスタンスメソッド (C-015 ~ C-049)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-015 | host用ビルドの初期化 | E-01 L94-161 | ○ |
| C-016 | Windows環境で.exe拡張子 | E-01 L98-99 | ○ |
| C-017 | 既存ターゲットの再利用 | E-01 L97 | ○ |
| C-018 | enable_debugの動作 | E-01 L176-183 | ○ |
| C-019 | debug_enabled? true | E-01 L172-173 | ○ |
| C-020 | debug_enabled? nil | E-01 L172-173 | ○ |
| C-021 | enable_cxx_exceptionの動作 | E-01 L201-213 | ○ |
| C-022 | cxx_exception_disabled状態でのエラー | E-01 L204-205 | ○ |
| C-023 | 既に有効の場合の冪等性 | E-01 L202-203 | ○ |
| C-024 | disable_cxx_exceptionの動作 | E-01 L194-199 | ○ |
| C-025 | cxx_exception有効時のdisableエラー | E-01 L195-197 | ○ |
| C-026 | enable_cxx_abiの動作 | E-01 L223-235 | ○ |
| C-027 | cxx_exception有効時のenable_cxx_abiエラー | E-01 L225-227 | ○ |
| C-028 | filenameの変換 | E-01 L408-414 | ○ |
| C-029 | filename配列対応 | E-01 L409-410 | ○ |
| C-030 | exefileの拡張子付与 | E-01 L416-425 | ○ |
| C-031 | exefile既存拡張子保持 | E-01 L422-423 | ○ |
| C-032 | exefile配列対応 | E-01 L417-418 | ○ |
| C-033 | objfileの拡張子付与 | E-01 L427-433 | ○ |
| C-034 | objfile配列対応 | E-01 L428-429 | ○ |
| C-035 | libfileの拡張子付与 | E-01 L435-441 | ○ |
| C-036 | libfile配列対応 | E-01 L436-437 | ○ |
| C-037 | host? true | E-01 L502-504 | ○ |
| C-038 | host? false | E-01 L502-504 | ○ |
| C-039 | libmruby_staticのパス | E-01 L490-492 | ○ |
| C-040 | install_prefix host | E-01 L524-527 | ○ |
| C-041 | install_prefix 非host | E-01 L524-527 | ○ |
| C-042 | install_prefix= カスタム設定 | E-01 L529-531 | ○ |
| C-043 | install_prefix= nil | E-01 L530 | ○ |
| C-044 | toolchain正常読込 | E-01 L296-306 | ○ |
| C-045 | toolchain不明エラー | E-01 L300 | ○ |
| C-046 | mrbcfileパス解決 | E-01 L333-347 | ○ |
| C-047 | mrbcfile未発見エラー | E-01 L346 | ○ |
| C-048 | mrbcfile=外部設定 | E-01 L349-352 | ○ |
| C-049 | compilers配列返却 | E-01 L358-362 | ○ |

### build.rb - MRuby::CrossBuild (C-050 ~ C-051)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-050 | CrossBuild初期化 | E-01 L570-581 | ○ |
| C-051 | CrossBuild mrbcfile解決 | E-01 L583-585 | ○ |

### command.rb - MRuby::Command (C-052 ~ C-075)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-052 | Command初期化 | E-02 L10-12 | ○ |
| C-053 | Commandクローン | E-02 L16-25 | ○ |
| C-054 | shellquote | E-02 L27-29 | ○ |
| C-055 | Compiler初期化 | E-02 L43-56 | ○ |
| C-056 | all_flags結合 | E-02 L75-81 | ○ |
| C-057 | all_flags空追加フラグ | E-02 L75-81 | ○ |
| C-058 | search_header_path成功 | E-02 L64-67 | ○ |
| C-059 | search_header_path失敗 | E-02 L64-67 | ○ |
| C-060 | search_header成功 | E-02 L70-73 | ○ |
| C-061 | search_header失敗 | E-02 L70-73 | ○ |
| C-062 | preprocess_options変換 | E-02 L60-62 | ○ |
| C-063 | Linker初期化 | E-02 L191-201 | ○ |
| C-064 | Linker all_flags | E-02 L203-208 | ○ |
| C-065 | library_flags生成 | E-02 L210-212 | ○ |
| C-066 | Archiver初期化 | E-02 L234-238 | ○ |
| C-067 | Yacc初期化 | E-02 L250-254 | ○ |
| C-068 | Gperf初期化 | E-02 L266-270 | ○ |
| C-069 | Git初期化 | E-02 L283-292 | ○ |
| C-070 | Git commit_hash | E-02 L319-321 | △ |
| C-071 | Git current_branch | E-02 L323-325 | △ |
| C-072 | Mrbc初期化 | E-02 L331-335 | ○ |
| C-073 | CrossTestRunner初期化 | E-02 L364-370 | ○ |
| C-074 | emulator nil | E-02 L372-374 | ○ |
| C-075 | emulator設定済み | E-02 L372-375 | ○ |

### load_gems.rb (C-076 ~ C-099)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-076 | gembox読込 | E-03 L6-16 | ○ |
| C-077 | gembox未発見エラー | E-03 L8 | ○ |
| C-078 | ローカルgem読込 | E-03 L18-57 | ○ |
| C-079 | 文字列引数変換 | E-03 L22 | ○ |
| C-080 | mrbgem.rake未発見エラー | E-03 L33 | ○ |
| C-081 | GemCheckout初期化 | E-03 L65-74 | ○ |
| C-082 | full_gemdir path結合 | E-03 L76-78 | ○ |
| C-083 | full_gemdir pathなし | E-03 L77 | ○ |
| C-084 | canonical? | E-03 L81 | ○ |
| C-085 | git? repo設定済み | E-03 L82 | ○ |
| C-086 | git? repo nil | E-03 L82 | ○ |
| C-087 | ==同一比較 | E-03 L89-96 | ○ |
| C-088 | ==非同一比較 | E-03 L89-96 | ○ |
| C-089 | to_s文字列表現 | E-03 L99-104 | ○ |
| C-090 | GemLoader初期化(git) | E-03 L110-168 | ○ |
| C-091 | GemLoader初期化(core) | E-03 L110-168 | ○ |
| C-092 | GemLoader複数指定エラー | E-03 L166-167 | ○ |
| C-093 | GemLoader未指定エラー | E-03 L166-167 | ○ |
| C-094 | fetch! gemdir | E-03 L172-173, L192-216 | ○ |
| C-095 | fetch! core | E-03 L174, L219-222 | ○ |
| C-096 | fetch! github | E-03 L175, L229-231 | ○ |
| C-097 | fetch! bitbucket ssh | E-03 L176, L234-241 | ○ |
| C-098 | enable_gems? true | E-03 L379-381 | ○ |
| C-099 | enable_gems? false | E-03 L379-381 | ○ |

### gem.rb - Specification (C-100 ~ C-122)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-100 | Specification初期化 | E-04 L43-50 | ○ |
| C-101 | setup後の状態 | E-04 L52-91 | ○ |
| C-102 | setup必須属性エラー | E-04 L81-83 | ○ |
| C-103 | funcname変換 | E-04 L179-181 | ○ |
| C-104 | add_dependency追加 | E-04 L133-138 | ○ |
| C-105 | add_dependencyデフォルト要件 | E-04 L135 | ○ |
| C-106 | add_dependencyデフォルトgem | E-04 L134 | ○ |
| C-107 | add_test_dependencyテスト有効 | E-04 L140-141 | ○ |
| C-108 | add_test_dependencyテスト無効 | E-04 L141 | ○ |
| C-109 | add_conflict追加 | E-04 L144-146 | ○ |
| C-110 | add_conflict要件なし | E-04 L145 | ○ |
| C-111 | version_ok? 大なり | E-04 L289-306 | ○ |
| C-112 | version_ok? 不一致 | E-04 L289-306 | ○ |
| C-113 | version_ok? twiddle-wakka | E-04 L300-301 | ○ |
| C-114 | version_ok? 複数要件 | E-04 L305 | ○ |
| C-115 | version_ok? 不正演算子 | E-04 L302-303 | ○ |
| C-116 | core? コアgem | E-04 L126-127 | ○ |
| C-117 | core? 外部gem | E-04 L126-127 | ○ |
| C-118 | bin? binsあり | E-04 L129-131 | ○ |
| C-119 | bin? bins空 | E-04 L129-131 | ○ |
| C-120 | for_windows? クロスビルド | E-04 L108-115 | ○ |
| C-121 | search_package成功 | E-04 L164-177 | △ |
| C-122 | search_package失敗 | E-04 L164-177 | △ |

### gem.rb - Version (C-123 ~ C-132)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-123 | Versionパース | E-04 L370-373 | ○ |
| C-124 | <=> 大 | E-04 L333-348 | ○ |
| C-125 | <=> 等 | E-04 L333-348 | ○ |
| C-126 | <=> 小 | E-04 L333-348 | ○ |
| C-127 | <=> 異桁数 | E-04 L333-348 | ○ |
| C-128 | twiddle_wakka_ok? 正常 | E-04 L356-359 | ○ |
| C-129 | twiddle_wakka_ok? 超過 | E-04 L356-359 | ○ |
| C-130 | twiddle_wakka_ok? メジャーのみ | E-04 L356-359, L362-368 | ○ |
| C-131 | skip_major_or_minor通常 | E-04 L362-368 | ○ |
| C-132 | skip_major_or_minorメジャーのみ | E-04 L364 | ○ |

### gem.rb - List (C-133 ~ C-147)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-133 | List初期化 | E-04 L390-392 | ○ |
| C-134 | <<追加 | E-04 L403-410 | ○ |
| C-135 | <<重複防止 | E-04 L404-407 | ○ |
| C-136 | []名前検索 | E-04 L399-401 | ○ |
| C-137 | []未発見 | E-04 L399-401 | ○ |
| C-138 | generate_gem_table正常 | E-04 L465-491 | ○ |
| C-139 | generate_gem_table依存未発見 | E-04 L476-477 | ○ |
| C-140 | generate_gem_tableバージョン不一致 | E-04 L478-479 | ○ |
| C-141 | generate_gem_table競合検出 | E-04 L483-487 | ○ |
| C-142 | tsort_dependencies正常 | E-04 L493-525 | ○ |
| C-143 | tsort_dependencies循環依存 | E-04 L522-523 | ○ |
| C-144 | default_gem_params core | E-04 L416-423 | ○ |
| C-145 | default_gem_params mgem | E-04 L421 | ○ |
| C-146 | GemBox new | E-04 L580 | ○ |
| C-147 | GemBox gem | E-04 L582 | ○ |

### core_ext.rb (C-148 ~ C-157)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-148 | attr_block | E-05 L5-8 | ○ |
| C-149 | relative_path_from | E-05 L14-16 | ○ |
| C-150 | relative_path | E-05 L18-20 | ○ |
| C-151 | remove_leading_parents | E-05 L22-24 | ○ |
| C-152 | remove_leading_parents親参照なし | E-05 L22-24 | ○ |
| C-153 | replace_prefix_byマッチ | E-05 L36-45 | ○ |
| C-154 | replace_prefix_by非マッチ | E-05 L36-45 | ○ |
| C-155 | replace_prefix_by空配列 | E-05 L36-45 | ○ |
| C-156 | _pp表示 | E-05 L55-61 | ○ |
| C-157 | _ppサイレント | E-05 L56 | ○ |

### source.rb (C-158 ~ C-160)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-158 | バージョン定数読込 | E-06 L9-11 | ○ |
| C-159 | バージョン文字列形式 | E-06 L20 | ○ |
| C-160 | リリース番号計算 | E-06 L21 | ○ |

### lockfile.rb (C-161 ~ C-170)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-161 | enable有効化 | E-07 L8-9 | ○ |
| C-162 | disable無効化 | E-07 L11-13 | ○ |
| C-163 | initialize | E-07 L33-35 | ○ |
| C-164 | buildターゲット取得 | E-07 L37-39 | ○ |
| C-165 | build未存在ターゲット | E-07 L38 | ○ |
| C-166 | write書込 | E-07 L41-45 | ○ |
| C-167 | read読込 | E-07 L49-55 | ○ |
| C-168 | readファイル不存在 | E-07 L52-53 | ○ |
| C-169 | shellquote Windows | E-07 L57-63 | ○ |
| C-170 | shellquote 非Windows | E-07 L57-63 | ○ |

### presym.rb (C-171 ~ C-184)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-171 | Presym初期化 | E-08 L62-64 | ○ |
| C-172 | scanシンボル抽出 | E-08 L66-70 | ○ |
| C-173 | scan空パスリスト | E-08 L66-70 | ○ |
| C-174 | read_list読込 | E-08 L72-74 | ○ |
| C-175 | write_list書込 | E-08 L76-79 | ○ |
| C-176 | write_id_header enum形式 | E-08 L81-99 | ○ |
| C-177 | write_id_header演算子マクロ | E-08 L91-93, L3-34 | ○ |
| C-178 | write_id_header特殊シンボル | E-08 L36-46, L88-93 | ○ |
| C-179 | write_table_headerテーブル | E-08 L101-123 | ○ |
| C-180 | list_pathパス | E-08 L125-127 | ○ |
| C-181 | header_dirパス | E-08 L129-131 | ○ |
| C-182 | read_preprocessedマーカー抽出 | E-08 L143-160 | ○ |
| C-183 | read_preprocessedエスケープ | E-08 L149-156 | ○ |
| C-184 | c_literal_sizeサイズ | E-08 L163-165 | ○ |

### doc.rb (C-185 ~ C-187)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-185 | update_opcode_md更新 | E-09 L5-49 | △ |
| C-186 | オペコードフォーマット | E-09 L41 | △ |
| C-187 | 不明オペランド型エラー | E-09 L40 | ○ |

### amalgam.rb (C-188 ~ C-206)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-188 | Amalgam初期化 | E-10 L76-82 | ○ |
| C-189 | collect_gem_header_names収集 | E-10 L84-97 | ○ |
| C-190 | collect_gem_header_namesヘッダなし | E-10 L88 | ○ |
| C-191 | library_gemsバイナリ除外 | E-10 L142-143 | ○ |
| C-192 | extract_include_guardガード抽出 | E-10 L478-483 | ○ |
| C-193 | extract_include_guardガードなし | E-10 L478-483 | ○ |
| C-194 | strip_include_guardガード除去 | E-10 L485-495 | ○ |
| C-195 | strip_include_guard nilガード | E-10 L486 | ○ |
| C-196 | mruby_header? mruby.h | E-10 L528-532 | ○ |
| C-197 | mruby_header? サブディレクトリ | E-10 L530 | ○ |
| C-198 | mruby_header? システムヘッダ | E-10 L528-532 | ○ |
| C-199 | transform_source_includes mrubyヘッダ | E-10 L440-474 | ○ |
| C-200 | transform_source_includes ローカル展開 | E-10 L461-469 | ○ |
| C-201 | transform_source_includes X-macro | E-10 L448-454 | ○ |
| C-202 | transform_source_includes システムヘッダ | E-10 L470-473 | ○ |
| C-203 | collect_gem_defines MRB_USE_収集 | E-10 L185-192 | ○ |
| C-204 | collect_gem_defines空 | E-10 L185-192 | ○ |
| C-205 | already_included? 処理済み | E-10 L517-526 | ○ |
| C-206 | already_included? 未処理 | E-10 L517-526 | ○ |

## 4) 不足情報（Unknown / Missing）
- **C-070, C-071 (Git commit_hash/current_branch)**: バッククォート内のシェルコマンド実行であり、gitリポジトリ状態に依存する。テスト時にはモック化が推奨される。
  - 候補：gitモック / テスト用リポジトリの作成 / Open3への置き換え
- **C-121, C-122 (search_package)**: `system("pkg-config ...")` と バッククォートによる外部コマンド実行。テスト環境でのpkg-configの有無に依存。
  - 候補：systemメソッドのスタブ化 / pkg-configモック
- **C-185, C-186 (update_opcode_md)**: ops.hの具体的なフォーマットとopcode.mdのテーブル形式に依存。実ファイルの形式変更時にテストも更新が必要。
  - 候補：テスト用のops.hフィクスチャ作成 / opcode.mdテンプレート
- **C-070, C-071のバッククォート実行**: `\`git ...\`` によるコマンド実行は子プロセス依存であり、テスト時のコマンド不存在やエラーケースの検証が困難。
  - 候補：コマンド実行のラッパーメソッド化

## 5) リスクフラグ（レビュー観点）
- **リスク2（高）**: 外部コマンド依存のテストケース（C-070, C-071, C-121, C-122）はテスト環境に依存するため、CI/CD環境での安定性に注意
- **リスク1（中）**: ファイルシステム操作を伴うテストケース（C-166, C-167, C-168, C-175）はテンポラリディレクトリでの実行推奨
- **リスク1（中）**: 環境変数を操作するテストケース（C-001〜C-005, C-008〜C-014, C-016）はテスト間の分離が必要
- **リスク0（低）**: 純粋な計算・比較ロジックのテストケース（C-123〜C-132, C-148〜C-155）は環境に依存しない

## 6) レビュアーチェックリスト（最小）
- [ ] 外部コマンド依存テスト（pkg-config, git）のモック化方針が妥当か
- [ ] 環境変数操作テストの前後処理（save/restore）が考慮されているか
- [ ] ファイルI/O関連テストのテンポラリディレクトリ使用方針が妥当か
- [ ] Toolchain.guessのプラットフォーム判定ロジックの網羅性（freebsd, openbsd）
- [ ] Version比較の境界値（0.0.0, 999.999.999等の極端なバージョン）の網羅性
- [ ] Amalgamのインクルード変換テストに実際のmrubyヘッダ構造が反映されているか
- [ ] GemLoaderのgit clone/checkout動作はネットワーク依存のためテスト方針を確認
- [ ] MRuby::Build.initializeの複雑な初期化ロジック（150行超）のテスト十分性
