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

# 根拠レポート：public-Backup.csv

## 本レポートについて

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

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

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

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

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

---

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

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

- E-01: `public/Remove-DbaBackup.ps1` - バックアップファイル削除コマンド（151行）
- E-02: `public/Get-DbaBackupInformation.ps1` - バックアップ情報取得コマンド（436行）
- E-03: `public/Test-DbaBackupEncrypted.ps1` - バックアップ暗号化チェックコマンド（142行）
- E-04: `public/Find-DbaBackup.ps1` - バックアップファイル検索コマンド（183行）
- E-05: `public/Read-DbaBackupHeader.ps1` - バックアップヘッダー読取コマンド（381行）
- E-06: `public/Get-DbaBackupDevice.ps1` - バックアップデバイス取得コマンド（93行）
- E-07: `public/Format-DbaBackupInformation.ps1` - バックアップ情報フォーマットコマンド（288行）
- E-08: `public/Copy-DbaBackupDevice.ps1` - バックアップデバイスコピーコマンド（244行）
- E-09: `public/Select-DbaBackupInformation.ps1` - バックアップ情報選択コマンド（271行）
- E-10: `public/Measure-DbaBackupThroughput.ps1` - バックアップスループット計測コマンド（213行）
- E-11: `public/Test-DbaBackupInformation.ps1` - バックアップ情報検証コマンド（223行）

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

### Remove-DbaBackup (UT-BAK-001 - UT-BAK-007)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | BackupFileExtensionの先頭ピリオド警告 | E-01 L100-102: `if ($BackupFileExtension -match "^[.]")` | ○ |
| C-02 | 保持期間超過ファイルの削除 | E-01 L107: `Find-DbaBackup ... -RetentionPeriod` | ○ |
| C-03 | CheckArchiveBitでアーカイブ済みのみ削除 | E-01 L107: `-CheckArchiveBit:$CheckArchiveBit` | ○ |
| C-04 | RemoveEmptyBackupFolderで空フォルダ削除 | E-01 L120-149: `if ($RemoveEmptyBackupFolder)` | ○ |
| C-05 | 存在しないパスのエラー処理 | E-04 L144-146: `if (!(Test-Path $Path -PathType 'Container'))` | ○ |
| C-06 | WhatIf機能 | E-01 L110: `if ($PSCmdlet.ShouldProcess(...))` | ○ |
| C-07 | ファイル削除失敗時の警告 | E-01 L113-115: `catch { Write-Message -Level Warning }` | ○ |

### Get-DbaBackupInformation (UT-BAK-008 - UT-BAK-020)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-08 | NoClobberチェック | E-02 L225-231: `if ($true -eq $NoClobber)` | ○ |
| C-09 | SQLインスタンス接続成功 | E-02 L234-239: `$server = Connect-DbaInstance` | ○ |
| C-10 | 接続失敗時のエラー | E-02 L236-239: `Stop-Function -Category ConnectionError` | ○ |
| C-11 | XMLファイルからのインポート | E-02 L248-261: `Import-Clixml -Path $f` | ○ |
| C-12 | 存在しないファイルのインポート警告 | E-02 L258-260: `Write-Message -Level Warning` | ○ |
| C-13 | MaintenanceSolution処理 | E-02 L280-291, L323-329: Ola形式フォルダ処理 | ○ |
| C-14 | IgnoreLogBackup処理 | E-02 L337-340: `$Files = $Files \| Where-Object` | ○ |
| C-15 | IgnoreDiffBackup処理 | E-02 L342-345: `-notlike '*\DIFF\*'` | ○ |
| C-16 | Anonymise処理 | E-02 L414-427: `Get-HashString` | ○ |
| C-17 | ExportPath処理 | E-02 L428-433: `Export-Clixml -Path $ExportPath` | ○ |
| C-18 | DatabaseNameフィルタ | E-02 L411-413: `Where-Object { $_.Database -in $DatabaseName }` | ○ |
| C-19 | SourceInstanceフィルタ | E-02 L407-409: `$_.InstanceName -in $SourceInstance` | ○ |
| C-20 | クラウドストレージURL検出 | E-02 L267: `if ($Path[0] -match '^https?://' -or $Path[0] -match '^s3://')` | ○ |

### Test-DbaBackupEncrypted (UT-BAK-021 - UT-BAK-026)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-21 | 暗号化なしの検出 | E-03 L88: `$encrypted = $false` | ○ |
| C-22 | バックアップ暗号化の検出 | E-03 L99-105: `KeyAlgorithm`, `EncryptorThumbprint` | ○ |
| C-23 | TDE暗号化の検出 | E-03 L107-116: `TDEThumbprint` | ○ |
| C-24 | 圧縮状態の検出 | E-03 L138: `Compressed = ($results \| Select-Object -First 1).Compressed` | ○ |
| C-25 | 接続失敗時のエラー | E-03 L79-84: `Stop-Function -Category ConnectionError` | ○ |
| C-26 | 無効ファイルのエラー | E-03 L95-97: `Stop-Function -Continue` | ○ |

### Find-DbaBackup (UT-BAK-027 - UT-BAK-037)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-27 | 先頭ピリオド警告 | E-04 L140-142: `if ($BackupFileExtension -match "^[.]")` | ○ |
| C-28 | 存在しないパスエラー | E-04 L144-146: `Stop-Function -Message "$Path not found"` | ○ |
| C-29 | 時間単位保持期間(h) | E-04 L130: `'h' { [datetime]$ReturnDatetime = (Get-Date).AddHours( - $Value) }` | ○ |
| C-30 | 日単位保持期間(d) | E-04 L131: `'d' { [datetime]$ReturnDatetime = (Get-Date).AddDays( - $Value) }` | ○ |
| C-31 | 週単位保持期間(w) | E-04 L132: `'w' { [datetime]$ReturnDatetime = (Get-Date).AddDays( - $Value * 7) }` | ○ |
| C-32 | 月単位保持期間(m) | E-04 L133: `'m' { [datetime]$ReturnDatetime = (Get-Date).AddMonths( - $Value) }` | ○ |
| C-33 | 無効単位エラー | E-04 L119-121: `throw "RetentionPeriod ... units invalid!"` | ○ |
| C-34 | 無効値エラー | E-04 L124-126: `throw "RetentionPeriod ... format invalid!"` | ○ |
| C-35 | アーカイブビットフィルタ | E-04 L162-173: `DbaArchiveBitFilter` | ○ |
| C-36 | 拡張子フィルタ | E-04 L177: `Get-ChildItem $Path -Filter "*.$BackupFileExtension"` | ○ |
| C-37 | 対象ファイルなし | E-04 L177-178: パイプライン出力が空の場合 | ○ |

### Read-DbaBackupHeader (UT-BAK-038 - UT-BAK-048)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-38 | フォルダパスエラー | E-05 L205-210: `Stop-Function -Category InvalidArgument` | ○ |
| C-39 | SQLインスタンス接続 | E-05 L213-218: `Connect-DbaInstance` | ○ |
| C-40 | 接続失敗エラー | E-05 L215-218: `Stop-Function -Category ConnectionError` | ○ |
| C-41 | ヘッダー読み取り | E-05 L236: `$restore.ReadBackupHeader($server)` | ○ |
| C-42 | 並列処理 | E-05 L293: `$runspacePool = [runspacefactory]::CreateRunspacePool(1, 10, ...)` | ○ |
| C-43 | Simple出力 | E-05 L364-365: `if ($Simple) { $dataTable \| Select-Object ... }` | ○ |
| C-44 | FileList出力 | E-05 L366-367: `elseif ($FileList) { $dataTable.filelist }` | ○ |
| C-45 | Azure Blob対応 | E-05 L299-303: `if ($file -like 'http*' -or $file -like 's3*') { $deviceType = 'URL' }` | ○ |
| C-46 | S3対応 | E-05 L299-303: `$file -like 's3*'` | ○ |
| C-47 | 存在しないファイル警告 | E-05 L333-335: `Write-Message -Level Warning` | ○ |
| C-48 | dbasize型変換 | E-05 L246-258: `$row.BackupSize = [dbasize]$backupsize` | ○ |

### Get-DbaBackupDevice (UT-BAK-049 - UT-BAK-053)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-49 | バックアップデバイス取得 | E-06 L84: `foreach ($backupDevice in $server.BackupDevices)` | ○ |
| C-50 | 複数インスタンス対応 | E-06 L77: `foreach ($instance in $SqlInstance)` | ○ |
| C-51 | プロパティ付与 | E-06 L85-87: `Add-Member -Force -InputObject $backupDevice` | ○ |
| C-52 | 接続失敗時継続 | E-06 L78-82: `Stop-Function ... -Continue` | ○ |
| C-53 | デバイスなし | E-06 L84: foreachループが空の場合 | ○ |

### Format-DbaBackupInformation (UT-BAK-054 - UT-BAK-070)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-54 | 文字列型DB名置換 | E-07 L163-165: `$ReplaceDatabaseNameType = 'single'` | ○ |
| C-55 | ハッシュテーブル型DB名置換 | E-07 L166-168: `$ReplaceDatabaseNameType = 'multi'` | ○ |
| C-56 | パス正規化 | E-07 L173-184: `$DataFileDirectory = $DataFileDirectory -Replace '.$'` | ○ |
| C-57 | DB名置換基本 | E-07 L211-213: `$History.Database = $ReplaceDatabaseName` | ○ |
| C-58 | 複数DB名置換 | E-07 L214-219: `$ReplaceDatabaseName[$History.Database]` | ○ |
| C-59 | DB名プレフィックス | E-07 L220: `$History.Database = $DatabaseNamePrefix + $History.Database` | ○ |
| C-60 | DataFileDirectory | E-07 L248-251: `if ($_.Type -eq 'D')` | ○ |
| C-61 | LogFileDirectory | E-07 L252-257: `if ($_.Type -eq 'L')` | ○ |
| C-62 | DestinationFileStreamDirectory | E-07 L258-264: `if ($_.Type -eq 'S')` | ○ |
| C-63 | DatabaseFilePrefix | E-07 L271: `$DatabaseFilePrefix + $baseName` | ○ |
| C-64 | DatabaseFileSuffix | E-07 L271: `$baseName + $DatabaseFileSuffix` | ○ |
| C-65 | ReplaceDbNameInFile | E-07 L242-244: `$baseName = $baseName -Replace $History.OriginalDatabase` | ○ |
| C-66 | RebaseBackupFolder | E-07 L275-283: `$History.fullname[$j] = $RebaseBackupFolder` | ○ |
| C-67 | FileMapping | E-07 L223-226: `if ($null -ne $FileMapping[$_.LogicalName])` | ○ |
| C-68 | タイプ名変換 | E-07 L204-208: `switch ($History.Type)` | ○ |
| C-69 | 元情報保持 | E-07 L191-203: `Add-Member -Name 'OriginalDatabase'` | ○ |
| C-70 | Linux対応 | E-07 L156: `[string]$PathSep = '\'` | ○ |

### Copy-DbaBackupDevice (UT-BAK-071 - UT-BAK-081)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-71 | Linuxチェック | E-08 L106-109: `if (-not $script:isWindows)` | ○ |
| C-72 | ソース接続 | E-08 L110-115: `$sourceServer = Connect-DbaInstance` | ○ |
| C-73 | ソース接続失敗 | E-08 L112-115: `Stop-Function -Category ConnectionError` | ○ |
| C-74 | 宛先接続 | E-08 L124-128: `$destServer = Connect-DbaInstance` | ○ |
| C-75 | デバイスコピー成功 | E-08 L232-233: `$copyBackupDeviceStatus.Status = "Successful"` | ○ |
| C-76 | 既存デバイススキップ | E-08 L149-157: `$copyBackupDeviceStatus.Status = "Skipped"` | ○ |
| C-77 | Force指定時置換 | E-08 L158-170: `$destServer.BackupDevices[$deviceName].Drop()` | ○ |
| C-78 | 特定デバイスコピー | E-08 L145-147: `if ($BackupDevice -and $BackupDevice -notcontains $deviceName)` | ○ |
| C-79 | デフォルトパス使用 | E-08 L194-212: `$backupDirectory = $destServer.BackupDirectory` | ○ |
| C-80 | WhatIf機能 | E-08 L214: `if ($Pscmdlet.ShouldProcess(...))` | ○ |
| C-81 | コピー失敗時エラー | E-08 L218-222: `$copyBackupDeviceStatus.Status = "Failed"` | ○ |

### Select-DbaBackupInformation (UT-BAK-082 - UT-BAK-094)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-82 | ContinuePoints設定 | E-09 L124-138: `$IgnoreFull = $true` | ○ |
| C-83 | パイプライン処理 | E-09 L140-142: `$internalHistory += $BackupHistory` | ○ |
| C-84 | RestoreTime属性追加 | E-09 L145-149: `Add-Member -Name 'RestoreTime'` | ○ |
| C-85 | Fullバックアップ選択 | E-09 L204-212: `Sort-Object -Property LastLsn -Descending \| Select-Object -First 1` | ○ |
| C-86 | 差分バックアップ選択 | E-09 L221-233: `$_.DatabaseBackupLSN -eq $Full.CheckpointLSN` | ○ |
| C-87 | ログバックアップ選択 | E-09 L252-267: `$_.LastLSN -ge $LogBaseLsn` | ○ |
| C-88 | IgnoreLogs | E-09 L252: `if ($false -eq $IgnoreLogs)` | ○ |
| C-89 | IgnoreDiffs | E-09 L221: `if ($false -eq $IgnoreDiffs)` | ○ |
| C-90 | DatabaseNameフィルタ | E-09 L150-153, L177-181 | ○ |
| C-91 | ServerNameフィルタ | E-09 L156-164: `$InternalHistory = $InternalHistory \| Where-Object` | ○ |
| C-92 | AGフィルタ | E-09 L157-159: `$_.AvailabilityGroupName -in $servername` | ○ |
| C-93 | Fullバックアップなしエラー | E-09 L208-211: `Stop-Function -Message "Fullname property not found"` | ○ |
| C-94 | 継続リストア処理 | E-09 L243-246: `$ContinuePoints \| Where-Object { $_.Database -eq $DatabaseFilter }` | ○ |

### Measure-DbaBackupThroughput (UT-BAK-095 - UT-BAK-105)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-95 | SQLインスタンス接続 | E-10 L145-148: `$server = Connect-DbaInstance` | ○ |
| C-96 | 接続失敗継続 | E-10 L147-149: `Stop-Function ... -Continue` | ○ |
| C-97 | Databaseフィルタ | E-10 L151-155: `$server.Databases \| Where-Object Name -in $Database` | ○ |
| C-98 | ExcludeDatabaseフィルタ | E-10 L157-159: `Where-Object Name -NotIn $ExcludeDatabase` | ○ |
| C-99 | スループット計算 | E-10 L173-179: `$throughput = $history.TotalSize.Megabyte / $timeTaken.TotalSeconds` | ○ |
| C-100 | Sinceフィルタ | E-10 L166-167: `Get-DbaDbBackupHistory ... -Since $Since` | ○ |
| C-101 | Lastフィルタ | E-10 L169: `Get-DbaDbBackupHistory ... -Last:$Last` | ○ |
| C-102 | Typeフィルタ | E-10 L167, L169: `-Type $Type` | ○ |
| C-103 | DeviceTypeフィルタ | E-10 L167, L169: `-DeviceType $DeviceType` | ○ |
| C-104 | ゼロ時間バックアップ | E-10 L175-177: `if ($timeTaken.TotalMilliseconds -eq 0)` | ○ |
| C-105 | DbaSize型 | E-10 L200-204: `[DbaSize]([System.Math]::Round($measureMb.Average, 2) * 1024 * 1024)` | ○ |

### Test-DbaBackupInformation (UT-BAK-106 - UT-BAK-120)
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-106 | SQLインスタンス接続 | E-11 L107-112: `$RestoreInstance = Connect-DbaInstance` | ○ |
| C-107 | 接続失敗エラー | E-11 L109-112: `Stop-Function -Category ConnectionError` | ○ |
| C-108 | IsVerified=True設定 | E-11 L214-216: `$_.IsVerified = $True` | ○ |
| C-109 | 複数ソースDB検出 | E-11 L133-136: `if (( $DbHistory \| Sort-Object ... ).Count -gt 1)` | ○ |
| C-110 | 既存DBエラー | E-11 L142-145: `Write-Message -Level Warning -Message "Database $Database exists"` | ○ |
| C-111 | WithReplace機能 | E-11 L142: `$WithReplace -ne $true` | ○ |
| C-112 | ファイル競合検出 | E-11 L161-163: `$path -in $OtherFileCheck` | ○ |
| C-113 | 既存ファイル検出 | E-11 L164-167: `$path -in $DBHistoryPhysicalPathsExists` | ○ |
| C-114 | ディレクトリ自動作成 | E-11 L182-183: `New-DbaDirectory -SqlInstance $RestoreInstance -Path $ParentPath` | ○ |
| C-115 | OutputScriptOnly機能 | E-11 L179: `if (-not $OutputScriptOnly)` | ○ |
| C-116 | LSNチェーン検証 | E-11 L196-200: `if (!($DbHistory \| Test-DbaLsnChain))` | ○ |
| C-117 | Continue時LSN検証スキップ | E-11 L196: `if ($true -ne $Continue)` | ○ |
| C-118 | ファイルアクセス検証 | E-11 L205-212: `if ($path.FileExists -eq $false)` | ○ |
| C-119 | VerifyOnly機能 | E-11 L141: `If ($VerifyOnly -ne $true)` | ○ |
| C-120 | クラウドストレージ対応 | E-11 L208: `($path.FilePath -notlike 'http*') -and ($path.FilePath -notlike 's3*')` | ○ |

## 4) 不足情報（Unknown / Missing）
- なし - すべてのテストケースはソースコードから直接抽出されました

## 5) リスクフラグ（レビュー観点）
- **0（低リスク）** - すべてのテストケースはソースコードの実装に基づいて生成されています

テストケース設計における注意点：
1. 一部のテストケースは実際のSQLインスタンス接続が必要
2. ファイルシステム操作を伴うテストは環境準備が必要
3. クラウドストレージ（Azure/S3）関連テストは認証情報が必要

## 6) レビュアーチェックリスト（最小）
- [ ] 各関数のパラメータがテストケースでカバーされているか確認
- [ ] 正常系/異常系/境界値のバランスが適切か確認
- [ ] 優先度「高」のテストケースが重要なビジネスロジックをカバーしているか確認
- [ ] エラーハンドリングのテストケースが適切か確認
- [ ] パイプライン入力のテストケースが含まれているか確認
- [ ] ShouldProcess（WhatIf/Confirm）のテストケースが含まれているか確認
