---
generated_at: 2026-02-22 10:35:00
metrics:
  claims_total: 18
  claims_with_evidence: 17
  claims_without_evidence: 1
confidence_derived: 0.94
---

# 根拠レポート：17-mruby-strip出力

## 本レポートについて

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

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

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

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

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

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**0.94**
  - 根拠あり：17 / 18、根拠なし：1
- 優先レビュー（高）
  1. **mrb_dump_irep内部のセクション選択ロジック**：flags=0時にDBGセクションが除去される具体的なロジックの確認が必要

## 2) 参照した情報（Evidence一覧）

- E-01: `mrbgems/mruby-bin-strip/tools/mruby-strip/mruby_strip.c` - mruby-stripコマンド全体の実装
- E-02: `include/mruby/dump.h` - RiteBinaryフォーマット定義、MRB_DUMP_*定数
- E-03: `src/dump.c` - mrb_dump_irep_binary関数(行913-932)
- E-04: `mrbgems/mruby-bin-strip/mrbgem.rake` - gem仕様定義
- E-05: `mrbgems/mruby-bin-strip/bintest/mruby_strip.rb` - 統合テスト

## 3) Claims と根拠の対応（レビューの主戦場）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | mruby-stripは入力ファイルを上書きする | E-01(行89: fopen(filename, "wb")) | ○ |
| C-02 | mrb_read_irep_fileでIREPを読み込む | E-01(行82) | ○ |
| C-03 | mrb_dump_irep_binaryで再出力する | E-01(行97) | ○ |
| C-04 | -l/--lvarオプションでMRB_DUMP_NO_LVARが設定される | E-01(行43-44, 47-48) | ○ |
| C-05 | MRB_DUMP_NO_LVAR = 4 | E-02(行22) | ○ |
| C-06 | MRB_DUMP_DEBUG_INFO = 1 | E-02(行20) | ○ |
| C-07 | parse_argsがオプションを解析する | E-01(行29-61) | ○ |
| C-08 | print_usageがUsageメッセージを表示する | E-01(行21-26) | ○ |
| C-09 | 引数なしの場合"no files to strip"を表示 | E-01(行119), E-05(行4-7) | ○ |
| C-10 | ファイル読み込み失敗時に"can't open file for reading"を表示 | E-01(行78), E-05(行10-13) | ○ |
| C-11 | IREP読み込み失敗時に"can't read irep file"を表示 | E-01(行85), E-05(行16-22) | ○ |
| C-12 | mrb_open_coreで最小限の環境を初期化 | E-01(行129) | ○ |
| C-13 | RiteBinaryのバイナリ識別子は"RITE" | E-02(行51) | ○ |
| C-14 | RiteBinaryのメジャーバージョンは"04" | E-02(行55) | ○ |
| C-15 | DBGセクション識別子は"DBG\0" | E-02(行65) | ○ |
| C-16 | LVARセクション識別子は"LVAR" | E-02(行66) | ○ |
| C-17 | mrb_dump_irep_binaryはmrb_dump_irepを呼びfwriteで出力 | E-03(行923-925) | ○ |
| C-18 | flags=0時にDBGセクションが除去されるロジック | **根拠なし** | △ |

## 4) 不足情報（Unknown / Missing）
- C-18: mrb_dump_irep(内部関数)がflagsパラメータに基づいてどのセクションを出力するかの具体的なロジックが未確認。flags=0(MRB_DUMP_DEBUG_INFO未設定)の場合にDBGセクションがスキップされる仕組みはdump.c内のmrb_dump_irep関数の実装詳細による
  - 候補：src/dump.c内のmrb_dump_irep関数の完全な実装コード確認

## 5) リスクフラグ（レビュー観点）
- 0: 低リスク - mruby-strip.cのコマンドライン処理(明確にコードで確認可能)
- 1: 中リスク - mrb_dump_irep内部のセクション選択ロジック
- 0: 低リスク - エラーハンドリング(テストコードでも検証済み)
- 0: 低リスク - RiteBinaryフォーマットのヘッダ定義(dump.hで明確)

## 6) レビュアーチェックリスト（最小）
- [ ] mrb_dump_irep関数内でMRB_DUMP_DEBUG_INFOフラグがDBGセクション出力を制御するロジックを確認
- [ ] parse_args関数の行46でargv[0]ではなく*argv(=argv[0])が使用されているバグの有無を確認
- [ ] 入力ファイルの上書き処理(読み込み→クローズ→書き込み用再オープン)が安全であることを確認
- [ ] mrb_irep_decrefによるメモリ解放が適切に行われていることを確認
