---
generated_at: 2026-02-17 10:30:00
metrics:
  claims_total: 150
  claims_with_evidence: 148
  claims_without_evidence: 2
confidence_derived: 0.99
---

# 根拠レポート：compiler.csv

## 本レポートについて

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

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

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

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

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

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**0.99**
  - 根拠あり：148 / 150、根拠なし：2
- 優先レビュー（高）
  1. **UT-CMP-119**: writeRope(File) - ファイルIO動作の実機検証が必要
  2. **UT-CMP-145**: getSize - プラットフォーム依存のサイズ計算の検証が必要

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

- E-01: `compiler/lexer.nim` - レキサー実装（トークン化、数値・文字列リテラルパース）
- E-02: `compiler/idents.nim` - 識別子キャッシュ実装（ハッシュテーブル、スタイル正規化）
- E-03: `compiler/int128.nim` - 128ビット整数演算実装（算術演算、ビット演算、比較演算）
- E-04: `compiler/ast.nim` - 抽象構文木とシンボルテーブル実装（ノード操作、型操作、シンボル管理）
- E-05: `compiler/types.nim` - 型操作ルーチン実装（型比較、継承関係、サイズ計算）
- E-06: `compiler/ropes.nim` - Rope文字列実装（フォーマット、ファイルIO）
- E-07: `compiler/parser.nim` - パーサー実装（構文解析）
- E-08: `docs/code-to-docs/単体テストケース一覧/plan.md` - プロジェクト情報（言語：Nim、対象：コンパイラ本体）

## 3) Claims と根拠の対応（レビューの主戦場）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | isKeyword: キーワードトークンがtrueを返す | E-01: lexer.nim L141-142 | ○ |
| C-02 | isKeyword: 非キーワードトークンがfalseを返す | E-01: lexer.nim L141-142 | ○ |
| C-03 | isKeyword: キーワード範囲の下限境界値テスト | E-01: lexer.nim L88-89 | ○ |
| C-04 | isKeyword: キーワード範囲の上限境界値テスト | E-01: lexer.nim L88-89 | ○ |
| C-05 | isNimIdentifier: 有効な識別子検証 | E-01: lexer.nim L146-156 | ○ |
| C-06 | isNimIdentifier: 数字で始まる無効識別子 | E-01: lexer.nim L148 | ○ |
| C-07 | isNimIdentifier: 空文字列境界値 | E-01: lexer.nim L147 | ○ |
| C-08 | isNimIdentifier: アンダースコア処理 | E-01: lexer.nim L151 | ○ |
| C-09 | isNimIdentifier: 末尾アンダースコア検出 | E-01: lexer.nim L152 | ○ |
| C-10 | openLexer: レキサー初期化 | E-01: lexer.nim L178-188 | ○ |
| C-11 | closeLexer: レキサー終了処理 | E-01: lexer.nim L194-197 | ○ |
| C-12 | getNumber: 10進整数リテラルパース | E-01: lexer.nim L271-587 | ○ |
| C-13 | getNumber: 16進整数リテラルパース | E-01: lexer.nim L382-384 | ○ |
| C-14 | getNumber: 2進整数リテラルパース | E-01: lexer.nim L388-390 | ○ |
| C-15 | getNumber: 8進整数リテラルパース | E-01: lexer.nim L385-387 | ○ |
| C-16 | getNumber: 浮動小数点リテラルパース | E-01: lexer.nim L397-400 | ○ |
| C-17 | getNumber: 指数表記パース | E-01: lexer.nim L401-406 | ○ |
| C-18 | getNumber: 無効な数値リテラルエラー | E-01: lexer.nim L393-394 | ○ |
| C-19 | getNumber: int64最大値境界値 | E-01: lexer.nim L578-580 | ○ |
| C-20 | getNumber: 範囲外数値エラー | E-01: lexer.nim L584-585 | ○ |
| C-21 | getString: 文字列リテラルパース | E-01: lexer.nim L756-820 | ○ |
| C-22 | getString: エスケープシーケンス処理 | E-01: lexer.nim L657-735 | ○ |
| C-23 | getString: 三重引用符文字列 | E-01: lexer.nim L761-791 | ○ |
| C-24 | getString: raw文字列 | E-01: lexer.nim L797 | ○ |
| C-25 | getString: 閉じ引用符なしエラー | E-01: lexer.nim L811 | ○ |
| C-26 | getCharacter: 文字リテラルパース | E-01: lexer.nim L822-844 | ○ |
| C-27 | getCharacter: エスケープ文字リテラル | E-01: lexer.nim L831 | ○ |
| C-28 | getCharacter: 閉じシングルクォートなしエラー | E-01: lexer.nim L843 | ○ |
| C-29 | getPrecedence: 加算演算子優先度 | E-01: lexer.nim L970-1010 | ○ |
| C-30 | getPrecedence: 乗算演算子優先度 | E-01: lexer.nim L988 | ○ |
| C-31 | getPrecedence: 比較演算子優先度 | E-01: lexer.nim L992 | ○ |
| C-32 | getPrecedence: 矢印演算子優先度0 | E-01: lexer.nim L980-981 | ○ |
| C-33 | rawGetTok: シンボルトークン取得 | E-01: lexer.nim L1202-1378 | ○ |
| C-34 | rawGetTok: EOFトークン取得 | E-01: lexer.nim L1370-1372 | ○ |
| C-35 | rawGetTok: コメントトークン取得 | E-01: lexer.nim L1238-1239 | ○ |
| C-36 | getIdent: 新識別子作成 | E-02: idents.nim L69-97 | ○ |
| C-37 | getIdent: 既存識別子再利用 | E-02: idents.nim L74-81 | ○ |
| C-38 | getIdent: スタイル無視で同一判定 | E-02: idents.nim L82-84 | ○ |
| C-39 | newIdentCache: キャッシュ初期化 | E-02: idents.nim L106-114 | ○ |
| C-40 | whichKeyword: キーワード識別子判定 | E-02: idents.nim L116-118 | ○ |
| C-41 | whichKeyword: 非キーワードでwInvalid | E-02: idents.nim L117 | ○ |
| C-42 | cmpIgnoreStyle: スタイル無視比較で等しい | E-02: idents.nim L35-53 | ○ |
| C-43 | cmpIgnoreStyle: 異なる文字列で非0 | E-02: idents.nim L48-49 | ○ |
| C-44 | PIdent.==: 同じ識別子が等しい | E-02: idents.nim L121-123 | ○ |
| C-45 | PIdent.==: nilとの比較 | E-02: idents.nim L122 | ○ |
| C-46 | toInt128: int64からInt128変換 | E-03: int128.nim L35-57 | ○ |
| C-47 | toInt128: 負のint64からInt128変換 | E-03: int128.nim L47, L55 | ○ |
| C-48 | toInt128: int64.high境界値 | E-03: int128.nim L51-56 | ○ |
| C-49 | toInt64: Int128からint64変換 | E-03: int128.nim L65-73 | ○ |
| C-50 | toInt64: 範囲外でアサーションエラー | E-03: int128.nim L67-68, L70-71 | ○ |
| C-51 | Int128.+: 加算 | E-03: int128.nim L290-299 | ○ |
| C-52 | Int128.+: 桁上がり加算 | E-03: int128.nim L294-299 | ○ |
| C-53 | Int128.-: 減算 | E-03: int128.nim L308-309 | ○ |
| C-54 | Int128.-(unary): 符号反転 | E-03: int128.nim L304-306 | ○ |
| C-55 | Int128.*: 乗算 | E-03: int128.nim L359-366 | ○ |
| C-56 | Int128.div: 除算 | E-03: int128.nim L436-438 | ○ |
| C-57 | Int128.div: ゼロ除算エラー | E-03: int128.nim L385 | ○ |
| C-58 | Int128.mod: 剰余 | E-03: int128.nim L440-442 | ○ |
| C-59 | Int128.cmp: 同じ値で0 | E-03: int128.nim L188-196 | ○ |
| C-60 | Int128.cmp: a<bで負の値 | E-03: int128.nim L198-199 | ○ |
| C-61 | Int128.cmp: a>bで正の値 | E-03: int128.nim L188-196 | ○ |
| C-62 | Int128.shl: 左シフト | E-03: int128.nim L266-288 | ○ |
| C-63 | Int128.shr: 右シフト | E-03: int128.nim L239-264 | ○ |
| C-64 | Int128.bitnot: ビット反転 | E-03: int128.nim L211-216 | ○ |
| C-65 | Int128.bitand: ビットAND | E-03: int128.nim L218-223 | ○ |
| C-66 | Int128.bitor: ビットOR | E-03: int128.nim L225-230 | ○ |
| C-67 | Int128.$: 10進文字列変換 | E-03: int128.nim L467-470 | ○ |
| C-68 | Int128.$: 負数文字列変換 | E-03: int128.nim L451 | ○ |
| C-69 | Int128.$: Zero文字列変換 | E-03: int128.nim L446-447 | ○ |
| C-70 | parseDecimalInt128: 10進文字列パース | E-03: int128.nim L472-489 | ○ |
| C-71 | parseDecimalInt128: 負数文字列パース | E-03: int128.nim L476-479, L488-489 | ○ |
| C-72 | toFloat64: float64変換 | E-03: int128.nim L523-532 | ○ |
| C-73 | toInt128(float64): float64からの変換 | E-03: int128.nim L538-551 | ○ |
| C-74 | newSym: シンボル作成 | E-04: ast.nim L709-722 | ○ |
| C-75 | newNode: ノード作成 | E-04: astdef.nim参照 | ○ |
| C-76 | PNode.add: 子ノード追加 | E-04: ast.nim L545-547 | ○ |
| C-77 | PNode.add: nilノード追加エラー | E-04: ast.nim L546 | ○ |
| C-78 | PType.len: 型の子要素数 | E-04: ast.nim L937-942 | ○ |
| C-79 | skipTypes: 型種スキップ | E-04: ast.nim L880-886 | ○ |
| C-80 | copyNode: シャローコピー | E-04: ast.nim L1224-1244 | ○ |
| C-81 | copyTree: ディープコピー | E-04: ast.nim L1318-1323 | ○ |
| C-82 | copyTree: nilノード処理 | E-04: ast.nim L1320 | ○ |
| C-83 | getInt: 整数ノードから値取得 | E-04: ast.nim L1364-1375 | ○ |
| C-84 | getInt: 無効ノード種エラー | E-04: ast.nim L1375 | ○ |
| C-85 | getStr: 文字列ノードから値取得 | E-04: ast.nim L1395-1405 | ○ |
| C-86 | getStr: nkNilLitで空文字列 | E-04: ast.nim L1398-1400 | ○ |
| C-87 | isGenericRoutine(PNode): ジェネリックルーチン判定true | E-04: ast.nim L1421-1422 | ○ |
| C-88 | isGenericRoutine(PNode): 非ジェネリックでfalse | E-04: ast.nim L1421-1422 | ○ |
| C-89 | newType: 型作成 | E-04: ast.nim L1034-1045 | ○ |
| C-90 | copyType: 型コピー | E-04: ast.nim L1103-1106 | ○ |
| C-91 | copySym: シンボルコピー | E-04: ast.nim L1115-1129 | ○ |
| C-92 | sameType: 同じ型でtrue | E-05: types.nim L684-687 | ○ |
| C-93 | sameType: 異なる型でfalse | E-05: types.nim L684-687 | ○ |
| C-94 | sameObjectTypes: 同じオブジェクト型でtrue | E-05: types.nim L801-805 | ○ |
| C-95 | inheritanceDiff: 同じ型で0 | E-05: types.nim L1089-1094 | ○ |
| C-96 | inheritanceDiff: 直接親クラスで-1 | E-05: types.nim L1097-1103 | ○ |
| C-97 | inheritanceDiff: 無関係な型でmaxint | E-05: types.nim L1111 | ○ |
| C-98 | firstOrd: 整数型最小値 | E-05: types.nim L445-494 | ○ |
| C-99 | firstOrd: unsigned型最小値0 | E-05: types.nim L469 | ○ |
| C-100 | lastOrd: 整数型最大値 | E-05: types.nim L536-590 | ○ |
| C-101 | lastOrd: unsigned型最大値 | E-05: types.nim L564-568 | ○ |
| C-102 | lengthOrd: 型の要素数 | E-05: types.nim L628-634 | ○ |
| C-103 | isOrdinalType: 序数型でtrue | E-05: types.nim L182-188 | ○ |
| C-104 | isOrdinalType: 非序数型でfalse | E-05: types.nim L182-188 | ○ |
| C-105 | containsGenericType: ジェネリック型含有でtrue | E-05: types.nim L1194-1210 | ○ |
| C-106 | containsGenericType: ジェネリック型非含有でfalse | E-05: types.nim L1194-1210 | ○ |
| C-107 | equalParams: 同じパラメータでparamsEqual | E-05: types.nim L722-748 | ○ |
| C-108 | equalParams: 異なるパラメータでparamsNotEqual | E-05: types.nim L724-725 | ○ |
| C-109 | isFinal: finalオブジェクトでtrue | E-05: types.nim L432-434 | ○ |
| C-110 | isException: 例外型でtrue | E-05: types.nim L1587-1596 | ○ |
| C-111 | isException: 非例外型でfalse | E-05: types.nim L1587-1596 | ○ |
| C-112 | rope(string): 文字列からRope変換 | E-06: ropes.nim L31 | ○ |
| C-113 | rope(BiggestInt): 整数からRope変換 | E-06: ropes.nim L33-35 | ○ |
| C-114 | rope(BiggestFloat): 浮動小数点からRope変換 | E-06: ropes.nim L37-39 | ○ |
| C-115 | runtimeFormat: フォーマット展開 | E-06: ropes.nim L56-107 | ○ |
| C-116 | runtimeFormat: $#プレースホルダ展開 | E-06: ropes.nim L67-70 | ○ |
| C-117 | runtimeFormat: $$エスケープ | E-06: ropes.nim L64-66 | ○ |
| C-118 | runtimeFormat: 無効フォーマットエラー | E-06: ropes.nim L103-104 | ○ |
| C-119 | writeRope(File): ファイル書き込み | E-06: ropes.nim L41-43 | △ |
| C-120 | writeRope(AbsoluteFile): ファイルパス書き込み | E-06: ropes.nim L45-52 | ○ |
| C-121 | writeRope(AbsoluteFile): 無効パスでfalse | E-06: ropes.nim L47-48 | ○ |
| C-122 | equalsFile: 同じ内容でtrue | E-06: ropes.nim L119-149 | ○ |
| C-123 | equalsFile: 異なる内容でfalse | E-06: ropes.nim L143-144 | ○ |
| C-124 | prepend: 文字列先頭追加 | E-06: ropes.nim L54 | ○ |
| C-125 | newIntNode: 整数ノード作成 | E-04: ast.nim L799-801 | ○ |
| C-126 | newFloatNode: 浮動小数点ノード作成 | E-04: ast.nim L915-917 | ○ |
| C-127 | newSymNode: シンボルノード作成 | E-04: ast.nim L790-794 | ○ |
| C-128 | lastSon: 最後の子ノード取得 | E-04: ast.nim L807 | ○ |
| C-129 | hasSonWith: 子ノード種存在でtrue | E-04: ast.nim L1332-1336 | ○ |
| C-130 | hasSonWith: 子ノード種非存在でfalse | E-04: ast.nim L1336 | ○ |
| C-131 | isRoutine: ルーチンシンボルでtrue | E-04: ast.nim L1459-1460 | ○ |
| C-132 | isRoutine: 非ルーチンシンボルでfalse | E-04: ast.nim L1459-1460 | ○ |
| C-133 | PNode.comment: コメント取得 | E-04: ast.nim L447-452 | ○ |
| C-134 | PNode.comment=: コメント設定 | E-04: ast.nim L454-467 | ○ |
| C-135 | PNode.comment=: 空コメントでフラグクリア | E-04: ast.nim L465-467 | ○ |
| C-136 | initStrTable: 文字列テーブル初期化 | E-04: ast.nim L1143-1145 | ○ |
| C-137 | initIdTable: IDテーブル初期化 | E-04: ast.nim L1147-1149 | ○ |
| C-138 | resetIdTable: IDテーブルリセット | E-04: ast.nim L1151-1155 | ○ |
| C-139 | isMetaType: メタ型でtrue | E-04: ast.nim L732-735 | ○ |
| C-140 | isMetaType: 非メタ型でfalse | E-04: ast.nim L732-735 | ○ |
| C-141 | propagateToOwner: フラグ伝播 | E-04: ast.nim L1185-1208 | ○ |
| C-142 | rawAddSon: 子型追加 | E-04: ast.nim L1210-1214 | ○ |
| C-143 | delSon: 子ノード削除 | E-04: ast.nim L1219-1222 | ○ |
| C-144 | delSon: 空ノードで何も起きない | E-04: ast.nim L1220 | ○ |
| C-145 | getSize: 型サイズ計算 | E-05: types.nim L1165-1167 | △ |
| C-146 | getAlign: 型アライメント計算 | E-05: types.nim L1161-1163 | ○ |
| C-147 | computeSize: サイズ計算・設定 | E-05: types.nim L1152-1154 | ○ |
| C-148 | getReturnType: 戻り値型取得 | E-05: types.nim L1156-1159 | ○ |
| C-149 | skipConv: 型変換ノードスキップ | E-05: types.nim L1371-1382 | ○ |
| C-150 | skipConv: 非変換ノードそのまま | E-05: types.nim L1372 | ○ |

## 4) 不足情報（Unknown / Missing）
- **C-119 (writeRope(File))**: ファイルIOの動作は実際のファイルシステムとの統合テストで確認が必要
  - 候補：実機テスト / モックファイル / CI環境での検証
- **C-145 (getSize)**: プラットフォーム依存のサイズ計算はターゲットプラットフォームごとの検証が必要
  - 候補：x86_64テスト / arm64テスト / 32bitテスト

## 5) リスクフラグ（レビュー観点）
- **0（低リスク）**: 基本的な算術演算、文字列操作、型判定のテストケース（C-01〜C-91）
- **1（中リスク）**: ファイルIO関連のテストケース（C-119〜C-123）- 実環境依存
- **1（中リスク）**: プラットフォーム依存のサイズ計算（C-145〜C-147）- ターゲット依存

## 6) レビュアーチェックリスト（最小）
- [ ] lexer.nimの数値リテラルパース関連テストケース（C-12〜C-20）が境界値を網羅しているか確認
- [ ] int128.nimの算術演算テストケース（C-51〜C-58）がオーバーフロー条件を考慮しているか確認
- [ ] ast.nimのノード操作テストケース（C-76〜C-86）がnull安全性を考慮しているか確認
- [ ] types.nimの型比較テストケース（C-92〜C-111）がジェネリック型を網羅しているか確認
- [ ] ファイルIO関連のテストケース（C-119〜C-123）は実機テストで補完する必要があるか検討
- [ ] プラットフォーム依存テストケース（C-145〜C-147）のターゲットカバレッジを確認
