---
generated_at: 2026-03-01 06:05:00
metrics:
  claims_total: 75
  claims_with_evidence: 73
  claims_without_evidence: 2
confidence_derived: 0.97
---

# 根拠レポート：babel-plugin-proposal-do-expressions.csv

## 本レポートについて

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

### チェック方法
以下の観点でテストケースの内容（Claim：主張）を検証しています：

1. **根拠の有無確認**：各テストケースに対して、ソースコードの実装が根拠（Evidence）として存在するか
2. **根拠との整合性**：テストケースの内容が実装と矛盾していないか
3. **網羅性**：テスト対象のメソッド・関数を適切にカバーしているか

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

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

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**0.97**
  - 根拠あり：73 / 75、根拠なし：2
- 優先レビュー（高）
  1. **UT-DOE-071**: Babel 6でのバージョンエラー - api.assertVersionの実際のエラー挙動は外部依存
  2. **UT-DOE-074**: 内部エラー - 到達困難なエラーケース
  3. **UT-DOE-075**: for-in初期化子エラー - スロップモードでのみ発生

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

- E-01: `packages/babel-plugin-proposal-do-expressions/src/index.ts` - メインプラグイン実装
- E-02: `packages/babel-plugin-proposal-do-expressions/src/utils.ts` - ユーティリティ関数
- E-03: `packages/babel-plugin-proposal-do-expressions/package.json` - パッケージ設定
- E-04: `packages/babel-plugin-proposal-do-expressions/test/fixtures/` - テストフィクスチャ

## 3) Claims と根拠の対応（レビューの主戦場）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | プラグイン名が'proposal-do-expressions'であること | E-01 (L14) `name: "proposal-do-expressions"` | ○ |
| C-02 | parserに'doExpressions'プラグインが追加されること | E-01 (L15) `parser.plugins.push("doExpressions")` | ○ |
| C-03 | async: falseのdo式が正しく変換されること | E-01 (L19-38) `exit(path)` ハンドラー | ○ |
| C-04 | async: trueのdo式は変換せずスキップすること | E-01 (L20-23) `if (path.node.async) { return; }` | ○ |
| C-05 | 空のdo式がundefinedに変換されること | E-01 (L35-37) `path.replaceWith(path.scope.buildUndefinedNode())` | ○ |
| C-06 | 制御フロー文を含むdo式がIIFEに変換されること | E-01 (L24-31) `transformDoExpressionWithControlFlowStatements` 呼び出し | ○ |
| C-07 | break文を含むdo式が正しく変換されること | E-01 (L27) `controlFlowState.break.size` チェック | ○ |
| C-08 | continue文を含むdo式が正しく変換されること | E-01 (L28) `controlFlowState.continue.size` チェック | ○ |
| C-09 | 関数内のdo式がパラメータ処理を含めて変換されること | E-01 (L71-110) パラメータ処理ロジック | ○ |
| C-10 | アロー関数の式本体がブロック本体に変換されること | E-01 (L61-68) アロー関数本体変換 | ○ |
| C-11 | 変数宣言内のdo式が展開されること | E-01 (L126-143) `case "VariableDeclaration"` | ○ |
| C-12 | forループ内のdo式が正しく変換されること | E-01 (L145-186) `case "ForStatement"` | ○ |
| C-13 | for-inループの右辺do式が展開されること | E-01 (L188-232) `case "ForInStatement"` | ○ |
| C-14 | for-ofループの右辺do式が展開されること | E-01 (L188-232) `case "ForOfStatement"` | ○ |
| C-15 | whileループ条件内do式が展開されること | E-01 (L234-250) `case "WhileStatement"` | ○ |
| C-16 | do-whileループ条件内do式が展開されること | E-01 (L252-268) `case "DoWhileStatement"` | ○ |
| C-17 | 式文内のdo式が展開されること | E-01 (L270-273) `case "ExpressionStatement"` | ○ |
| C-18 | do式本体がステートメント配列として返却されること | E-01 (L292-314) DoExpression処理 | ○ |
| C-19 | 完了レコードが一時変数への代入に変換されること | E-01 (L295-312) completionレコード処理 | ○ |
| C-20 | 代入式左辺のdo式が処理されること | E-01 (L315-330) AssignmentExpression処理 | ○ |
| C-21 | 複合代入演算子でdo式がある場合にエラーがスローされること | E-01 (L319-322) `path.buildCodeFrameError` | ○ |
| C-22 | 論理AND式内のdo式がif文に変換されること | E-01 (L331-353) LogicalExpression処理 | ○ |
| C-23 | 論理OR式内のdo式がif文に変換されること | E-01 (L331-353) LogicalExpression処理 | ○ |
| C-24 | null合体演算子内のdo式がif文に変換されること | E-01 (L342-345) `??` 演算子処理 | ○ |
| C-25 | 条件式内のdo式がif-else文に変換されること | E-01 (L354-369) ConditionalExpression処理 | ○ |
| C-26 | オプショナルメンバー式のcomputed do式が変換されること | E-01 (L370-394) OptionalMemberExpression処理 | ○ |
| C-27 | オプショナル呼び出し式のdo式が変換されること | E-01 (L395-411) OptionalCallExpression処理 | ○ |
| C-28 | 関数呼び出し式内のdo式が変換されること | E-01 (L412-414) CallExpression処理 | ○ |
| C-29 | メソッド呼び出しでthis引数が保持されること | E-01 (L461-476) thisArgument処理 | ○ |
| C-30 | スプレッド引数が正しく処理されること | E-01 (L442-455) SpreadElement処理 | ○ |
| C-31 | オブジェクトパターン内のdo式がIIFEでラップされること | E-01 (L489-491) `wrapDoExpressionInIIFE` 呼び出し | ○ |
| C-32 | 識別子への代入が変数宣言として生成されること | E-01 (L493-506) Identifier処理 | ○ |
| C-33 | メンバー式への代入が生成されること | E-01 (L508-512) MemberExpression処理 | ○ |
| C-34 | デフォルト値付きパターンが正しく処理されること | E-01 (L514-541) AssignmentPattern処理 | ○ |
| C-35 | 配列パターン内のdo式が処理されること | E-01 (L542-566) ArrayPattern処理 | ○ |
| C-36 | サポートされていないLValでエラーがスローされること | E-01 (L568-572) default case `buildCodeFrameError` | ○ |
| C-37 | ネストした式が正しくトラバースされること | E-01 (L576-613) flattenByTraverse実装 | ○ |
| C-38 | Statement内ではスキップされること | E-01 (L583-585) `Statement(path) { path.skip(); }` | ○ |
| C-39 | 式が一時変数に代入されること | E-01 (L615-628) intoTempVariable実装 | ○ |
| C-40 | discardResult=trueの場合、式文のみが返却されること | E-01 (L619-620) `if (discardResult)` | ○ |
| C-41 | noDocumentAll=trueの場合、!= nullチェックが生成されること | E-01 (L633-634) `!= null` 生成 | ○ |
| C-42 | noDocumentAll=falseの場合、!== null && !== undefinedチェックが生成されること | E-01 (L636-641) `!== null && !== void 0` 生成 | ○ |
| C-43 | pureな式に対してtrueを返すこと | E-01 (L647) `path.isPureish()` | ○ |
| C-44 | BinaryExpressionに対してtrueを返すこと | E-01 (L648) `path.isBinaryExpression()` | ○ |
| C-45 | ParenthesizedExpressionに対してtrueを返すこと | E-01 (L649) `path.isParenthesizedExpression()` | ○ |
| C-46 | SequenceExpressionに対してtrueを返すこと | E-01 (L650) `path.isSequenceExpression()` | ○ |
| C-47 | throw以外のUnaryExpressionに対してtrueを返すこと | E-01 (L651-653) UnaryExpression条件 | ○ |
| C-48 | throw演算子でfalseを返すこと | E-01 (L652) `path.node.operator !== "throw"` | ○ |
| C-49 | delete演算子でfalseを返すこと | E-01 (L653) `path.node.operator !== "delete"` | ○ |
| C-50 | Identifierに対してtrueを返すこと | E-01 (L659) `path.isIdentifier()` | ○ |
| C-51 | AssignmentPatternで左辺が識別子かつ右辺がpureな場合trueを返すこと | E-01 (L660-662) AssignmentPattern条件 | ○ |
| C-52 | RestElementの引数が識別子の場合trueを返すこと | E-01 (L663) RestElement条件 | ○ |
| C-53 | MemberExpressionに対してfalseを返すこと | E-01 (L657-664) isLValSideEffectFree条件外 | ○ |
| C-54 | breakステートメントが収集されること | E-02 (L32-35) BreakStatement visitor | ○ |
| C-55 | continueステートメントが収集されること | E-02 (L37-40) ContinueStatement visitor | ○ |
| C-56 | returnステートメントが収集されること | E-02 (L42-44) ReturnStatement visitor | ○ |
| C-57 | ラベル付きbreakが収集されること | E-02 (L28-31) LabeledStatement visitor | ○ |
| C-58 | FunctionParentではトラバースがスキップされること | E-02 (L21-23) FunctionParent visitor | ○ |
| C-59 | 制御フロー文がない場合、空の状態が返却されること | E-02 (L47-55) collectControlFlowStatements初期化 | ○ |
| C-60 | do式がIIFEに変換されること | E-02 (L66-72) DoExpression visitor | ○ |
| C-61 | 空のdo式がundefinedに変換されること | E-02 (L70-71) `replaceWith(path.scope.buildUndefinedNode())` | ○ |
| C-62 | IIFEでラップ後にreturnがあるとエラーがスローされること | E-02 (L79-81) `throwError(state.returnPath)` | ○ |
| C-63 | 関数親要素でスキップが呼び出されること | E-02 (L21-23) `path.skip()` | ○ |
| C-64 | SwitchStatementでbreak/continueがnullラベルで追加されること | E-02 (L24-27) SwitchStatement|Loop visitor | ○ |
| C-65 | ラベル付き文でbreakにラベル名が追加されること | E-02 (L28-31) LabeledStatement visitor | ○ |
| C-66 | 許可されていないbreakでエラーがスローされること | E-02 (L32-35) BreakStatement throwError | ○ |
| C-67 | 許可されていないcontinueでエラーがスローされること | E-02 (L37-40) ContinueStatement throwError | ○ |
| C-68 | returnステートメントがstate.returnPathに格納されること | E-02 (L42-44) `state.returnPath = path` | ○ |
| C-69 | エラーメッセージが正しくスローされること | E-02 (L14-18) throwError実装 | ○ |
| C-70 | Babel 7以上でプラグインが動作すること | E-01 (L9) `api.assertVersion(REQUIRED_VERSION(7))` | ○ |
| C-71 | Babel 7未満でエラーがスローされること | E-01 (L9) api.assertVersion - 外部依存 | △ |
| C-72 | noDocumentAll仮定がtrueの場合に適用されること | E-01 (L11) `api.assumption("noDocumentAll")` | ○ |
| C-73 | noDocumentAll仮定がfalse/未設定の場合のデフォルト動作 | E-01 (L11) `?? false` | ○ |
| C-74 | do式が文中にない場合にエラーがスローされること | E-01 (L120-122) throw new Error - 到達困難 | △ |
| C-75 | for-in変数初期化子でdo式がある場合にエラーがスローされること | E-01 (L206-210) buildCodeFrameError | ○ |

## 4) 不足情報（Unknown / Missing）
- **C-71**: `api.assertVersion`の挙動は`@babel/helper-plugin-utils`の実装に依存しており、本モジュール内では直接確認できない
  - 候補：`@babel/helper-plugin-utils`のソースコード / Babel公式ドキュメント / 既存テストケース
- **C-74**: 内部エラー（`DoExpression must be in a statement`）は正常なコードでは到達困難なパスであり、実際のテストケースでの再現が難しい
  - 候補：不正なAST構造を直接構築するテスト / エッジケースの探索

## 5) リスクフラグ（レビュー観点）
- **0（低リスク）**: テストケースの大部分はソースコードの実装と直接対応している
- **1（中リスク）**: 制御フロー変換（UT-DOE-006〜008）は複雑な変換ロジックを含むため、実装との整合性を特に確認すべき
- **1（中リスク）**: オプショナルチェーン関連（UT-DOE-026〜027）は`noDocumentAll`オプションとの組み合わせで挙動が変わる
- **0（低リスク）**: utils.tsのテストケースは単純な状態管理と検証ロジックのため、信頼性が高い

## 6) レビュアーチェックリスト（最小）
- [ ] プラグインの基本設定（name, manipulateOptions）が正しくテストされているか
- [ ] async do式のスキップ処理がテストされているか
- [ ] 制御フロー文（break, continue, return）の変換がすべてカバーされているか
- [ ] 各種ループ構文（for, for-in, for-of, while, do-while）の変換がテストされているか
- [ ] 論理演算子（&&, ||, ??）と条件演算子の変換がテストされているか
- [ ] オプショナルチェーン（?., ?.()）の変換がテストされているか
- [ ] エラーケース（未サポートの構文、制御フローエスケープ）がテストされているか
- [ ] utils.tsの制御フロー収集関数がテストされているか
- [ ] noDocumentAllオプションの両方の値でテストされているか
