---
generated_at: 2026-02-22 00:00:00
metrics:
  claims_total: 34
  claims_with_evidence: 33
  claims_without_evidence: 1
confidence_derived: 0.97
---

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

## 本レポートについて

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

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

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

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

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

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**0.97**
  - 根拠あり：33 / 34、根拠なし：1
- 優先レビュー（高）
  1. **C-32（マルチバイト文字のバイト単位コピー）**：実装はバイト単位コピーだが、マルチバイト文字の途中切断時の挙動は仕様として明記されていない
  2. **C-14（SSIZE_MAXを超えるコピー数）**：コード上のロジックは確認できるが、実際にSSSIZE_MAXを超えるテストの実行可能性は環境依存
  3. **C-34（全て区切り文字の入力）**：コードのロジックから導出可能だが、明示的な仕様記述はない

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

- E-01: `src/strscpy.c` - uv__strscpy関数の実装（25-38行目）
- E-02: `src/strscpy.h` - uv__strscpy関数のドキュメントコメントおよびプロトタイプ（31-37行目）
- E-03: `src/strtok.c` - uv__strtok関数の実装（25-52行目）
- E-04: `src/strtok.h` - uv__strtok関数のプロトタイプ（25行目）
- E-05: Linux kernel strscpy API ドキュメント（strscpy.hのコメントで参照: https://www.kernel.org/doc/htmldocs/kernel-api/API-strscpy.html）

## 3) Claims と根拠の対応（レビューの主戦場）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | 通常の文字列コピーが正しく行われる | E-01, E-02 | ○ |
| C-02 | 空文字列のコピーが正しく行われる | E-01（s[0]=='\0'でi=0を返す） | ○ |
| C-03 | バッファサイズ-1と同じ長さの文字列が正しくコピーされる | E-01（forループでn-1文字コピー後に'\0'検出） | ○ |
| C-04 | n=1バッファに空文字列がコピーされる | E-01（i=0でs[0]=='\0'検出、return 0） | ○ |
| C-05 | n=0で0が返却されバッファ書き込みなし | E-01（forループ未実行、i==0でreturn 0） | ○ |
| C-06 | n=1でNULL終端のみ書き込まれUV_E2BIGが返却される | E-01（i=0でs[0]!='\0'の場合、ループ1回でd[0]=s[0]、i=1でループ終了、d[0]='\0'、UV_E2BIG返却） | ○ |
| C-07 | バッファ不足時にUV_E2BIGが返却される | E-01, E-02（UV_E2BIGの返却条件） | ○ |
| C-08 | バッファサイズちょうどの文字列でUV_E2BIG | E-01（n文字のソースはn-1文字目で'\0'に到達せずループ終了） | ○ |
| C-09 | 1文字の文字列が正しくコピーされる | E-01 | ○ |
| C-10 | n=2でソース1文字が正しくコピーされる | E-01（i=0でd[0]=s[0]、i=1でd[1]='\0'検出、return 1） | ○ |
| C-11 | コピー後のバッファがNULL終端される | E-01, E-02（常にNULL終端される仕様） | ○ |
| C-12 | 切り詰め時もNULL終端される | E-01（d[--i]='\0'の実行） | ○ |
| C-13 | コピーバイト数がssize_tで返却される | E-01, E-02（戻り値の型がssize_t） | ○ |
| C-14 | 大きなバッファでの正常コピー | E-01 | ○ |
| C-15 | 単一区切り文字でトークン分割される | E-03（while文で区切り文字検出しトークン返却） | ○ |
| C-16 | 2回目呼び出しで次トークンが返却される | E-03（str==NULLで*itrから継続） | ○ |
| C-17 | 最後のトークン後にNULLが返却される | E-03（*itr==NULLのチェック、35-36行目） | ○ |
| C-18 | 複数区切り文字で正しく分割される | E-03（sep_itrによる内部ループで複数区切り文字をチェック） | ○ |
| C-19 | 区切り文字なしで文字列全体が返却される | E-03（while文が'\0'まで到達、*itr=NULL設定） | ○ |
| C-20 | 空文字列で空文字列が返却される | E-03（tmp=='\0'ですぐwhile終了、*itr=NULL、start=""""返却） | ○ |
| C-21 | 1文字の文字列が処理される | E-03 | ○ |
| C-22 | 先頭が区切り文字で空トークンが返却される | E-03（*tmp==*sep_itrで即座にreturn start、startは先頭） | ○ |
| C-23 | 末尾が区切り文字で正しく処理される | E-03（区切り文字で分割後、次回*itrが末尾'\0'を指す） | ○ |
| C-24 | 連続区切り文字で空トークンが返却される | E-03（各区切り文字位置で個別にトークン返却） | ○ |
| C-25 | str=NULLかつ*itr=NULLでNULL返却 | E-03（start=tmp=*itr=NULL、tmp==NULLでreturn NULL） | ○ |
| C-26 | sep空文字列で文字列全体が返却される | E-03（内部ループ即座に終了、whileが'\0'まで到達） | ○ |
| C-27 | 区切り文字のみの文字列で空トークンが返却される | E-03 | ○ |
| C-28 | 複数回連続呼び出しで全トークン取得 | E-03（*itrによる状態管理） | ○ |
| C-29 | 元の文字列が破壊的に変更される | E-03（*tmp='\0'による書き換え、43行目） | ○ |
| C-30 | 長い文字列の分割が正しく動作する | E-03 | ○ |
| C-31 | 異なる区切り文字で独立した分割が可能 | E-03（strが非NULLなら新規開始） | ○ |
| C-32 | マルチバイト文字がバイト単位でコピーされる | E-01 | △ |
| C-33 | n=2で1文字ソースが正しくコピーされる | E-01 | ○ |
| C-34 | 全て区切り文字の入力で空トークンが返却される | E-03 | ○ |

## 4) 不足情報（Unknown / Missing）
- C-32（マルチバイト文字のバイト単位コピー）：uv__strscpyはバイト単位でchar配列をコピーする実装であり、マルチバイト文字を意識した処理はない。テストケースとしてバイト列がそのままコピーされることの確認は妥当だが、マルチバイト文字の途中で切り詰められた場合の明示的な仕様は存在しない。
  - 候補：Linux kernel strscpy のドキュメント / libuv公式ドキュメント / テスト仕様書

## 5) リスクフラグ（レビュー観点）
- 0: 低リスク - uv__strscpy、uv__strtokともに内部ユーティリティ関数であり、外部入力を直接受け取る箇所ではない
- 1: 中リスク - uv__strscpyのバッファオーバーフロー防止機能はセキュリティ上重要であり、テストケースの網羅性が求められる
- 0: 低リスク - uv__strtokは標準ライブラリのstrtok_r相当の再実装であり、既知のパターンに基づく

## 6) レビュアーチェックリスト（最小）
- [ ] uv__strscpyのn=0, n=1の境界値テストケース（UT-STR-005, UT-STR-006）が正しい期待結果を記述しているか確認
- [ ] uv__strscpyの切り詰め時のNULL終端位置（d[n-2]）が正しいか確認
- [ ] uv__strtokの連続区切り文字・先頭/末尾区切り文字のテストケース（UT-STR-022, UT-STR-023, UT-STR-024）が標準strtok_rの挙動と異なることを認識しているか確認（strtok_rは空トークンをスキップするが、uv__strtokは空トークンを返す）
- [ ] SSIZE_MAXを超えるケース（コード上のi > SSIZE_MAXチェック）のテスト実行可能性を検討
- [ ] マルチバイト文字の途中切断ケースの追加テストが必要か検討
