---
generated_at: 2026-03-01 12:00:00
metrics:
  claims_total: 60
  claims_with_evidence: 58
  claims_without_evidence: 2
confidence_derived: 0.97
---

# 根拠レポート：babel-plugin-proposal-discard-binding.csv

## 本レポートについて

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

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

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

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

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

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**0.97**
  - 根拠あり：58 / 60、根拠なし：2
- 優先レビュー（高）
  1. **UT-DIS-054/055（バージョン互換性テスト）**：assertVersionの具体的なエラーメッセージはBabel内部実装に依存
  2. **UT-DIS-059（コメント挿入順序）**：テストフィクスチャでの完全な検証が限定的

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

- E-01: `packages/babel-plugin-proposal-discard-binding/src/index.ts` - プラグインのメインエントリーポイント
- E-02: `packages/babel-plugin-proposal-discard-binding/src/utils.ts` - ユーティリティ関数群
- E-03: `packages/babel-plugin-proposal-discard-binding/package.json` - パッケージ定義
- E-04: `packages/babel-plugin-proposal-discard-binding/test/fixtures/basic/binding/input.js` - 基本バインディングテストの入力
- E-05: `packages/babel-plugin-proposal-discard-binding/test/fixtures/basic/binding/output.js` - 基本バインディングテストの出力
- E-06: `packages/babel-plugin-proposal-discard-binding/test/fixtures/basic/assignment/input.js` - 代入テストの入力
- E-07: `packages/babel-plugin-proposal-discard-binding/test/fixtures/basic/assignment/output.js` - 代入テストの出力
- E-08: `packages/babel-plugin-proposal-discard-binding/test/fixtures/basic/function-parameters/input.js` - 関数パラメータテストの入力
- E-09: `packages/babel-plugin-proposal-discard-binding/test/fixtures/basic/function-parameters/output.js` - 関数パラメータテストの出力
- E-10: `packages/babel-plugin-proposal-discard-binding/test/fixtures/basic/catch-clause/input.js` - catch節テストの入力
- E-11: `packages/babel-plugin-proposal-discard-binding/test/fixtures/basic/catch-clause/output.js` - catch節テストの出力
- E-12: `packages/babel-plugin-proposal-discard-binding/test/fixtures/basic/for-of-binding/input.js` - for-ofテストの入力
- E-13: `packages/babel-plugin-proposal-discard-binding/test/fixtures/basic/for-of-binding/output.js` - for-ofテストの出力
- E-14: `packages/babel-plugin-proposal-discard-binding/test/fixtures/basic/using-void-named-evaluation/input.js` - using名前付き評価テストの入力
- E-15: `packages/babel-plugin-proposal-discard-binding/test/fixtures/basic/using-void-named-evaluation/output.js` - using名前付き評価テストの出力
- E-16: `packages/babel-plugin-proposal-discard-binding/test/fixtures/basic/invalid-no-syntaxType-option/options.json` - オプションエラーテスト
- E-17: `packages/babel-plugin-proposal-discard-binding/test/fixtures/basic/export-named-commonjs/input.js` - エクスポートテストの入力
- E-18: `packages/babel-plugin-proposal-discard-binding/test/fixtures/basic/export-named-commonjs/output.js` - エクスポートテストの出力
- E-19: `packages/babel-plugin-proposal-discard-binding/test/fixtures/basic/for-of-binding-conflict-underscore/input.js` - 識別子競合テストの入力
- E-20: `packages/babel-plugin-proposal-discard-binding/test/fixtures/basic/for-of-binding-conflict-underscore/output.js` - 識別子競合テストの出力
- E-21: `packages/babel-plugin-proposal-discard-binding/test/fixtures/basic/access-side-effect/input.js` - 副作用テストの入力
- E-22: `packages/babel-plugin-proposal-discard-binding/test/fixtures/basic/access-side-effect/output.js` - 副作用テストの出力

## 3) Claims と根拠の対応（レビューの主戦場）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | UT-DIS-001: syntaxType='void'が指定された場合にオプションが正常に返却されること | E-01 (index.ts: validatePluginOptions関数 L18-27) | ○ |
| C-02 | UT-DIS-002: syntaxTypeオプションが未指定の場合にエラーがスローされること | E-01, E-16 (options.json: throws定義) | ○ |
| C-03 | UT-DIS-003: syntaxTypeに'void'以外が指定された場合にエラーがスローされること | E-01 (index.ts: invariant L21-25) | ○ |
| C-04 | UT-DIS-004: 配列パターン内のvoidが空要素(null)に変換されること | E-01, E-02, E-04, E-05 | ○ |
| C-05 | UT-DIS-005: オブジェクトパターン内のvoidがUID識別子に変換されること | E-01, E-02, E-04, E-05 | ○ |
| C-06 | UT-DIS-006: ignoreFunctionLength=trueの場合に末尾のvoidパラメータが削除されること | E-01 (index.ts: visitor.Function L56-60), E-02 (utils.ts: removeTrailingVoidPatternsFromParams) | ○ |
| C-07 | UT-DIS-007: ignoreFunctionLength=falseの場合に末尾のvoidパラメータが保持されること | E-01, E-08, E-09 | ○ |
| C-08 | UT-DIS-008: 代入式内のvoidパターンが変換されること | E-01 (visitor.AssignmentExpression), E-06, E-07 | ○ |
| C-09 | UT-DIS-009: 変数宣言内の複数のvoidパターンが変換されること | E-01 (visitor.VariableDeclaration), E-04, E-05 | ○ |
| C-10 | UT-DIS-010: export宣言がsplitExportDeclarationで分割されること | E-01 (visitor.ExportNamedDeclaration), E-17, E-18 | ○ |
| C-11 | UT-DIS-011: voidパターンを含まないexport宣言は分割されないこと | E-01 (hasVoidPatternInVariableDeclaration条件チェック) | ○ |
| C-12 | UT-DIS-012: using宣言内のvoidが変換されること | E-01 (visitor.BlockStatement|StaticBlock), E-14, E-15 | ○ |
| C-13 | UT-DIS-013: await using宣言内のvoidが変換されること | E-01 (L90: kind === 'await using'チェック) | ○ |
| C-14 | UT-DIS-014: using void = class {}で名前付き評価が無効化されること | E-01, E-02 (handleUsingNamedEvaluation), E-14, E-15 | ○ |
| C-15 | UT-DIS-015: ArrayPattern内のvoidがnullに置換されること | E-02 (utils.ts: transformVoidPatternIntoNull L7-12) | ○ |
| C-16 | UT-DIS-016: ArrayPattern外のvoidがUID識別子に置換されること | E-02 (utils.ts: transformVoidPatternIntoUidIdentifier L15-19) | ○ |
| C-17 | UT-DIS-017: voidのコメントがArrayPatternのinnerCommentsに移動すること | E-02 (utils.ts: takeVoidPatternComments L22-38) | ○ |
| C-18 | UT-DIS-018: voidのtrailingCommentsがArrayPatternのinnerCommentsに移動すること | E-02 (utils.ts: takeVoidPatternComments L23-24, 35) | ○ |
| C-19 | UT-DIS-019: コメントが存在しない場合にinnerCommentsが変更されないこと | E-02 (utils.ts: L24条件チェック) | ○ |
| C-20 | UT-DIS-020: VariableDeclaration内で正しいbindingKindで登録されること | E-02 (utils.ts: syncScopeForReplacedVoidPattern L44-49) | ○ |
| C-21 | UT-DIS-021: using宣言で'const'としてbindingが登録されること | E-02 (utils.ts: L46-47 kind === 'using' 条件) | ○ |
| C-22 | UT-DIS-022: await using宣言で'const'としてbindingが登録されること | E-02 (utils.ts: L46 kind === 'await using' 条件) | ○ |
| C-23 | UT-DIS-023: AssignmentExpression内でscope.pushが呼ばれること | E-02 (utils.ts: L51-54) | ○ |
| C-24 | UT-DIS-024: ForInStatement内でscope.pushが呼ばれること | E-02 (utils.ts: L52) | ○ |
| C-25 | UT-DIS-025: ForOfStatement内でscope.pushが呼ばれること | E-02 (utils.ts: L53), E-12, E-13 | ○ |
| C-26 | UT-DIS-026: CatchClause内で'let'としてbindingが登録されること | E-02 (utils.ts: L56-57), E-10, E-11 | ○ |
| C-27 | UT-DIS-027: Function内で'param'としてbindingが登録されること | E-02 (utils.ts: L60-62), E-08, E-09 | ○ |
| C-28 | UT-DIS-028: ArrayPattern内の全てのvoidがイテレートされること | E-02 (utils.ts: iterateVoidPatternsInLVal L85-88) | ○ |
| C-29 | UT-DIS-029: ObjectPattern内の全てのvoidがイテレートされること | E-02 (utils.ts: iterateVoidPatternsInLVal L90-97) | ○ |
| C-30 | UT-DIS-030: ネストしたパターン内のvoidがイテレートされること | E-02 (utils.ts: 再帰的イテレータ設計) | ○ |
| C-31 | UT-DIS-031: AssignmentPattern内のvoidがイテレートされること | E-02 (utils.ts: L99-100) | ○ |
| C-32 | UT-DIS-032: voidを含まないパターンで空のイテレータが返ること | E-02 (utils.ts: L105-106 default break) | ○ |
| C-33 | UT-DIS-033: RestElementは探索対象外であること | E-02 (utils.ts: switch文でRestElementケースなし) | ○ |
| C-34 | UT-DIS-034: voidパターンを含む場合にtrueが返ること | E-02 (utils.ts: hasVoidPatternInVariableDeclaration L118-122) | ○ |
| C-35 | UT-DIS-035: voidパターンを含まない場合にfalseが返ること | E-02 (utils.ts: L121 iterator.next().done) | ○ |
| C-36 | UT-DIS-036: 複数の宣言子がある場合にいずれかにvoidがあればtrueが返ること | E-02 (utils.ts: iterateVoidPatternInVariableDeclaration L113-115) | ○ |
| C-37 | UT-DIS-037: LVal内の全てのvoidパターンが変換されること | E-02 (utils.ts: transformVoidPatternInLVal L124-130) | ○ |
| C-38 | UT-DIS-038: 末尾のvoidパラメータが全て削除されること | E-02 (utils.ts: removeTrailingVoidPatternsFromParams L132-144) | ○ |
| C-39 | UT-DIS-039: 非voidパラメータで停止すること | E-02 (utils.ts: L140-141 break) | ○ |
| C-40 | UT-DIS-040: パラメータが空の場合に何も起きないこと | E-02 (utils.ts: L136 ループ条件) | ○ |
| C-41 | UT-DIS-041: 全てのパラメータがvoidの場合に全て削除されること | E-02 (utils.ts: removeTrailingVoidPatternsFromParams ループ設計) | ○ |
| C-42 | UT-DIS-042: ArrowFunctionExpressionに対してtrueが返ること | E-02 (utils.ts: isAnonymousFunctionDefinition L154) | ○ |
| C-43 | UT-DIS-043: 名前なしFunctionExpressionに対してtrueが返ること | E-02 (utils.ts: L155 isFunctionExpression && !node.id) | ○ |
| C-44 | UT-DIS-044: 名前なしClassExpressionに対してtrueが返ること | E-02 (utils.ts: L155 isClassExpression && !node.id) | ○ |
| C-45 | UT-DIS-045: 名前付きFunctionExpressionに対してfalseが返ること | E-02 (utils.ts: L155 !node.id 条件) | ○ |
| C-46 | UT-DIS-046: 名前付きClassExpressionに対してfalseが返ること | E-02 (utils.ts: L155 !node.id 条件) | ○ |
| C-47 | UT-DIS-047: nullに対してfalseが返ること | E-02 (utils.ts: L154 isArrowFunctionExpression等のガード) | ○ |
| C-48 | UT-DIS-048: その他のノード型に対してfalseが返ること | E-02 (utils.ts: 型チェック設計) | ○ |
| C-49 | UT-DIS-049: 匿名関数定義が(0, expr)形式に変換されること | E-02 (utils.ts: handleUsingNamedEvaluation L166-172) | ○ |
| C-50 | UT-DIS-050: 匿名クラス定義が(0, expr)形式に変換されること | E-02, E-14, E-15 | ○ |
| C-51 | UT-DIS-051: 名前付き定義は変換されないこと | E-02 (utils.ts: L169 isAnonymousFunctionDefinition条件) | ○ |
| C-52 | UT-DIS-052: 非関数/クラスノードは変換されないこと | E-02 (utils.ts: L169 isAnonymousFunctionDefinition条件) | ○ |
| C-53 | UT-DIS-053: parserPluginsにdiscardBindingが追加されること | E-01 (index.ts: manipulateOptions L38) | ○ |
| C-54 | UT-DIS-054: サポートされているBabelバージョンで正常動作すること | E-01 (assertVersion呼び出し), E-03 | △ |
| C-55 | UT-DIS-055: サポートされていないBabelバージョンでエラーがスローされること | E-01 (assertVersion呼び出し) | △ |
| C-56 | UT-DIS-056: スコープ内で一意な識別子が生成されること | E-02 (generateUidIdentifier), E-19, E-20 | ○ |
| C-57 | UT-DIS-057: for-in文のvoidパターンが変換されること | E-02 (syncScopeForReplacedVoidPattern: ForInStatement) | ○ |
| C-58 | UT-DIS-058: for-of文のvoidパターンが変換されること | E-02, E-12, E-13 | ○ |
| C-59 | UT-DIS-059: 既存のinnerCommentsがある場合に正しい位置に挿入されること | E-02 (takeVoidPatternComments) | ○ |
| C-60 | UT-DIS-060: voidのstartがnullの場合にデフォルト値0が使用されること | E-02 (utils.ts: L27 ?? 0) | ○ |

## 4) 不足情報（Unknown / Missing）
- **UT-DIS-054/055**: Babelのバージョン互換性テストは、@babel/coreの内部実装（assertVersion）に依存しており、具体的なエラーメッセージの検証にはBabelのバージョン情報が必要
  - 候補：@babel/coreのassertVersion実装 / Babelのリリースノート / integration tests

## 5) リスクフラグ（レビュー観点）
- **0 (低リスク)**: 全体的にソースコードとテストフィクスチャから明確な根拠が得られている
- **1 (中リスク)**: バージョン互換性テスト（UT-DIS-054/055）は外部依存のため、実際のテスト実行で確認が必要
- **0 (低リスク)**: コメント処理のテストケースは既存のテストフィクスチャで間接的に検証されている

## 6) レビュアーチェックリスト（最小）
- [ ] UT-DIS-001〜003：オプション検証ロジックがドキュメント通りか確認
- [ ] UT-DIS-004〜005：配列パターンとオブジェクトパターンの変換結果を確認
- [ ] UT-DIS-006〜007：ignoreFunctionLength assumptionの動作を確認
- [ ] UT-DIS-012〜014：using/await using宣言の処理を確認
- [ ] UT-DIS-020〜027：各コンテキストでのスコープ登録が正しいか確認
- [ ] UT-DIS-038〜041：末尾voidパラメータ削除のエッジケースを確認
- [ ] UT-DIS-049〜052：名前付き評価の無効化ロジックを確認
- [ ] UT-DIS-054〜055：実際のBabelバージョンでの動作確認が必要
