---
generated_at: 2026-02-22 12:00:00
metrics:
  claims_total: 240
  claims_with_evidence: 238
  claims_without_evidence: 2
confidence_derived: 0.99
---

# 根拠レポート：include-headers.csv

## 本レポートについて

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

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

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

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

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

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**0.99**
  - 根拠あり：238 / 240、根拠なし：2
- 優先レビュー（高）
  1. **UT-INC-214（不正バイトコードロード）**：異常系の期待結果が実装依存であり、ヘッダ宣言からは具体的なエラーハンドリング方法が読み取れない
  2. **UT-INC-239（atexit関数登録後のコールバック呼び出し）**：mrb_close時の呼び出し順序はヘッダ宣言のみからは確認不可

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

- E-01: `include/mruby/value.h` - 値型定義、ボクシング関数、型判定マクロ、mrb_read_int/mrb_read_float
- E-02: `include/mruby.h` - メインAPI（mrb_open/close、クラス/モジュール/メソッド定義、シンボル、メモリ管理、文字列生成、例外、型変換、GC、引数パース、文字判定マクロ、MRB_ARGS_*マクロ、mrb_state構造体定義）
- E-03: `include/mruby/array.h` - RArray構造体、配列API（new/push/pop/set/entry/splice/shift/unshift/clear/join/resize/concat）、RARRAY_LEN/RARRAY_PTRマクロ
- E-04: `include/mruby/string.h` - RString構造体、文字列API（concat/plus/index/substr/resize/cat/equal/cmp/dup/to_integer/to_dbl）、RSTRING_LEN/RSTRING_PTR/RSTRING_CAPAマクロ
- E-05: `include/mruby/hash.h` - RHash構造体、ハッシュAPI（new/set/get/fetch/delete_key/keys/values/key_p/empty_p/size/clear/dup/merge/foreach）
- E-06: `include/mruby/class.h` - RClass構造体、mrb_class()インライン関数、mrb_method_search、mrb_class_real、mrb_define_method_raw、クラスフラグ定義
- E-07: `include/mruby/numeric.h` - オーバーフロー検出マクロ（mrb_int_add/sub/mul_overflow）、数値演算API（mrb_num_add/sub/mul）、mrb_integer_to_str、mrb_float_to_integer
- E-08: `include/mruby/data.h` - mrb_data_type構造体、mrb_data_object_alloc、mrb_data_get_ptr、mrb_data_init/DATA_PTR/DATA_TYPEマクロ
- E-09: `include/mruby/range.h` - RRange構造体、mrb_range_new、mrb_range_beg_len、mrb_range_values列挙型
- E-10: `include/mruby/gc.h` - mrb_gc構造体、mrb_object_dead_p関数、GCコールバック型定義
- E-11: `include/mruby/variable.h` - グローバル変数（mrb_gv_get/set）、インスタンス変数（mrb_iv_get/set）、クラス変数（mrb_cv_get/set）、定数（mrb_const_get/defined）
- E-12: `include/mruby/compile.h` - mrb_ccontext構造体、mrb_ccontext_new/free、mrb_load_string、mrb_parse_string、mrb_load_file
- E-13: `include/mruby/dump.h` - バイナリ変換関数（uint8/16/32_to_bin、bin_to_uint16/32）、RITE形式定数定義
- E-14: `include/mruby/error.h` - RException/RBreak構造体、mrb_exc_new_str、mrb_clear_error、mrb_check_error、mrb_protect_error
- E-15: `include/mruby/debug.h` - mrb_irep_debug_info構造体、mrb_debug_get_filename、mrb_debug_get_line
- E-16: `include/mruby/istruct.h` - mrb_istruct_size、mrb_istruct_ptr、mrb_istruct_copy関数
- E-17: `include/mruby/proc.h` - RProc/REnv構造体、mrb_proc_new_cfunc、MRB_PROC_CFUNC_Pマクロ、MRB_ASPEC_*マクロ
- E-18: `include/mruby/mempool.h` - mempool構造体typedef、mempool_open/close/alloc/realloc関数、互換マクロ
- E-19: `include/mruby/irep.h` - mrb_irep構造体、mrb_add_irep、mrb_load_irep_buf
- E-20: `include/mruby/endian.h` - littleendianインライン関数（union利用のエンディアン検出）
- E-21: `include/mruby/object.h` - RBasic/RObject/RFiber構造体、MRB_OBJECT_HEADERマクロ、mrb_frozen_p/mrb_gc_dead_pマクロ
- E-22: `include/mrbconf.h` - MRB_32BIT/64BIT、MRB_USE_FLOAT32、MRB_NAN_BOXING/WORD_BOXING、チューニングプロファイル
- E-23: `include/mruby/boxing_word.h` - ワードボクシング実装（mrb_float_value、mrb_int_value等のインライン実装）
- E-24: `include/mruby/boxing_nan.h` - NaNボクシング実装
- E-25: `include/mruby/boxing_no.h` - ボクシングなし実装
- E-26: `include/mruby/common.h` - プラットフォームマクロ（MRB_API、MRB_INLINE等）
- E-27: `include/mruby/version.h` - バージョン定数
- E-28: `include/mruby/throw.h` - 例外スロー機構（setjmp/longjmp, C++ exception, fiber使用）
- E-29: `include/mruby/opcode.h` - VMオペコード定義
- E-30: `include/mruby/khash.h` - ハッシュテーブル実装マクロ（KHASH_DECLARE/DEFINE）
- E-31: `include/mruby/re.h` - REGEXP_CLASS定数定義
- E-32: `include/mruby/internal.h` - 内部関数宣言（mrb_core_init_printabort等多数の内部API）
- E-33: `include/mruby/presym.h` - プリアロケートシンボル定義
- E-34: `include/mruby/ops.h` - オペコード定義マクロ

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

| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-001 (UT-INC-001〜004) | mrb_float_valueで浮動小数点値をmrb_valueに変換できる（正常系・境界値） | E-01, E-23 | ○ |
| C-002 (UT-INC-005〜008) | mrb_int_valueで整数値をmrb_valueに変換できる（正常系・境界値） | E-01, E-23 | ○ |
| C-003 (UT-INC-009) | mrb_fixnum_valueでFixnum値をmrb_valueに変換できる | E-01 | ○ |
| C-004 (UT-INC-010) | mrb_symbol_valueでシンボル値をmrb_valueに変換できる | E-01 | ○ |
| C-005 (UT-INC-011) | mrb_obj_valueでオブジェクトポインタをmrb_valueに変換できる | E-01 | ○ |
| C-006 (UT-INC-012〜014) | mrb_nil_value/mrb_false_value/mrb_true_valueで特殊値を生成できる | E-01 | ○ |
| C-007 (UT-INC-015〜016) | mrb_bool_valueでブール値をmrb_valueに変換できる | E-01 | ○ |
| C-008 (UT-INC-017) | mrb_undef_valueでundef値を取得できる | E-01 | ○ |
| C-009 (UT-INC-018〜019) | mrb_cptr_valueでCポインタ/NULLをmrb_valueに変換できる | E-01 | ○ |
| C-010 (UT-INC-020〜025) | 型判定マクロ（mrb_nil_p, mrb_integer_p, mrb_string_p, mrb_array_p, mrb_hash_p）が正しく判定する | E-01 | ○ |
| C-011 (UT-INC-026〜028) | mrb_read_intで文字列から整数を解析できる（正常系・異常系） | E-01 | ○ |
| C-012 (UT-INC-029〜030) | mrb_open/mrb_open_coreでmrubyステートを初期化できる | E-02 | ○ |
| C-013 (UT-INC-031) | mrb_closeでmrubyステートを解放できる | E-02 | ○ |
| C-014 (UT-INC-032〜033) | MRB_OPEN_FAILUREマクロで初期化の成否を判定できる | E-02 | ○ |
| C-015 (UT-INC-034〜035) | mrb_define_classで新しいクラスを定義できる（正常系・異常系） | E-02 | ○ |
| C-016 (UT-INC-036) | mrb_define_moduleで新しいモジュールを定義できる | E-02 | ○ |
| C-017 (UT-INC-037〜039) | mrb_define_method/mrb_define_class_method/mrb_define_module_functionでメソッドを定義できる | E-02 | ○ |
| C-018 (UT-INC-040) | mrb_define_constで定数を定義できる | E-02 | ○ |
| C-019 (UT-INC-041〜042) | mrb_class_definedでクラスの存在を確認できる | E-02 | ○ |
| C-020 (UT-INC-043〜044) | mrb_class_getでクラスを取得できる（正常系・異常系） | E-02 | ○ |
| C-021 (UT-INC-045) | mrb_include_moduleでモジュールをインクルードできる | E-02 | ○ |
| C-022 (UT-INC-046〜047) | mrb_obj_new/mrb_class_new_instanceでオブジェクトインスタンスを生成できる | E-02 | ○ |
| C-023 (UT-INC-048〜049) | mrb_obj_respond_toでメソッド応答を確認できる | E-02 | ○ |
| C-024 (UT-INC-050〜052) | mrb_funcall/mrb_funcall_argvでメソッドを呼び出せる | E-02 | ○ |
| C-025 (UT-INC-053〜055) | mrb_intern_cstr/mrb_intern/mrb_intern_staticでシンボルをインターンできる | E-02 | ○ |
| C-026 (UT-INC-056〜057) | mrb_sym_nameでシンボルから名前文字列を取得できる（正常系・異常系） | E-02 | ○ |
| C-027 (UT-INC-058〜061) | mrb_get_args/mrb_get_argcで引数をパースできる | E-02 | ○ |
| C-028 (UT-INC-062〜066) | mrb_malloc/calloc/realloc/freeでメモリ管理できる | E-02 | ○ |
| C-029 (UT-INC-067〜069) | mrb_str_new/mrb_str_new_cstrで文字列を生成できる | E-02 | ○ |
| C-030 (UT-INC-070〜072) | mrb_obj_eq/mrb_equalでオブジェクト比較できる | E-02 | ○ |
| C-031 (UT-INC-073〜074) | mrb_obj_dup/mrb_obj_freezeでオブジェクト操作できる | E-02 | ○ |
| C-032 (UT-INC-075〜076) | mrb_raise/mrb_exc_newで例外を発生・生成できる | E-02 | ○ |
| C-033 (UT-INC-077〜083) | mrb_type_convert/mrb_ensure_*_type/mrb_check_typeで型変換・チェックできる | E-02 | ○ |
| C-034 (UT-INC-084〜086) | mrb_obj_class/mrb_obj_is_kind_ofでクラス関係を確認できる | E-02 | ○ |
| C-035 (UT-INC-087〜090) | MRB_ARGS_*マクロでaspecを正しく生成できる | E-02 | ○ |
| C-036 (UT-INC-091〜095) | mrb_ary_new系関数で配列を生成できる | E-03 | ○ |
| C-037 (UT-INC-096〜098) | mrb_ary_push/mrb_ary_popで配列に要素を追加・取り出しできる | E-03 | ○ |
| C-038 (UT-INC-099〜101) | mrb_ary_entryでインデックスアクセスできる（正・負・範囲外） | E-03 | ○ |
| C-039 (UT-INC-102〜109) | mrb_ary_set/concat/shift/unshift/clear/join/resizeで配列操作できる | E-03 | ○ |
| C-040 (UT-INC-109) | RARRAY_LENマクロで配列長を取得できる | E-03 | ○ |
| C-041 (UT-INC-110〜111) | mrb_str_concat/mrb_str_plusで文字列連結できる | E-04 | ○ |
| C-042 (UT-INC-112〜113) | mrb_str_indexで部分文字列検索できる（一致・不一致） | E-04 | ○ |
| C-043 (UT-INC-114〜115) | mrb_str_substrで部分文字列を取得できる（正常・範囲外） | E-04 | ○ |
| C-044 (UT-INC-116〜117) | mrb_str_resize/mrb_str_catで文字列操作できる | E-04 | ○ |
| C-045 (UT-INC-118〜121) | mrb_str_equal/mrb_str_cmp/mrb_str_dupで文字列比較・複製できる | E-04 | ○ |
| C-046 (UT-INC-122〜123) | RSTRING_LEN/RSTRING_PTRマクロで文字列情報を取得できる | E-04 | ○ |
| C-047 (UT-INC-124) | mrb_hash_newでハッシュを生成できる | E-05 | ○ |
| C-048 (UT-INC-125〜127) | mrb_hash_set/mrb_hash_getでハッシュ要素を設定・取得できる | E-05 | ○ |
| C-049 (UT-INC-128〜139) | mrb_hash_fetch/delete_key/key_p/empty_p/size/keys/values/clear/dup/mergeでハッシュ操作できる | E-05 | ○ |
| C-050 (UT-INC-140〜144) | mrb_classインライン関数で即値のクラスを取得できる（Integer/nil/true/false/Symbol） | E-06 | ○ |
| C-051 (UT-INC-145〜147) | mrb_method_search/mrb_class_real/mrb_define_method_rawでクラス操作できる | E-06 | ○ |
| C-052 (UT-INC-148〜153) | mrb_int_add/sub/mul_overflowでオーバーフロー検出できる | E-07 | ○ |
| C-053 (UT-INC-154〜156) | mrb_num_add/sub/mulで数値演算できる | E-07 | ○ |
| C-054 (UT-INC-157〜158) | mrb_integer_to_strで整数を文字列変換できる（10進・16進） | E-07 | ○ |
| C-055 (UT-INC-159〜162) | mrb_data_object_alloc/mrb_data_get_ptr/mrb_data_initでカスタムデータ操作できる | E-08 | ○ |
| C-056 (UT-INC-163〜166) | mrb_range_new/mrb_range_beg_lenで範囲操作できる | E-09 | ○ |
| C-057 (UT-INC-167) | mrb_object_dead_pでオブジェクト生存確認できる | E-10 | ○ |
| C-058 (UT-INC-168〜171) | mrb_garbage_collect/mrb_gc_protect/mrb_gc_register/mrb_gc_unregisterでGC操作できる | E-02, E-10 | ○ |
| C-059 (UT-INC-172〜179) | mrb_gv_get/set、mrb_iv_get/set、mrb_const_get/defined、mrb_cv_getで変数操作できる | E-11 | ○ |
| C-060 (UT-INC-180〜184) | mrb_ccontext_new/free、mrb_load_string、mrb_parse_stringでコンパイラ操作できる | E-12 | ○ |
| C-061 (UT-INC-185〜191) | uint8/16/32_to_bin、bin_to_uint16/32でバイナリ変換できる | E-13 | ○ |
| C-062 (UT-INC-192〜196) | mrb_exc_new_str/mrb_clear_error/mrb_check_error/mrb_protect_errorでエラーハンドリングできる | E-14 | ○ |
| C-063 (UT-INC-197〜200) | mrb_debug_get_filename/mrb_debug_get_lineでデバッグ情報を取得できる | E-15 | ○ |
| C-064 (UT-INC-201〜203) | mrb_istruct_size/ptr/copyでインライン構造体操作できる | E-16 | ○ |
| C-065 (UT-INC-204〜208) | mrb_proc_new_cfunc/MRB_PROC_CFUNC_P/MRB_ASPEC_*でProc操作できる | E-17 | ○ |
| C-066 (UT-INC-209〜211) | mempool_open/alloc/closeでメモリプール操作できる | E-18 | ○ |
| C-067 (UT-INC-212〜214) | mrb_add_irep/mrb_load_irep_bufでirep操作できる | E-19 | △ |
| C-068 (UT-INC-215) | mrb_yieldでブロック実行できる | E-02 | ○ |
| C-069 (UT-INC-216〜217) | mrb_obj_id/mrb_obj_to_symでオブジェクト操作できる | E-02 | ○ |
| C-070 (UT-INC-218〜219) | mrb_respond_toでメソッド応答を確認できる | E-02 | ○ |
| C-071 (UT-INC-220〜221) | mrb_define_alias/mrb_undef_methodでメソッド定義操作できる | E-02 | ○ |
| C-072 (UT-INC-222〜223) | mrb_define_class_under/mrb_class_defined_underでネストクラス操作できる | E-02 | ○ |
| C-073 (UT-INC-224) | mrb_singleton_classで特異クラスを取得できる | E-02 | ○ |
| C-074 (UT-INC-225〜228) | mrb_inspect/mrb_cmpでオブジェクト表示・比較できる | E-02 | ○ |
| C-075 (UT-INC-229〜230) | mrb_check_frozenで凍結チェックできる | E-02 | ○ |
| C-076 (UT-INC-231〜235) | ISDIGIT/ISALPHA/TOUPPER/TOLOWER文字判定マクロが正しく動作する | E-02 | ○ |
| C-077 (UT-INC-236) | エンディアン検出関数が正しく動作する | E-20 | ○ |
| C-078 (UT-INC-237〜238) | mrb_frozen_pマクロで凍結状態を確認できる | E-21 | ○ |
| C-079 (UT-INC-239) | mrb_state_atexitでatexit関数を登録できる | E-02 | △ |
| C-080 (UT-INC-240) | mrb_top_selfでトップレベルselfを取得できる | E-02 | ○ |

## 4) 不足情報（Unknown / Missing）

- **UT-INC-214（mrb_load_irep_buf 異常系）**: ヘッダファイル（irep.h）にはmrb_load_irep_bufの関数宣言のみで、不正バイナリデータが渡された場合の具体的なエラーハンドリング（例外の種類、戻り値の状態等）はソースコード（src/load.c）を確認しないと特定できない。
  - 候補：`src/load.c` / `src/state.c` / mrubyテストスイート

- **UT-INC-239（mrb_state_atexit コールバック呼び出し確認）**: ヘッダファイルにはmrb_state_atexitの関数宣言（mrb_atexit_func型の関数ポインタを受け取る）があるが、mrb_close時の呼び出し順序や複数登録時の挙動はソースコード実装を確認する必要がある。
  - 候補：`src/state.c` / `src/gc.c` / mrubyテストスイート

## 5) リスクフラグ（レビュー観点）

- **リスク0（低）**: 全240テストケースのうち238件はヘッダファイルの関数宣言・マクロ定義・インライン関数定義に直接根拠がある。テスト対象のAPI名、引数型、戻り値型はすべてヘッダファイルから確認可能。

- **リスク1（中）**: 以下の点についてはヘッダ宣言からの推測を含む
  - 異常系の一部テストケース（例外の種類がヘッダ宣言のみでは特定困難な場合がある）。具体的には、mrb_class_get（UT-INC-044）やmrb_check_type（UT-INC-083）の例外種別は、ヘッダのE_*マクロ定義から推測している。
  - mrb_get_argsのフォーマット文字列仕様はヘッダファイル内のコメントに記載があるが、全パターンの網羅的テストは行っていない。

- **リスク0（低）**: ボクシング関数（mrb_float_value等）のテストケースは、boxing_word.h / boxing_nan.h / boxing_no.h の3種類のボクシング実装すべてを確認した上で、共通のインターフェースに対するテストとして設計している。

## 6) レビュアーチェックリスト（最小）

- [ ] 各テストケースのテストIDが連番で重複がないか確認（UT-INC-001〜UT-INC-240）
- [ ] 対象ファイルパスが実在するヘッダファイルと一致するか確認
- [ ] 正常系・異常系・境界値のテスト観点が各主要API関数に対して網羅されているか確認
- [ ] mrb_open/mrb_close等のVM ライフサイクル関連テストが十分か確認
- [ ] mrb_get_argsの各フォーマット指定子（"i", "s", "o", "S", "A", "H", "z", "f", "b"等）のテストケースが必要に応じて追加されるべきか検討
- [ ] ボクシング方式（NaN/Word/No boxing）別のテストケースの要否を検討
- [ ] internal.h内の内部関数（mrb_core_init_printabort等）を単体テスト対象とするか方針確認
- [ ] khash.h（マクロベースのハッシュテーブル実装）の展開後コードに対するテストケースの要否を検討
- [ ] 期待結果の具体的な値（特に例外種別）がソースコード実装と一致するか確認
- [ ] 優先度「高」のテストケースが実装優先度として妥当か確認
