Merge pull request 'feat(code-review-nuget): 遇到 JSC 開頭套件時必須先詢問使用者是否繼續' (#17) from develop into master

Reviewed-on: #17
Reviewed-by: 系統管理員 <1+admin@noreply.localhost>
This commit was merged in pull request #17.
This commit is contained in:
2026-06-24 01:36:23 +00:00
+4 -1
View File
@@ -14,6 +14,7 @@ argument-hint: "[<solution-or-project>] [--include-prerelease] [--no-dedupe] [--
- 修改前先輸出簡短執行計畫;除非使用者要求確認、遇到多個 solution 無法判斷、或編譯失敗需要取捨,否則依計畫執行。 - 修改前先輸出簡短執行計畫;除非使用者要求確認、遇到多個 solution 無法判斷、或編譯失敗需要取捨,否則依計畫執行。
- 每個套件都要留下結果:已更新 / 已降階到可編譯版本 / 已略過 / 已回復 / 已移除重複參考,以及對應版本與驗證指令。 - 每個套件都要留下結果:已更新 / 已降階到可編譯版本 / 已略過 / 已回復 / 已移除重複參考,以及對應版本與驗證指令。
- 不主動 commit、push 或開 PR;使用者明確要求時才做。 - 不主動 commit、push 或開 PR;使用者明確要求時才做。
- **遇到 `JSC` 開頭的套件(套件 id 前綴為 `JSC`)時,必須先通知使用者並詢問是否要繼續處理該套件,取得明確同意後才可動作(更新版本或移除重複參考)。此確認為強制項,不得被 `--yes` 略過。使用者若拒絕,將該套件記為「已略過(JSC 套件,使用者未同意)」並繼續處理其他套件。**
## 參數 ## 參數
@@ -23,7 +24,7 @@ argument-hint: "[<solution-or-project>] [--include-prerelease] [--no-dedupe] [--
- `--include-prerelease`:更新時允許 prerelease 版本;未指定時只更新 stable 版本。 - `--include-prerelease`:更新時允許 prerelease 版本;未指定時只更新 stable 版本。
- `--no-dedupe`:略過 ProjectReference 重複 PackageReference 清理,只更新版本。 - `--no-dedupe`:略過 ProjectReference 重複 PackageReference 清理,只更新版本。
- `--build <command>`:覆寫驗證指令,例如 `dotnet build My.sln -c Release`。未指定時用 `dotnet build <solution-or-project> --no-restore` - `--build <command>`:覆寫驗證指令,例如 `dotnet build My.sln -c Release`。未指定時用 `dotnet build <solution-or-project> --no-restore`
- `--yes`:可略過一般確認,但仍不可忽略多 solution 選擇、無法安全清理重複參考、編譯失敗的必要決策。 - `--yes`:可略過一般確認,但仍不可忽略多 solution 選擇、無法安全清理重複參考、編譯失敗的必要決策、或 `JSC` 開頭套件的繼續確認
## 執行流程 ## 執行流程
@@ -82,6 +83,7 @@ argument-hint: "[<solution-or-project>] [--include-prerelease] [--no-dedupe] [--
- 若目前專案的套件參考含 `PrivateAssets="all"`、`IncludeAssets` / `ExcludeAssets` 特殊設定、analyzers/build/source generators、或版本刻意高於上層專案,先列為「需人工確認」,不要自動移除。 - 若目前專案的套件參考含 `PrivateAssets="all"`、`IncludeAssets` / `ExcludeAssets` 特殊設定、analyzers/build/source generators、或版本刻意高於上層專案,先列為「需人工確認」,不要自動移除。
- 若上層專案的參考含 `PrivateAssets="all"` 或不會傳遞必要 assets,不可視為可替代。 - 若上層專案的參考含 `PrivateAssets="all"` 或不會傳遞必要 assets,不可視為可替代。
3. 對可安全移除的重複 direct reference 逐一處理: 3. 對可安全移除的重複 direct reference 逐一處理:
- **若該套件 id 為 `JSC` 開頭,先通知使用者並詢問是否繼續移除,取得同意才處理;未同意則記為「已略過(JSC 套件,使用者未同意)」。此確認不得被 `--yes` 略過。**
- 先記錄目前檔案狀態與套件版本。 - 先記錄目前檔案狀態與套件版本。
- 移除當前專案的重複 `PackageReference`;若使用 Central Package Management,只有在沒有任何專案仍需要該 `PackageVersion` 時才移除中央版本項。 - 移除當前專案的重複 `PackageReference`;若使用 Central Package Management,只有在沒有任何專案仍需要該 `PackageVersion` 時才移除中央版本項。
- 執行: - 執行:
@@ -100,6 +102,7 @@ argument-hint: "[<solution-or-project>] [--include-prerelease] [--no-dedupe] [--
- transitive-only 套件不直接更新;更新提供它的 direct 套件。 - transitive-only 套件不直接更新;更新提供它的 direct 套件。
- 明確 pin 住版本且註解或 props 顯示有相容性原因者,先列入「需人工確認」。 - 明確 pin 住版本且註解或 props 顯示有相容性原因者,先列入「需人工確認」。
- `PrivateAssets="all"` 的 analyzer / generator / build tooling 可更新,但要特別注意 build 驗證結果。 - `PrivateAssets="all"` 的 analyzer / generator / build tooling 可更新,但要特別注意 build 驗證結果。
- **`JSC` 開頭的套件:在更新版本前,必須先通知使用者「即將處理 JSC 套件 `<PackageId>`」並詢問是否繼續,取得同意才更新;未同意則記為「已略過(JSC 套件,使用者未同意)」。此確認不得被 `--yes` 略過。**
2. 逐一更新 direct 套件: 2. 逐一更新 direct 套件:
- 一次只更新一個套件 id。 - 一次只更新一個套件 id。
- 若多個專案引用同一套件,先判斷是否使用 Central Package Management - 若多個專案引用同一套件,先判斷是否使用 Central Package Management