---
generated_at: 2026-02-22 10:00:00
metrics:
  claims_total: 188
  claims_with_evidence: 184
  claims_without_evidence: 4
confidence_derived: 0.98
---

# 根拠レポート：unix-core 単体テストケース一覧

## 本レポートについて

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

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

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

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

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

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**0.98**
  - 根拠あり：184 / 188、根拠なし：4
- 優先レビュー（高）
  1. **C-135/C-136 uv__sock_reuseport**: プラットフォーム固有のSO_REUSEPORT対応状況は実行環境に依存し、静的解析では完全に確認できない
  2. **C-137/C-138 uv__get_rlimit_max_memory**: rlimitの設定はシステム依存であり、テスト結果が環境によって異なる可能性がある
  3. **C-077 uv_getrusage_thread**: プラットフォーム固有の実装（macOS: mach_thread_self、Linux: RUSAGE_THREAD等）のため、テスト期待値が環境依存

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

- E-01: `src/unix/core.c` - Unix コアモジュール実装（2209行）
- E-02: `src/unix/loop.c` - イベントループ初期化・設定・クリーンアップ（240行）
- E-03: `src/unix/loop-watcher.c` - ループウォッチャー（prepare/check/idle）マクロ定義（69行）
- E-04: `src/unix/async.c` - 非同期通知メカニズム（421行）
- E-05: `src/unix/internal.h` - Unix内部ヘッダ（関数宣言、マクロ、インラインユーティリティ）（597行）
- E-06: `docs/code-to-docs/単体テストケース一覧/plan.md` - テスト対象モジュール定義

## 3) Claims と根拠の対応（レビューの主戦場）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-001 | uv_clock_gettime: UV_CLOCK_MONOTONICで時刻取得可能 | E-01 (L126-151) | ○ |
| C-002 | uv_clock_gettime: UV_CLOCK_REALTIMEで時刻取得可能 | E-01 (L126-151) | ○ |
| C-003 | uv_clock_gettime: ts==NULLでUV_EFAULT返却 | E-01 (L130-131) | ○ |
| C-004 | uv_clock_gettime: 不正clock_idでUV_EINVAL返却 | E-01 (L133-135) | ○ |
| C-005 | uv_hrtime: 高精度時刻取得 | E-01 (L154-156) | ○ |
| C-006 | uv_close: TCPハンドルクローズ | E-01 (L159-238, L174-175) | ○ |
| C-007 | uv_close: UDPハンドルクローズ | E-01 (L178-179) | ○ |
| C-008 | uv_close: ASYNCハンドルクローズ | E-01 (L194-195) | ○ |
| C-009 | uv_close: TIMERハンドルクローズ | E-01 (L198-199) | ○ |
| C-010 | uv_close: IDLEハンドルクローズ | E-01 (L190-191) | ○ |
| C-011 | uv__socket_sockopt: オプション取得 | E-01 (L240-266, L257-258) | ○ |
| C-012 | uv__socket_sockopt: オプション設定 | E-01 (L259-260) | ○ |
| C-013 | uv__socket_sockopt: handle==NULLでUV_EINVAL | E-01 (L245-246) | ○ |
| C-014 | uv__socket_sockopt: value==NULLでUV_EINVAL | E-01 (L245-246) | ○ |
| C-015 | uv__socket_sockopt: 非対応タイプでUV_ENOTSUP | E-01 (L252-253) | ○ |
| C-016 | uv__make_close_pending: closing_handlesへ追加 | E-01 (L268-273) | ○ |
| C-017 | uv__getiovmax: IOV_MAX取得 | E-01 (L275-300) | ○ |
| C-018 | uv_is_closing: CLOSING中でtrue | E-01 (L383-385) | ○ |
| C-019 | uv_is_closing: 非CLOSINGでfalse | E-01 (L383-385) | ○ |
| C-020 | uv_backend_fd: backend_fd返却 | E-01 (L388-390) | ○ |
| C-021 | uv_loop_alive: アクティブハンドルありでtrue | E-01 (L393-398, L422-424) | ○ |
| C-022 | uv_loop_alive: アクティブハンドルなしでfalse | E-01 (L393-398, L422-424) | ○ |
| C-023 | uv_run: UV_RUN_DEFAULTでイベントループ実行 | E-01 (L427-492) | ○ |
| C-024 | uv_run: UV_RUN_ONCEで1回イテレーション | E-01 (L481) | ○ |
| C-025 | uv_run: UV_RUN_NOWAITで非ブロッキング | E-01 (L481) | ○ |
| C-026 | uv_run: 空ループで0返却 | E-01 (L432-434) | ○ |
| C-027 | uv_run: stop_flagでループ停止 | E-01 (L488-489) | ○ |
| C-028 | uv_update_time: 時刻更新ラッパー | E-01 (L495-497) | ○ |
| C-029 | uv_is_active: アクティブでtrue | E-01 (L500-502) | ○ |
| C-030 | uv_is_active: 非アクティブでfalse | E-01 (L500-502) | ○ |
| C-031 | uv__socket: TCPソケット作成 | E-01 (L506-540) | ○ |
| C-032 | uv__socket: UDPソケット作成 | E-01 (L506-540) | ○ |
| C-033 | uv__socket: NONBLOCK設定確認 | E-01 (L523) | ○ |
| C-034 | uv__socket: CLOEXEC設定確認 | E-01 (L525) | ○ |
| C-035 | uv__socket: 不正ドメインでエラー | E-01 (L519-521) | ○ |
| C-036 | uv__open_file: ファイルオープン | E-01 (L543-556) | ○ |
| C-037 | uv__open_file: 存在しないファイルでNULL | E-01 (L548-549) | ○ |
| C-038 | uv__accept: 接続受け入れ | E-01 (L559-589) | ○ |
| C-039 | uv__accept: 接続なしでエラー | E-01 (L574-575) | ○ |
| C-040 | uv__close_nocheckstdio: FDクローズ | E-01 (L626-642) | ○ |
| C-041 | uv__close_nocheckstdio: EINTR無視 | E-01 (L636-637) | ○ |
| C-042 | uv__close: stdio保護付きクローズ | E-01 (L645-651) | ○ |
| C-043 | uv__nonblock_fcntl: 非ブロッキング設定 | E-01 (L669-697) | ○ |
| C-044 | uv__nonblock_fcntl: 非ブロッキング解除 | E-01 (L684-686) | ○ |
| C-045 | uv__nonblock_fcntl: 冪等性 | E-01 (L681) | ○ |
| C-046 | uv__cloexec: CLOEXEC設定 | E-01 (L700-716) | ○ |
| C-047 | uv__cloexec: CLOEXEC解除 | E-01 (L704-706) | ○ |
| C-048 | uv_cwd: CWD取得 | E-01 (L753-789) | ○ |
| C-049 | uv_cwd: buffer==NULLでUV_EINVAL | E-01 (L756-757) | ○ |
| C-050 | uv_cwd: size==NULLでUV_EINVAL | E-01 (L756-757) | ○ |
| C-051 | uv_cwd: *size==0でUV_EINVAL | E-01 (L756-757) | ○ |
| C-052 | uv_cwd: バッファ不足でUV_ENOBUFS | E-01 (L769-786) | ○ |
| C-053 | uv_chdir: ディレクトリ変更 | E-01 (L792-797) | ○ |
| C-054 | uv_chdir: 存在しないディレクトリ | E-01 (L793-794) | ○ |
| C-055 | uv_fileno: TCPハンドルからFD取得 | E-01 (L812-839) | ○ |
| C-056 | uv_fileno: UDPハンドルからFD取得 | E-01 (L822-823) | ○ |
| C-057 | uv_fileno: 非対応タイプでUV_EINVAL | E-01 (L830-831) | ○ |
| C-058 | uv_fileno: CLOSING中でUV_EBADF | E-01 (L834-835) | ○ |
| C-059 | next_power_of_two: 2のべき乗切り上げ | E-01 (L859-868) | ○ |
| C-060 | next_power_of_two: 既に2のべき乗 | E-01 (L859-868) | ○ |
| C-061 | next_power_of_two: val=1 | E-01 (L859-868) | ○ |
| C-062 | uv__io_init: ウォッチャー初期化 | E-01 (L941-950) | ○ |
| C-063 | uv__io_start: 監視開始 | E-01 (L953-986) | ○ |
| C-064 | uv__io_start: 複合イベント | E-01 (L958) | ○ |
| C-065 | uv__io_stop: 監視停止 | E-01 (L1005-1033) | ○ |
| C-066 | uv__io_stop: fd=-1で即返却 | E-01 (L1009-1010) | ○ |
| C-067 | uv__io_stop: 全停止時のクリーンアップ | E-01 (L1020-1030) | ○ |
| C-068 | uv__io_close: 完全クローズ | E-01 (L1036-1043) | ○ |
| C-069 | uv__io_feed: pending_queueへ追加 | E-01 (L1046-1049) | ○ |
| C-070 | uv__io_feed: 重複追加防止 | E-01 (L1047) | ○ |
| C-071 | uv__io_active: アクティブ判定 | E-01 (L1052-1056) | ○ |
| C-072 | uv__io_active: 非アクティブ判定 | E-01 (L1052-1056) | ○ |
| C-073 | uv__fd_exists: FD存在判定 | E-01 (L1092-1094) | ○ |
| C-074 | uv__fd_exists: FD不在判定 | E-01 (L1092-1094) | ○ |
| C-075 | uv__fd_exists: 範囲外FD | E-01 (L1093) | ○ |
| C-076 | uv_getrusage: リソース使用状況取得 | E-01 (L1097-1141) | ○ |
| C-077 | uv_getrusage_thread: スレッドリソース使用状況 | E-01 (L1144-1180) | ○ |
| C-078 | uv__open_cloexec: CLOEXECファイルオープン | E-01 (L1183-1208) | ○ |
| C-079 | uv__open_cloexec: 存在しないファイル | E-01 (L1188-1189) | ○ |
| C-080 | uv__slurp: ファイル一括読み込み | E-01 (L1211-1234) | ○ |
| C-081 | uv__slurp: 存在しないファイル | E-01 (L1218-1219) | ○ |
| C-082 | uv__dup2_cloexec: CLOEXEC付きFD複製 | E-01 (L1237-1262) | ○ |
| C-083 | uv_os_homedir: ホームディレクトリ取得 | E-01 (L1265-1298) | ○ |
| C-084 | uv_os_homedir: HOME未設定時フォールバック | E-01 (L1278-1279) | ○ |
| C-085 | uv_os_homedir: バッファ不足 | E-01 (L1287-1291) | ○ |
| C-086 | uv_os_tmpdir: 一時ディレクトリ取得 | E-01 (L1301-1349) | ○ |
| C-087 | uv_os_tmpdir: デフォルト/tmp | E-01 (L1327-1329) | ○ |
| C-088 | uv_os_tmpdir: buffer==NULLでUV_EINVAL | E-01 (L1305-1306) | ○ |
| C-089 | uv_os_tmpdir: 末尾スラッシュ除去 | E-01 (L1340-1342) | ○ |
| C-090 | uv_os_get_passwd: passwd取得 | E-01 (L1508-1510, L1352-1420) | ○ |
| C-091 | uv_os_get_passwd: pwd==NULLでUV_EINVAL | E-01 (L1362-1363) | ○ |
| C-092 | uv_os_get_passwd2: UID指定passwd取得 | E-01 (L1513-1515) | ○ |
| C-093 | uv_os_get_passwd2: 存在しないUID | E-01 (L1388-1389) | ○ |
| C-094 | uv_os_get_group: グループ情報取得 | E-01 (L1423-1505) | ○ |
| C-095 | uv_os_get_group: grp==NULLでUV_EINVAL | E-01 (L1438-1439) | ○ |
| C-096 | uv_translate_sys_error: 正errno変換 | E-01 (L1518-1521) | ○ |
| C-097 | uv_translate_sys_error: 0のまま | E-01 (L1520) | ○ |
| C-098 | uv_translate_sys_error: 負値のまま | E-01 (L1520) | ○ |
| C-099 | uv_os_environ: 環境変数一覧 | E-01 (L1524-1577) | ○ |
| C-100 | uv_os_getenv: 環境変数取得 | E-01 (L1580-1603) | ○ |
| C-101 | uv_os_getenv: 存在しない変数 | E-01 (L1589-1590) | ○ |
| C-102 | uv_os_getenv: name==NULLでUV_EINVAL | E-01 (L1584-1585) | ○ |
| C-103 | uv_os_getenv: バッファ不足 | E-01 (L1594-1597) | ○ |
| C-104 | uv_os_setenv: 環境変数設定 | E-01 (L1606-1614) | ○ |
| C-105 | uv_os_setenv: name==NULLでUV_EINVAL | E-01 (L1607-1608) | ○ |
| C-106 | uv_os_setenv: value==NULLでUV_EINVAL | E-01 (L1607-1608) | ○ |
| C-107 | uv_os_unsetenv: 環境変数削除 | E-01 (L1617-1625) | ○ |
| C-108 | uv_os_unsetenv: name==NULLでUV_EINVAL | E-01 (L1618-1619) | ○ |
| C-109 | uv_os_gethostname: ホスト名取得 | E-01 (L1628-1655) | ○ |
| C-110 | uv_os_gethostname: buffer==NULLでUV_EINVAL | E-01 (L1638-1639) | ○ |
| C-111 | uv_os_gethostname: バッファ不足 | E-01 (L1647-1650) | ○ |
| C-112 | uv_get_osfhandle: FDそのまま返却 | E-01 (L1658-1660) | ○ |
| C-113 | uv_open_osfhandle: os_fdそのまま返却 | E-01 (L1662-1664) | ○ |
| C-114 | uv_os_getpid: PID取得 | E-01 (L1666-1668) | ○ |
| C-115 | uv_os_getppid: PPID取得 | E-01 (L1671-1673) | ○ |
| C-116 | uv_os_getpriority: 優先度取得 | E-01 (L1683-1702) | ○ |
| C-117 | uv_os_getpriority: priority==NULLでUV_EINVAL | E-01 (L1690-1691) | ○ |
| C-118 | uv_os_setpriority: 優先度設定 | E-01 (L1705-1718) | ○ |
| C-119 | uv_os_setpriority: 範囲外でUV_EINVAL | E-01 (L1710-1711) | ○ |
| C-120 | uv_thread_getpriority: スレッド優先度取得 | E-01 (L1726-1754) | ○ |
| C-121 | uv_thread_getpriority: priority==NULLでUV_EINVAL | E-01 (L1734-1735) | ○ |
| C-122 | uv_thread_setpriority: スレッド優先度設定 | E-01 (L1777-1848) | ○ |
| C-123 | uv_thread_setpriority: 範囲外でUV_EINVAL | E-01 (L1787-1788) | ○ |
| C-124 | uv_os_uname: システム情報取得 | E-01 (L1850-1903) | ○ |
| C-125 | uv_os_uname: buffer==NULLでUV_EINVAL | E-01 (L1854-1855) | ○ |
| C-126 | uv_gettimeofday: 時刻取得 | E-01 (L1927-1939) | ○ |
| C-127 | uv_gettimeofday: tv==NULLでUV_EINVAL | E-01 (L1930-1931) | ○ |
| C-128 | uv_sleep: 指定時間スリープ | E-01 (L1941-1953) | ○ |
| C-129 | uv_sleep: 0msで即返却 | E-01 (L1945-1946) | ○ |
| C-130 | uv__search_path: PATH検索 | E-01 (L1955-2029) | ○ |
| C-131 | uv__search_path: 絶対パス解決 | E-01 (L1976-1990) | ○ |
| C-132 | uv__search_path: 存在しないプログラム | E-01 (L2028) | ○ |
| C-133 | uv__search_path: buf==NULLでUV_EINVAL | E-01 (L1964-1965) | ○ |
| C-134 | uv_available_parallelism: 1以上の並列度 | E-01 (L2051-2141) | ○ |
| C-135 | uv__sock_reuseport: REUSEPORT設定 | E-01 (L2143-2184) | △ |
| C-136 | uv__sock_reuseport: 非対応でUV_ENOTSUP | E-01 (L2180) | △ |
| C-137 | uv__get_rlimit_max_memory: メモリ制限取得 | E-01 (L2187-2208) | ○ |
| C-138 | uv__get_rlimit_max_memory: 無制限時0 | E-01 (L2193-2196) | ○ |
| C-139 | uv_backend_timeout: watcher_queue空時 | E-01 (L414-419) | ○ |
| C-140 | uv_backend_timeout: watcher_queue非空で0 | E-01 (L415-418) | ○ |
| C-141 | uv_cpumask_size: CPUマスクサイズ | E-01 (L1675-1681) | ○ |
| C-142 | uv_loop_init: ループ初期化 | E-02 (L30-132) | ○ |
| C-143 | uv_loop_init: loop->data保持 | E-02 (L35-37) | ○ |
| C-144 | uv_loop_init: active_handles==0 | E-02 (L59) | ○ |
| C-145 | uv_loop_init: backend_fd有効 | E-02 (L73, L79) | ○ |
| C-146 | uv_loop_fork: fork後再初期化 | E-02 (L135-165) | ○ |
| C-147 | uv__loop_close: ループクリーンアップ | E-02 (L168-211) | ○ |
| C-148 | uv__loop_close: watchersメモリ解放 | E-02 (L203-205) | ○ |
| C-149 | uv__loop_configure: UV_METRICS_IDLE_TIME | E-02 (L218-221) | ○ |
| C-150 | uv__loop_configure: SIGPROF設定 | E-02 (L231-238) | ○ |
| C-151 | uv__loop_configure: 未知オプションでUV_ENOSYS | E-02 (L231-232) | ○ |
| C-152 | uv__loop_configure: SIGPROF以外でUV_EINVAL | E-02 (L234-235) | ○ |
| C-153 | uv_prepare_init: prepare初期化 | E-03 (L26-30, L66) | ○ |
| C-154 | uv_prepare_start: prepare開始 | E-03 (L32-39, L66) | ○ |
| C-155 | uv_prepare_start: cb==NULLでUV_EINVAL | E-03 (L34) | ○ |
| C-156 | uv_prepare_start: アクティブ時0返却 | E-03 (L33) | ○ |
| C-157 | uv_prepare_stop: prepare停止 | E-03 (L41-46, L66) | ○ |
| C-158 | uv_prepare_stop: 非アクティブ時0返却 | E-03 (L42) | ○ |
| C-159 | uv_check_init: check初期化 | E-03 (L26-30, L67) | ○ |
| C-160 | uv_check_start: check開始 | E-03 (L32-39, L67) | ○ |
| C-161 | uv_check_start: cb==NULLでUV_EINVAL | E-03 (L34) | ○ |
| C-162 | uv_check_stop: check停止 | E-03 (L41-46, L67) | ○ |
| C-163 | uv_idle_init: idle初期化 | E-03 (L26-30, L68) | ○ |
| C-164 | uv_idle_start: idle開始 | E-03 (L32-39, L68) | ○ |
| C-165 | uv_idle_start: cb==NULLでUV_EINVAL | E-03 (L34) | ○ |
| C-166 | uv_idle_stop: idle停止 | E-03 (L41-46, L68) | ○ |
| C-167 | uv_async_init: async初期化 | E-04 (L74-90) | ○ |
| C-168 | uv_async_init: NULLコールバックで初期化 | E-04 (L82) | ○ |
| C-169 | uv_async_init: pending==0 | E-04 (L83) | ○ |
| C-170 | uv_async_send: 非同期通知送信 | E-04 (L93-115) | ○ |
| C-171 | uv_async_send: pending時重複送信なし | E-04 (L101-102) | ○ |
| C-172 | uv__async_close: asyncクローズ | E-04 (L153-157) | ○ |
| C-173 | uv__async_stop: async機構停止 | E-04 (L332-363) | ○ |
| C-174 | uv__async_stop: fd==-1で即返却 | E-04 (L337-338) | ○ |
| C-175 | uv__async_fork: fork後async再作成 | E-04 (L366-405) | ○ |
| C-176 | uv__async_fork: 未開始で0返却 | E-04 (L371-372) | ○ |
| C-177 | uv__async_fork: pending/busyリセット | E-04 (L388-390) | ○ |
| C-178 | uv__update_time: ミリ秒単位更新 | E-05 (L467-471) | ○ |
| C-179 | uv__basename_r: ファイル名抽出 | E-05 (L473-481) | ○ |
| C-180 | uv__basename_r: スラッシュなし | E-05 (L477-478) | ○ |
| C-181 | uv__io_init_start: 初期化と開始の統合 | E-01 (L989-1002) | ○ |
| C-182 | uv__io_init_start: 失敗時リセット | E-01 (L999-1000) | ○ |
| C-183 | uv_disable_stdio_inheritance: CLOEXEC設定 | E-01 (L800-809) | ○ |
| C-184 | uv__getsockpeername: ピアアドレス取得 | E-01 (L1905-1925) | ○ |
| C-185 | uv__getsockpeername: CLOSING時エラー | E-01 (L1913-1915) | ○ |
| C-186 | uv__io_poll_prepare: timeout!=0で時刻設定 | E-01 (L1059-1078) | ○ |
| C-187 | uv__io_poll_prepare: シグナルマスク設定 | E-01 (L1075-1077) | ○ |
| C-188 | uv__io_poll_check: ループ時刻更新 | E-01 (L1080-1090) | ○ |

## 4) 不足情報（Unknown / Missing）
- C-135/C-136: `uv__sock_reuseport` のプラットフォーム固有動作は、コンパイル時の条件分岐（`#if defined(__FreeBSD__)`, `#if defined(__linux__)` 等）に依存しており、テスト実行環境によってテスト結果が異なる。実行環境でのプリプロセッサ定数を確認する必要がある。
  - 候補：ビルド時の `#define` 確認 / 各プラットフォームでの結合テスト / CI環境マトリクスの確認

## 5) リスクフラグ（レビュー観点）
- 0: 低リスク - 大半のテストケースはソースコードから直接的に導出されており、入力検証やエラーハンドリングの条件分岐を正確に反映している
- 1: 中リスク - `uv_run` のタイムアウトやイベント処理順序に関するテスト(C-023〜C-027)は、実際の非同期実行環境でのみ完全な検証が可能
- 1: 中リスク - `uv__getrusage`のmacOS固有処理（ru_maxrss / 1024）やSolaris固有処理（ページサイズ変換）はプラットフォーム依存
- 1: 中リスク - `uv__sock_reuseport` はプラットフォーム固有の条件分岐が多く、テスト可能性が環境依存

## 6) レビュアーチェックリスト（最小）
- [ ] テストケースがソースコードの全publicAPI関数をカバーしているか確認
- [ ] NULLポインタ防御のテストケースが全関数の引数検証に対して存在するか確認
- [ ] ループウォッチャー（prepare/check/idle）のマクロ展開による3タイプ分のテストケースが存在するか確認
- [ ] `uv_run` の3つのモード（DEFAULT/ONCE/NOWAIT）全てにテストケースがあるか確認
- [ ] プラットフォーム固有の条件分岐（`#ifdef __linux__`等）に対するテストの実行環境前提条件が適切か確認
- [ ] `uv__async_*` のスレッドセーフティに関するテストケースが原子操作の動作を検証しているか確認
- [ ] 環境変数操作系テスト（uv_os_getenv/setenv/unsetenv）がテスト間で副作用を起こさないか確認
