---
generated_at: 2026-02-18 10:30:00
metrics:
  claims_total: 45
  claims_with_evidence: 45
  claims_without_evidence: 0
confidence_derived: 1.00
---

# 根拠レポート: private-scripts

## 本レポートについて

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

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

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

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

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

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）: **1.00**
  - 根拠あり: 45 / 45、根拠なし: 0
- 優先レビュー（高）
  1. なし: すべてのテストケースにソースコードの根拠あり

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

- E-01: `private/scripts/cmdlets.ps1` - Import-DbaCmdletを使用したcmdlet登録スクリプト（12行）
- E-02: `private/scripts/dbatools-maintenance.ps1` - メンテナンスタスク実行用バックグラウンドRunspaceスクリプト（46行）
- E-03: `private/scripts/insertTepp.ps1` - Tab補完（TEPP）のArgument Completer登録スクリプト（90行）
- E-04: `private/scripts/logfilescript.ps1` - ログ/エラーファイル管理用バックグラウンドRunspaceスクリプト（145行）
- E-05: `private/scripts/message-transforms.ps1` - メッセージ型変換用のTransform登録スクリプト（18行）
- E-06: `private/scripts/updateTeppAsync.ps1` - 非同期TEPPキャッシュ更新用バックグラウンドRunspaceスクリプト（84行）

## 3) Claims と根拠の対応（レビューの主戦場）

### cmdlets.ps1 関連（UT-PRS-001 ~ UT-PRS-003）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | cmdletsスクリプトが正常に実行されること | E-01: Import-DbaCmdlet呼び出し（行10-12） | ○ |
| C-02 | HelpFileが存在しない場合のエラー処理 | E-01: $commonParam.HelpFile参照（行6） | ○ |
| C-03 | 不正なType指定時のエラー処理 | E-01: -Type パラメータ使用（行10-12） | ○ |

### dbatools-maintenance.ps1 関連（UT-PRS-004 ~ UT-PRS-007）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-04 | メンテナンスタスクが正常に実行されること | E-02: MaintenanceHost.GetNextTask, ScriptBlock.Invoke（行25-27） | ○ |
| C-05 | タスク実行中に例外が発生した場合の処理 | E-02: try-catch, Write-Message呼び出し（行26-29） | ○ |
| C-06 | Runspaceが停止状態の場合にループを抜けること | E-02: RunspaceHost.State確認, break（行19-21） | ○ |
| C-07 | タスクが0件の場合の処理 | E-02: while条件でGetNextTaskがnullなら終了（行25） | ○ |

### insertTepp.ps1 関連（UT-PRS-008 ~ UT-PRS-012）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-08 | TEPP有効時にArgument Completerが登録されること | E-03: Register-DbaTeppArgumentCompleter呼び出し（行13-89） | ○ |
| C-09 | TEPP無効時にはArgument Completerが登録されないこと | E-03: $script:TEPP=$false条件（行2-6） | ○ |
| C-10 | 自動TEPPパラメータ(Database)が正しく登録されること | E-03: -Parameter Database -Name Database（行23） | ○ |
| C-11 | 明示的TEPPパラメータ(Delimiter)が正しく登録されること | E-03: Import-DbaCsv, Delimiter登録（行73） | ○ |
| C-12 | コマンドが存在しない場合の処理 | E-03: $names変数からコマンド取得（行8-10） | ○ |

### logfilescript.ps1 関連（UT-PRS-013 ~ UT-PRS-027）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-13 | エラーファイルがMaxErrorFileBytes以下の場合は削除されないこと | E-04: Clean-ErrorXml内の条件判定（行14） | ○ |
| C-14 | エラーファイルがMaxErrorFileBytesを超える場合に古いファイルから削除されること | E-04: Clean-ErrorXml内のRemove-Item（行19） | ○ |
| C-15 | エラーファイルが0件の場合の処理 | E-04: $files取得後の処理（行12-13） | ○ |
| C-16 | メッセージファイル数がMaxMessagefileCount以下の場合は削除されないこと | E-04: Clean-MessageLog内の条件判定（行34） | ○ |
| C-17 | メッセージファイル数がMaxMessagefileCountを超える場合に古いファイルから削除されること | E-04: Clean-MessageLog内のRemove-Item（行39） | ○ |
| C-18 | MaxMessagefileCountが0の場合は何も削除されないこと | E-04: 早期return条件（行31） | ○ |
| C-19 | 古いログファイルが削除されること | E-04: Clean-GlobalLog内のMaxLogFileAge判定（行52） | ○ |
| C-20 | フォルダサイズがMaxTotalFolderSizeを超える場合に古いファイルから削除されること | E-04: Clean-GlobalLog内のMaxTotalFolderSize判定（行59） | ○ |
| C-21 | ログファイルが存在しない場合の処理 | E-04: $files null チェック（行56） | ○ |
| C-22 | エラーキューからエラーがデキューされてXMLにエクスポートされること | E-04: OutQueueError.TryDequeue, Export-Clixml（行100-107） | ○ |
| C-23 | ログキューからログがデキューされてファイルに追記されること | E-04: OutQueueLog.TryDequeue, Add-Content（行115-128） | ○ |
| C-24 | ログファイルがMaxMessagefileBytesを超えた場合に新規ファイルが作成されること | E-04: ファイルサイズ判定, $num_Message++（行117-122） | ○ |
| C-25 | LoggingPathが存在しない場合にディレクトリが作成されること | E-04: New-Item -ItemType Directory（行80） | ○ |
| C-26 | Runspaceが停止状態の場合にループを抜けること | E-04: RunspaceHost.State確認, break（行74-76） | ○ |
| C-27 | キューが空の場合の処理 | E-04: while条件でCount>0を確認（行100, 115） | ○ |

### message-transforms.ps1 関連（UT-PRS-028 ~ UT-PRS-032）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-28 | DbaInstanceParameter型がFullSmoNameに変換されること | E-05: TargetType='DbaInstanceParameter', FullSmoName返却（行1-3） | ○ |
| C-29 | SMO.Server型がFullSmoNameに変換されること | E-05: TargetType='Smo.Server', FullSmoName返却（行4-6） | ○ |
| C-30 | SqlExceptionが適切にアンラップされること | E-05: InnerException走査, SqlException判定（行8-17） | ○ |
| C-31 | SqlExceptionを含まない例外はそのまま返却されること | E-05: return $args[0]（行17） | ○ |
| C-32 | InnerExceptionがnullの例外の処理 | E-05: while $item.InnerException 条件（行12） | ○ |

### updateTeppAsync.ps1 関連（UT-PRS-033 ~ UT-PRS-045）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-33 | LastUpdateが初期値のサーバーが返却されること | E-06: Get-PriorityServer内のDateTime(1,1,1,1,1,1)判定（行13） | ○ |
| C-34 | InstanceAccessが空の場合の処理 | E-06: Where-Object パイプライン処理（行13） | ○ |
| C-35 | 更新間隔を超過しタイムアウト前のサーバーが返却されること | E-06: Get-ActionableServer内の2つのWhere-Object（行17） | ○ |
| C-36 | タイムアウトを超過したサーバーは返却されないこと | E-06: TeppUpdateTimeout判定（行17） | ○ |
| C-37 | サーバー接続後にTeppGatherScriptsFastが実行されること | E-06: TeppGatherScriptsFast foreach（行41-45） | ○ |
| C-38 | サーバー接続後にTeppGatherScriptsSlowが実行されること | E-06: TeppGatherScriptsSlow foreach（行48-52） | ○ |
| C-39 | 処理完了後にLastUpdateが更新されること | E-06: $instance.LastUpdate = Get-Date（行56） | ○ |
| C-40 | サーバー接続失敗時にエラーログが出力されて継続すること | E-06: try-catch, Write-Message, continue（行32-37） | ○ |
| C-41 | TEPPスクリプト実行失敗時にエラーログが出力されて継続すること | E-06: try-catch, Write-Message（行44-45, 51-52） | ○ |
| C-42 | TeppUdaterStopperがtrueの場合に処理を中断すること | E-06: TeppUdaterStopper確認, break（行27, 30） | ○ |
| C-43 | TEPP無効時にRunspaceが登録されないこと | E-06: 条件式 TeppAsyncDisabled or TeppDisabled（行1） | ○ |
| C-44 | TEPP有効時にRunspaceが登録・開始されること | E-06: Register-DbaRunspace, Start-DbaRunspace（行82-83） | ○ |
| C-45 | Runspaceが停止状態の場合にループを抜けること | E-06: RunspaceHost.State確認, break（行66-68） | ○ |

## 4) 不足情報（Unknown / Missing）
- なし: すべてのテストケースはソースコードに基づいて生成されています

## 5) リスクフラグ（レビュー観点）
- 0: 低リスク - すべてのテストケースがソースコードの実装に基づいている

### 追加レビュー推奨項目
1. **バックグラウンドRunspaceのテスト**: dbatools-maintenance.ps1, logfilescript.ps1, updateTeppAsync.ps1は非同期実行されるため、実際のテスト環境でのタイミング依存性に注意
2. **外部依存性**: 以下の外部依存を持つテストケースは、モック化または統合テストでの検証が必要
   - SMO Server接続（updateTeppAsync.ps1）
   - ファイルシステム操作（logfilescript.ps1）
   - .NET型（Dataplat.Dbatools.*）
3. **TEPP関連**: insertTepp.ps1のテストは、TabExpansionPlusPlusモジュールの存在有無により動作が異なる

## 6) レビュアーチェックリスト（最小）
- [ ] テストケースの網羅性: 各スクリプトの主要機能がカバーされているか確認
- [ ] 異常系テストの妥当性: エラーハンドリングのテストケースが適切か確認
- [ ] 境界値テストの妥当性: 空コレクション、ゼロ値などのエッジケースが適切にテストされているか確認
- [ ] 優先度の妥当性: 高優先度のテストケースがビジネスクリティカルな機能を反映しているか確認
- [ ] テスト実行可能性: PowerShell v3互換性を考慮したテスト実装が可能か確認

## 7) 対象ファイル詳細

### cmdlets.ps1
- **役割**: dbatools固有のPowerShell cmdletをモジュールに登録するスクリプト
- **登録cmdlet**: Write-Message, Select-DbaObject, Set-DbatoolsConfig
- **テストケース数**: 3

### dbatools-maintenance.ps1
- **役割**: バックグラウンドでメンテナンスタスクを実行するRunspace管理スクリプト
- **主要機能**: MaintenanceHostからタスクを取得し、定期的に実行
- **テストケース数**: 4

### insertTepp.ps1
- **役割**: Tab補完（TEPP: Tab Expansion Plus Plus）のArgument Completerを登録
- **登録パラメータ**: Database, Login, Job, SqlInstance など50以上のパラメータ
- **テストケース数**: 5

### logfilescript.ps1
- **役割**: エラーログとメッセージログのファイル管理を行うバックグラウンドRunspace
- **主要機能**:
  - エラーのXMLエクスポート
  - メッセージログのCSV出力
  - ログローテーション
  - 古いログの自動削除
- **内部関数**: Clean-ErrorXml, Clean-MessageLog, Clean-GlobalLog
- **テストケース数**: 15

### message-transforms.ps1
- **役割**: メッセージ出力時の型変換を登録
- **主要機能**:
  - DbaInstanceParameter -> FullSmoName変換
  - SMO.Server -> FullSmoName変換
  - SqlExceptionのアンラップ
- **テストケース数**: 5

### updateTeppAsync.ps1
- **役割**: TEPPキャッシュを非同期で更新するバックグラウンドRunspace
- **主要機能**:
  - 優先サーバーの取得
  - サーバー接続とTEPPスクリプト実行
  - キャッシュの定期更新
- **内部関数**: Get-PriorityServer, Get-ActionableServer, Update-TeppCache
- **テストケース数**: 13
