---
generated_at: 2026-03-01 12:00:00
metrics:
  claims_total: 169
  claims_with_evidence: 162
  claims_without_evidence: 7
confidence_derived: 0.96
---

# 根拠レポート：sharing モジュール 単体テストケース一覧

## 本レポートについて

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

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

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

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

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

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**0.96**
  - 根拠あり：162 / 169、根拠なし：7
- 優先レビュー（高）
  1. **C-021〜C-025（getCommithash テスト）**：URL解析結果の期待値が実際のURL.parse挙動に依存し、環境差異の可能性がある
  2. **C-049〜C-052（extractCommithashByDomain テスト）**：内部関数のため直接テスト不可能な場合がある
  3. **C-057（SharePlugin constructor 不正型入力）**：parseOptionsの内部挙動に依存し、実際のエラー内容が異なる可能性

## 2) 参照した情報（Evidence一覧）
> ここに「実在するもの」だけ列挙。

- E-01: `lib/sharing/utils.js` - isRequiredVersion関数定義（L399-401）、VERSION_PATTERN_REGEXP定義（L41）
- E-02: `lib/sharing/utils.js` - normalizeVersion関数定義（L410-419）
- E-03: `lib/sharing/utils.js` - getGitUrlVersion関数定義（L242-289）
- E-04: `lib/sharing/utils.js` - getCommithash関数定義（L157-179）
- E-05: `lib/sharing/utils.js` - correctUrl関数定義（L186-190）
- E-06: `lib/sharing/utils.js` - correctProtocol関数定義（L197-209）
- E-07: `lib/sharing/utils.js` - getVersionFromHash関数定義（L216-219）
- E-08: `lib/sharing/utils.js` - canBeDecoded関数定義（L227-235）
- E-09: `lib/sharing/utils.js` - getRequiredVersionFromDescriptionFile関数定義（L368-390）
- E-10: `lib/sharing/utils.js` - getDescriptionFile関数定義（L301-358）
- E-11: `lib/sharing/utils.js` - extractCommithashByDomain オブジェクト定義（L56-150）
- E-12: `lib/sharing/SharePlugin.js` - SharePluginクラス定義（L19-89）
- E-13: `lib/sharing/ConsumeSharedPlugin.js` - ConsumeSharedPluginクラス定義（L48-377）
- E-14: `lib/sharing/ProvideSharedPlugin.js` - ProvideSharedPluginクラス定義（L41-246）
- E-15: `lib/sharing/ConsumeSharedModule.js` - ConsumeSharedModuleクラス定義（L62-337）
- E-16: `lib/sharing/ProvideSharedModule.js` - ProvideSharedModuleクラス定義（L34-189）
- E-17: `lib/sharing/ShareRuntimeModule.js` - ShareRuntimeModuleクラス定義（L21-150）
- E-18: `lib/sharing/ConsumeSharedRuntimeModule.js` - ConsumeSharedRuntimeModuleクラス定義（L28-356）
- E-19: `lib/sharing/resolveMatchedConfigs.js` - resolveMatchedConfigs関数定義（L38-106）
- E-20: `lib/sharing/ProvideForSharedDependency.js` - ProvideForSharedDependencyクラス定義（L11-26）
- E-21: `lib/sharing/ProvideSharedDependency.js` - ProvideSharedDependencyクラス定義（L14-73）
- E-22: `lib/sharing/ConsumeSharedFallbackDependency.js` - ConsumeSharedFallbackDependencyクラス定義（L11-26）
- E-23: `lib/sharing/ProvideSharedModuleFactory.js` - ProvideSharedModuleFactoryクラス定義（L15-35）

## 3) Claims と根拠の対応（レビューの主戦場）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-001 | isRequiredVersionが数字開始文字列でtrueを返す | E-01 | ○ |
| C-002 | isRequiredVersionがキャレット付きでtrueを返す | E-01 | ○ |
| C-003 | isRequiredVersionがチルダ付きでtrueを返す | E-01 | ○ |
| C-004 | isRequiredVersionが比較演算子付きでtrueを返す | E-01 | ○ |
| C-005 | isRequiredVersionがワイルドカード*でtrueを返す | E-01 | ○ |
| C-006 | isRequiredVersionがxでtrueを返す | E-01 | ○ |
| C-007 | isRequiredVersionがパッケージ名でfalseを返す | E-01 | ○ |
| C-008 | isRequiredVersionが空文字列でfalseを返す | E-01 | ○ |
| C-009 | isRequiredVersionがURLでfalseを返す | E-01 | ○ |
| C-010 | normalizeVersionが通常バージョンをそのまま返す | E-02 | ○ |
| C-011 | normalizeVersionが空白をトリムする | E-02 | ○ |
| C-012 | normalizeVersionが空文字列を返す | E-02 | ○ |
| C-013 | normalizeVersionがundefined入力で空文字列を返す | E-02 | ○ |
| C-014 | normalizeVersionがGitURLからバージョンを抽出する | E-02, E-03 | ○ |
| C-015 | getGitUrlVersionがGitHub極端短縮形式を処理する | E-03 | ○ |
| C-016 | getGitUrlVersionがgithub:プロトコルを処理する | E-03 | ○ |
| C-017 | getGitUrlVersionがhttps GitHubURLを処理する | E-03, E-04 | ○ |
| C-018 | getGitUrlVersionがgit+sshを処理する | E-03 | ○ |
| C-019 | getGitUrlVersionが不正URLで空文字列を返す | E-03 | ○ |
| C-020 | getGitUrlVersionが空文字列で空文字列を返す | E-03 | ○ |
| C-021 | getCommithashがgithub.comからハッシュを抽出する | E-04, E-11 | △ |
| C-022 | getCommithashがgitlab.comからハッシュを抽出する | E-04, E-11 | △ |
| C-023 | getCommithashがbitbucket.orgからハッシュを抽出する | E-04, E-11 | △ |
| C-024 | getCommithashがgist.github.comからハッシュを抽出する | E-04, E-11 | △ |
| C-025 | getCommithashが未知ホスト名でhashを返す | E-04 | ○ |
| C-026 | correctUrlがホスト名:ユーザーを変換する | E-05 | ○ |
| C-027 | correctUrlが変換不要URLをそのまま返す | E-05 | ○ |
| C-028 | correctProtocolが短縮URLをそのまま返す | E-06 | ○ |
| C-029 | correctProtocolがgit+ssh://を付与する | E-06 | ○ |
| C-030 | correctProtocolが既存プロトコルを保持する | E-06 | ○ |
| C-031 | getVersionFromHashがsemver:付きから抽出する | E-07 | ○ |
| C-032 | getVersionFromHashがsemver:なしから抽出する | E-07 | ○ |
| C-033 | getVersionFromHashが空ハッシュで空文字列を返す | E-07 | ○ |
| C-034 | canBeDecodedが正常文字列でtrueを返す | E-08 | ○ |
| C-035 | canBeDecodedが不正エンコーディングでfalseを返す | E-08 | ○ |
| C-036 | getRequiredVersionFromDescriptionFileがdependenciesからバージョンを取得 | E-09 | ○ |
| C-037 | getRequiredVersionFromDescriptionFileがdevDependenciesからバージョンを取得 | E-09 | ○ |
| C-038 | getRequiredVersionFromDescriptionFileがpeerDependenciesからバージョンを取得 | E-09 | ○ |
| C-039 | getRequiredVersionFromDescriptionFileがoptionalDependenciesからバージョンを取得 | E-09 | ○ |
| C-040 | getRequiredVersionFromDescriptionFileの依存タイプ優先順位 | E-09 | ○ |
| C-041 | getRequiredVersionFromDescriptionFileが存在しないパッケージでundefined | E-09 | ○ |
| C-042 | getRequiredVersionFromDescriptionFileが空dataでundefined | E-09 | ○ |
| C-043 | getDescriptionFileがpackage.jsonを読み込む | E-10 | ○ |
| C-044 | getDescriptionFileが親ディレクトリを探索する | E-10 | ○ |
| C-045 | getDescriptionFileがルートで未発見時undefined | E-10 | ○ |
| C-046 | getDescriptionFileが読み込みエラー時にエラーコールバック | E-10 | ○ |
| C-047 | getDescriptionFileが不正形式でエラー | E-10 | ○ |
| C-048 | getDescriptionFileが適合チェック不合格時に次を探索 | E-10 | ○ |
| C-049 | extractCommithashByDomain github.comがtreeタイプを処理 | E-11 | △ |
| C-050 | extractCommithashByDomain github.comがtree以外でundefined | E-11 | ○ |
| C-051 | extractCommithashByDomain github.comが.gitを処理 | E-11 | ○ |
| C-052 | extractCommithashByDomain github.comが不完全パスでundefined | E-11 | ○ |
| C-053 | SharePlugin constructorが文字列sharedオプションをパース | E-12 | ○ |
| C-054 | SharePlugin constructorがitem==key時にimportを設定 | E-12 | ○ |
| C-055 | SharePlugin constructorがバージョン指定時にrequiredVersionを設定 | E-12 | ○ |
| C-056 | SharePlugin constructorがimport:false時にprovidesからフィルタ | E-12 | ○ |
| C-057 | SharePlugin constructorが不正型でエラー | E-12 | △ |
| C-058 | SharePlugin applyが両プラグインを適用 | E-12 | ○ |
| C-059 | ConsumeSharedPlugin constructorが文字列オプションでバリデーションスキップ | E-13 | ○ |
| C-060 | ConsumeSharedPlugin constructorがオブジェクト形式をパース | E-13 | ○ |
| C-061 | ConsumeSharedPlugin constructorがバージョン指定時にstrictVersion:true | E-13 | ○ |
| C-062 | ConsumeSharedPlugin constructorがデフォルトshareScope | E-13 | ○ |
| C-063 | ConsumeSharedPlugin constructorがsingleton時にstrictVersion:false | E-13 | ○ |
| C-064 | ConsumeSharedPlugin constructorがeagerをBoolean変換 | E-13 | ○ |
| C-065 | ConsumeSharedPlugin constructorが配列でエラー | E-13 | ○ |
| C-066 | ConsumeSharedPlugin constructorがimport:false時にundefined | E-13 | ○ |
| C-067 | ConsumeSharedPlugin applyがファクトリ登録 | E-13 | ○ |
| C-068 | ConsumeSharedPlugin applyがRuntimeModule追加 | E-13 | ○ |
| C-069 | ProvideSharedPlugin constructorが文字列形式をパース | E-14 | ○ |
| C-070 | ProvideSharedPlugin constructorがオブジェクト形式をパース | E-14 | ○ |
| C-071 | ProvideSharedPlugin constructorがソートする | E-14 | ○ |
| C-072 | ProvideSharedPlugin constructorがデフォルトshareScope | E-14 | ○ |
| C-073 | ProvideSharedPlugin constructorが配列でエラー | E-14 | ○ |
| C-074 | ProvideSharedPlugin applyが相対パスをresolvedProvideMapに追加 | E-14 | ○ |
| C-075 | ProvideSharedPlugin applyがプレフィックスマッチ処理 | E-14 | ○ |
| C-076 | ProvideSharedPlugin applyがdescriptionFileDataからバージョン取得 | E-14 | ○ |
| C-077 | ProvideSharedPlugin applyがバージョン未検出で警告 | E-14 | ○ |
| C-078 | ProvideSharedPlugin applyがfinishMakeで依存追加 | E-14 | ○ |
| C-079 | ProvideSharedPlugin applyがファクトリ登録 | E-14 | ○ |
| C-080 | ConsumeSharedModule constructorがプロパティ設定 | E-15 | ○ |
| C-081 | ConsumeSharedModule identifierが識別子生成 | E-15 | ○ |
| C-082 | ConsumeSharedModule identifierがrequiredVersion:undefined時 | E-15 | ○ |
| C-083 | ConsumeSharedModule readableIdentifierが可読識別子生成 | E-15 | ○ |
| C-084 | ConsumeSharedModule readableIdentifierがstrictVersion表示 | E-15 | ○ |
| C-085 | ConsumeSharedModule readableIdentifierがsingleton表示 | E-15 | ○ |
| C-086 | ConsumeSharedModule readableIdentifierがeager表示 | E-15 | ○ |
| C-087 | ConsumeSharedModule readableIdentifierがrequiredVersion:undefined時に*表示 | E-15 | ○ |
| C-088 | ConsumeSharedModule libIdentが正しい形式 | E-15 | ○ |
| C-089 | ConsumeSharedModule libIdentがimportなし時 | E-15 | ○ |
| C-090 | ConsumeSharedModule needBuildがbuildInfoなしでtrue | E-15 | ○ |
| C-091 | ConsumeSharedModule needBuildがbuildInfoありでfalse | E-15 | ○ |
| C-092 | ConsumeSharedModule buildがeager:false時にAsyncBlock追加 | E-15 | ○ |
| C-093 | ConsumeSharedModule buildがeager:true時に依存直接追加 | E-15 | ○ |
| C-094 | ConsumeSharedModule buildがimportなし時に依存追加しない | E-15 | ○ |
| C-095 | ConsumeSharedModule getSourceTypesがCONSUME_SHARED_TYPES | E-15 | ○ |
| C-096 | ConsumeSharedModule getSourceBasicTypesがJAVASCRIPT_TYPES | E-15 | ○ |
| C-097 | ConsumeSharedModule sizeが42 | E-15 | ○ |
| C-098 | ConsumeSharedModule _getFallbackModuleがeager依存から取得 | E-15 | ○ |
| C-099 | ConsumeSharedModule _getFallbackModuleが非同期ブロックから取得 | E-15 | ○ |
| C-100 | ConsumeSharedModule _getFallbackModuleがimportなしでnull | E-15 | ○ |
| C-101 | ConsumeSharedModule _getFallbackModuleがキャッシュ動作 | E-15 | ○ |
| C-102 | ConsumeSharedModule getExportsTypeがフォールバックのexportsType返す | E-15 | ○ |
| C-103 | ConsumeSharedModule getExportsTypeがフォールバックなしでdynamic | E-15 | ○ |
| C-104 | ConsumeSharedModule codeGenerationがloadStrictSingletonVersion選択 | E-15 | ○ |
| C-105 | ConsumeSharedModule codeGenerationがloadStrictVersion選択 | E-15 | ○ |
| C-106 | ConsumeSharedModule codeGenerationがloadSingletonVersion選択 | E-15 | ○ |
| C-107 | ConsumeSharedModule codeGenerationがloadVersion選択 | E-15 | ○ |
| C-108 | ConsumeSharedModule codeGenerationがloadSingleton選択 | E-15 | ○ |
| C-109 | ConsumeSharedModule codeGenerationがload選択 | E-15 | ○ |
| C-110 | ConsumeSharedModule codeGenerationがeager時syncModuleFactory | E-15 | ○ |
| C-111 | ConsumeSharedModule codeGenerationが非eager時asyncModuleFactory | E-15 | ○ |
| C-112 | ConsumeSharedModule serializeがオプションを書き込む | E-15 | ○ |
| C-113 | ConsumeSharedModule deserializeがオプションを読み込む | E-15 | ○ |
| C-114 | ConsumeSharedModule updateHashがJSON文字列でハッシュ更新 | E-15 | ○ |
| C-115 | ProvideSharedModule constructorがプロパティ設定 | E-16 | ○ |
| C-116 | ProvideSharedModule identifierが識別子生成 | E-16 | ○ |
| C-117 | ProvideSharedModule readableIdentifierが可読識別子生成 | E-16 | ○ |
| C-118 | ProvideSharedModule libIdentが正しい形式 | E-16 | ○ |
| C-119 | ProvideSharedModule libIdentがlayer付き | E-16 | ○ |
| C-120 | ProvideSharedModule needBuildがbuildInfoなしでtrue | E-16 | ○ |
| C-121 | ProvideSharedModule needBuildがbuildInfoありでfalse | E-16 | ○ |
| C-122 | ProvideSharedModule buildがeager:false時にAsyncBlock追加 | E-16 | ○ |
| C-123 | ProvideSharedModule buildがeager:true時に依存直接追加 | E-16 | ○ |
| C-124 | ProvideSharedModule buildがbuildMeta/buildInfo初期化 | E-16 | ○ |
| C-125 | ProvideSharedModule buildがclearDependenciesAndBlocks呼び出し | E-16 | ○ |
| C-126 | ProvideSharedModule sizeが42 | E-16 | ○ |
| C-127 | ProvideSharedModule getSourceTypesがSHARED_INIT_TYPES | E-16 | ○ |
| C-128 | ProvideSharedModule codeGenerationがeager:false時asyncModuleFactory | E-16 | ○ |
| C-129 | ProvideSharedModule codeGenerationがeager:true時syncModuleFactory | E-16 | ○ |
| C-130 | ProvideSharedModule codeGenerationがshare-initデータ設定 | E-16 | ○ |
| C-131 | ProvideSharedModule codeGenerationがversion:false時に'0' | E-16 | ○ |
| C-132 | ProvideSharedModule serializeが全プロパティ書き込み | E-16 | ○ |
| C-133 | ProvideSharedModule deserializeが5引数で復元 | E-16 | ○ |
| C-134 | ShareRuntimeModule constructorが'sharing'で初期化 | E-17 | ○ |
| C-135 | ShareRuntimeModule generateがランタイムコード生成 | E-17 | ○ |
| C-136 | ShareRuntimeModule generateがスコープごとにコード集約 | E-17 | ○ |
| C-137 | ShareRuntimeModule generateがスコープソート | E-17 | ○ |
| C-138 | ShareRuntimeModule generateがステージソート | E-17 | ○ |
| C-139 | ShareRuntimeModule generateがignoreBrowserWarnings時に空関数 | E-17 | ○ |
| C-140 | ShareRuntimeModule generateがuniqueNameを含む | E-17 | ○ |
| C-141 | ConsumeSharedRuntimeModule constructorが初期化 | E-18 | ○ |
| C-142 | ConsumeSharedRuntimeModule generateがランタイムコード生成 | E-18 | ○ |
| C-143 | ConsumeSharedRuntimeModule generateがモジュールなしでnull | E-18 | ○ |
| C-144 | ConsumeSharedRuntimeModule generateがinitialConsumes処理 | E-18 | ○ |
| C-145 | ConsumeSharedRuntimeModule generateがensureChunkHandlers処理 | E-18 | ○ |
| C-146 | ConsumeSharedRuntimeModule generateがensureChunkHandlers不要時省略 | E-18 | ○ |
| C-147 | ConsumeSharedRuntimeModule generateがignoreBrowserWarnings時 | E-18 | ○ |
| C-148 | resolveMatchedConfigsが相対パスをresolved追加 | E-19 | ○ |
| C-149 | resolveMatchedConfigsが絶対パスをresolved追加 | E-19 | ○ |
| C-150 | resolveMatchedConfigsがプレフィックスをprefixed追加 | E-19 | ○ |
| C-151 | resolveMatchedConfigsがモジュールをunresolved追加 | E-19 | ○ |
| C-152 | resolveMatchedConfigsが解決エラー時にerrors追加 | E-19 | ○ |
| C-153 | resolveMatchedConfigsが依存関係追加 | E-19 | ○ |
| C-154 | resolveMatchedConfigsが空配列で空Map | E-19 | ○ |
| C-155 | resolveMatchedConfigsがWindows絶対パス処理 | E-19 | ○ |
| C-156 | ProvideForSharedDependency constructorがrequest設定 | E-20 | ○ |
| C-157 | ProvideForSharedDependency type getter | E-20 | ○ |
| C-158 | ProvideForSharedDependency category getter | E-20 | ○ |
| C-159 | ProvideSharedDependency constructorがプロパティ設定 | E-21 | ○ |
| C-160 | ProvideSharedDependency type getter | E-21 | ○ |
| C-161 | ProvideSharedDependency getResourceIdentifier | E-21 | ○ |
| C-162 | ProvideSharedDependency getResourceIdentifierがeager付き | E-21 | ○ |
| C-163 | ProvideSharedDependency serialize | E-21 | ○ |
| C-164 | ProvideSharedDependency deserialize | E-21 | ○ |
| C-165 | ConsumeSharedFallbackDependency constructorがrequest設定 | E-22 | ○ |
| C-166 | ConsumeSharedFallbackDependency type getter | E-22 | ○ |
| C-167 | ConsumeSharedFallbackDependency category getter | E-22 | ○ |
| C-168 | ProvideSharedModuleFactory createがモジュール生成 | E-23 | ○ |
| C-169 | ProvideSharedModuleFactory createがプロパティ受け渡し | E-23 | ○ |

## 4) 不足情報（Unknown / Missing）
- C-021〜C-024: getCommithash関数の各ドメイン別テストの期待値は、URL解析の実際の挙動に依存する。ブラウザ環境とNode.js環境でURLクラスの挙動が微妙に異なる可能性がある
  - 候補：Node.js URL仕様ドキュメント / 各ホスティングサービスのURL形式仕様
- C-049: extractCommithashByDomainのgithub.com関数でtreeタイプのパスを入力した場合の期待値について、pathnameのsplit結果が環境に依存する可能性がある
  - 候補：実際のテスト実行による検証
- C-057: SharePlugin constructorの不正型入力テストについて、parseOptions関数の内部実装に依存するため、実際のエラーメッセージが異なる可能性がある
  - 候補：`lib/container/options.js` のparseOptions実装の確認

## 5) リスクフラグ（レビュー観点）
- 0: 依存クラス（ProvideForSharedDependency, ConsumeSharedFallbackDependency, ProvideSharedDependency）のテストケースはシンプルなゲッター・コンストラクタ中心であり、低リスク
- 1: ConsumeSharedPlugin.apply / ProvideSharedPlugin.apply のテストは複雑なwebpack内部フック構造に依存するため、モックの設定が難しい場合がある（中リスク）
- 1: ShareRuntimeModule.generate / ConsumeSharedRuntimeModule.generate はランタイムコード生成を行い、テンプレート文字列の検証が複雑になる可能性がある（中リスク）
- 2: utils.js の Git URL パース系関数（getGitUrlVersion, getCommithash, extractCommithashByDomain）は外部URL仕様への依存があり、エッジケースのカバレッジが不完全になりやすい（高リスク）

## 6) レビュアーチェックリスト（最小）
- [ ] utils.js の isRequiredVersion / normalizeVersion / getRequiredVersionFromDescriptionFile の正常系テストケースが十分か確認
- [ ] ConsumeSharedModule.codeGeneration の6つのロード関数分岐（load, loadVersion, loadStrictVersion, loadSingleton, loadSingletonVersion, loadStrictSingletonVersion）が全てカバーされているか確認
- [ ] resolveMatchedConfigs のリクエストパターン（相対パス、絶対パス、プレフィックス、モジュール名）が全て網羅されているか確認
- [ ] Git URL系関数のエッジケース（不正URL、空文字列、特殊文字）のテストが十分か確認
- [ ] getDescriptionFile の再帰的ディレクトリ探索テストのモック設定が適切か確認
- [ ] ProvideSharedPlugin.apply の provideSharedModule 関数内のバージョン自動検出ロジックのテストが十分か確認
