

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 與 Amazon Q Developer 討論程式碼
<a name="q-in-IDE-chat"></a>

在您的整合開發環境 (IDE) 中與 Amazon Q Developer 聊天，詢問有關在 進行建置 AWS 以及協助軟體開發的問題。Amazon Q 可以解釋編碼概念和程式碼片段、產生程式碼和單元測試，並改善程式碼，包括偵錯或重構。

**Topics**
+ [

## 在您的 IDE 中使用 Amazon Q
](#working-with-q-in-IDE)
+ [

## 範例任務
](#example-tasks)
+ [

## 範例問題
](#example-topics-questions)
+ [

## 舉報來自 Amazon Q 之回應的問題
](#report-issues)
+ [

# 使用 Amazon Q Developer 檢閱程式碼
](code-reviews.md)
+ [

# 在 IDE 中使用 Amazon Q Developer 轉換程式碼
](transform-in-IDE.md)
+ [

# 使用 Amazon Q Developer 解釋和更新程式碼
](explain-update-code.md)
+ [

# 與 Amazon Q Developer 進行內嵌聊天
](q-in-IDE-inline-chat.md)
+ [

# 在 IDE 中新增內容至 Amazon Q Developer 聊天
](ide-chat-context.md)
+ [

# Amazon Q Developer 中的聊天歷史記錄壓縮
](ide-chat-history-compaction.md)
+ [

# 檢視、刪除和匯出 Amazon Q Developer 對話歷史記錄
](ide-chat-conversation.md)
+ [

# 在與 Amazon Q Developer 的聊天中使用快速鍵
](q-in-ides-chat-shortcuts.md)
+ [

# 在 IDE 中選取 Amazon Q 聊天的模型
](q-in-ides-chat-models.md)

## 在您的 IDE 中使用 Amazon Q
<a name="working-with-q-in-IDE"></a>

### 使用聊天
<a name="w2aac11c16b7b3"></a>

 若要開始與 Amazon Q 聊天，請從 IDE 的導覽列中選擇 Amazon Q 圖示，然後在文字列中輸入您的問題。若要在 Visual Studio 中開始與 Amazon Q 聊天，請從主功能表選擇**檢視**，然後選擇 **Amazon Q 聊天**。

當您向 Amazon Q 提出問題時，它會使用在您的 IDE 中開啟的目前檔案作為脈絡，包含程式設計語言和檔案路徑。您可以在提示中新增更多內容，或在整個聊天工作階段中將檔案、資料夾或整個工作區指定為內容。如需詳細資訊，請參閱[新增內容至聊天](ide-chat-context.md)。

如果 Amazon Q 在回應中包含程式碼，您可以透過選擇**在游標處插入**的方式來複製程式碼或直接將其插入檔案中。Amazon Q 可能會在回應中包含其來源的內嵌參考。

Amazon Q 會保存所指工作階段內的對話內容，以便為後續回應提供資訊。您可以在整個工作階段中提出後續問題，或參考先前的問題和回應。若要與 Amazon Q 展開新的對話，請在面板中開啟新的索引標籤。您一次最多可以打開 10 個索引標籤。Amazon Q 不會保留不同對話之間的內容。

#### 聊天命令
<a name="chat-commands"></a>

下列命令可協助您使用 Amazon Q 管理聊天。
+ **/clear** - 使用此命令來清除目前的對話。如此將從聊天面板移除所有先前的對話，並清除 Amazon Q 擁有的先前對話內容。
+  **/compact** - 當內容視窗接近其容量限制時，使用此命令來壓縮聊天歷史記錄。此命令可建立精簡的對話摘要，同時保留重要資訊。
+ **/help** - 使用此命令來查看 Amazon Q 可以和不可以執行的操作、範例問題和可用功能的概觀。

### 代理式編碼
<a name="agentic-coding"></a>

透過代理程式編碼，Amazon Q 可做為您的編碼合作夥伴，在您開發時與您聊天。在 IDE 中，代理程式編碼預設為開啟。您可以使用聊天面板底部的 `</>` 圖示開啟或關閉代理式編碼。

當您要求 Amazon Q 改善程式碼時，它會直接更新您的檔案。您可以在 diff 中檢視變更，並可選擇復原變更。

當 Amazon Q 正在思考或處理任務時，您可以繼續在聊天面板中新增指示，並將其納入其工作中。

當您與 Amazon Q 討論專案時，它會提供 Shell 命令的建議。有時候，假如它認為這些命令為低風險，就會自行執行這些命令。

### 自然語言聊天
<a name="IDE-natural-language-support"></a>

您在 IDE 中聊天時，Amazon Q Developer 提供了多語言支援。支援的自然語言包括中文、法文、德文、義大利文、日文、西班牙文、韓文、印度文和葡萄牙文，還有其他語言可供選擇。若要使用此功能，您可以在 IDE 中使用偏好的自然語言與 Amazon Q 展開對話。Amazon Q 會自動偵測語言，並以適當的語言提供回應。

## 範例任務
<a name="example-tasks"></a>

### 開發程式碼功能
<a name="develop-code"></a>

**注意**  
此功能在本文件和 IDE 中稱為 /dev。

Amazon Q 可協助您開發程式碼功能、對專案進行程式碼變更，以及回答整合開發環境 (IDE) 中軟體開發任務的問題。您會說明要完成的任務，而 Amazon Q 會使用目前專案或工作區的內容來產生您可以套用至程式碼庫的程式碼。Amazon Q 可協助您建置 AWS 專案或自己的應用程式。

### 單元測試產生
<a name="unit-tests"></a>

**注意**  
此功能在本文件和 IDE 中稱為 /test。

Amazon Q 可以產生單元測試，讓您可以在整個軟體開發生命週期中自動化測試。此功能可協助開發人員專注於加速功能開發，同時確保程式碼品質。

### 文件產生
<a name="doc-generation"></a>

**注意**  
此功能在本文件和 IDE 中稱為 /doc。

Amazon Q 透過為程式碼產生 READMEs和其他文件，協助您了解程式碼並保持文件最新狀態。它可以產生新的文件，並更新您程式碼庫中的現有文件。

### 程式碼檢閱
<a name="review-code"></a>

**注意**  
此功能在本文件和 IDE 中稱為 /review。

Amazon Q 可以檢閱您的程式碼庫是否有安全漏洞和程式碼品質問題，以改善整個開發週期的應用程式狀態。如需如何使用此功能的詳細資訊，請參閱 [使用 Amazon Q Developer 檢閱程式碼](code-reviews.md)。

### 轉換程式碼
<a name="transform-code"></a>

Amazon Q 可以透過執行自動化語言和作業系統 (OS) 層級升級和轉換，在整合式開發環境 (IDEs) 中轉換您的程式碼。您提供要轉換的程式碼，Amazon Q 就會產生變更，供您檢閱並套用至檔案。如需詳細資訊，請參閱[轉換程式碼](transform-in-IDE.md)。

## 範例問題
<a name="example-topics-questions"></a>

在 IDEs 中，除了產生程式碼之外，Amazon Q 還可以回答有關 AWS 服務 和軟體開發的問題。Amazon Q 特別適用於回答與下列主題領域相關的問題。
+ 以 為基礎 AWS，包括 AWS 服務 選擇、限制和最佳實務
+ 一般軟體開發概念，包含程式語言語法和應用程式開發
+ 撰寫程式碼，包含解釋程式碼、偵錯程式碼，以及撰寫單元測試

以下是您可以在 IDE 中充分利用 Amazon Q 的一些範例問題：
+ 我要如何在部署到 AWS 之前，在本機偵錯 Lambda 函數的問題？
+ 如何在可擴展 Web 應用程式後端的 AWS Lambda 和 Amazon EC2 之間進行選擇？ 
+ 在 TypeScript 中宣告變數的語法為何？
+ 如何使用 React 編寫應用程式？
+ 為我提供 [*所選程式碼或應用程式*] 的功能及其運作方式的說明。
+ 為 [*所選程式碼或函式*] 產生測試案例。

## 舉報來自 Amazon Q 之回應的問題
<a name="report-issues"></a>

您可以選擇使用按讚和倒讚圖示的方式，針對 Amazon Q 產生的每個回應留下意見回饋。若要回報有關回應的問題，請選擇倒讚圖示，然後在顯示的意見回饋視窗中輸入資訊。

# 使用 Amazon Q Developer 檢閱程式碼
<a name="code-reviews"></a>

Amazon Q Developer 可以檢閱您的程式碼基底是否有安全漏洞和程式碼品質問題，以改善整個開發週期的應用程式狀態。您可以檢閱整個程式碼庫、分析本機專案或工作區中的所有檔案，或檢閱單一檔案。您也可以啟用自動檢閱，在撰寫程式碼時評估程式碼。

檢閱是由生成式 AI 和規則型自動推理共同提供支援。[Amazon Q 偵測器](https://docs.aws.amazon.com/codeguru/detector-library)由多年的 AWS 和 Amazon.com 安全最佳實務通知，支援以規則為基礎的安全和品質審查。隨著安全政策更新並新增了偵測器，檢閱會自動納入新的偵測器，以確保您的程式碼遵循最新的政策。

如需此功能支援的 IDE 相關資訊，請參閱 [支援的 IDE](q-in-IDE.md#supported-ides-features)。如需支援的語言相關資訊，請參閱 [程式碼檢閱的語言支援](q-language-ide-support.md#code-reviews-language-support)。

**Topics**
+ [

## 運作方式
](#how-code-reviews-work)
+ [

## 程式碼問題的類型
](#issue-types)
+ [

## 配額
](#quotas)
+ [

# 使用 Amazon Q Developer 開始程式碼檢閱
](start-review.md)
+ [

# 使用 Amazon Q Developer 解決程式碼問題
](address-code-issues.md)
+ [

# 篩選程式碼問題
](filter-code-issues.md)
+ [

# Amazon Q Developer 程式碼檢閱中的程式碼問題嚴重性
](code-issue-severity.md)

## 運作方式
<a name="how-code-reviews-work"></a>

在程式碼檢閱期間，Amazon Q 會評估您的自訂程式碼，以及您程式碼中的第三方程式庫。開始程式碼檢閱之前，Amazon Q 會先套用篩選，以確保僅檢閱相關程式碼。在篩選過程中，Amazon Q 會排除不支援的語言、測試程式碼和開放原始程式碼。

Amazon Q 可以檢閱您最近的程式碼變更，或是整個檔案或專案。若要啟動檢閱，請在 IDE 中開啟程式碼資料夾，然後要求 Amazon Q 從聊天面板檢閱程式碼。

根據預設，如果您只要求 Amazon Q 檢閱您的程式碼，它只會檢閱 IDE 中作用中檔案中的程式碼變更。程式碼變更取決於 檔案上 `git diff`命令的輸出。如果沒有 diff 檔案，Amazon Q 會檢閱整個程式碼檔案。如果沒有開啟任何檔案，它會搜尋專案中要檢閱的任何程式碼變更。

同樣地，如果您要求 Amazon Q 檢閱整個專案或工作區，它會先嘗試檢閱您的程式碼變更。如果沒有 diff 檔案，它會檢閱整個程式碼庫。

## 程式碼問題的類型
<a name="issue-types"></a>

Amazon Q 會檢閱您的程式碼是否有下列類型的程式碼問題：
+ **SAST 掃描 — 偵測原始程式碼中的安全漏洞。**Amazon Q 可識別各種安全問題，例如資源洩漏、SQL Injection 隱碼攻擊和跨網站指令碼。
+  **密碼偵測 — 防止暴露您程式碼中的敏感或機密資訊。**Amazon Q 會檢閱您的程式碼和文字檔案中是否有密碼，例如硬式編碼的密碼、資料庫連線字串及使用者名稱。密碼問題清單包含有關未受保護密碼及如何保護密碼的資訊。
+ **IaC 問題 — 評估基礎結構檔案的安全狀態。**Amazon Q 可以檢閱您的基礎結構即程式碼 (IaC) 程式碼檔案，以偵測組態錯誤、合規和安全問題。
+  **程式碼品質問題 — 確保您的程式碼合乎品質、可維護性和效率標準。**Amazon Q 會產生與各種品質問題相關的程式碼問題，包括但不限於效能、機器學習規則和 AWS 最佳實務。
+  **程式碼部署風險 — 評估與部署程式碼相關的風險。**Amazon Q 會判斷部署或發佈程式碼是否有任何風險，包括應用程式效能和操作中斷。
+  **軟體組成分析 (SCA) — 評估第三方程式碼。**Amazon Q 會檢查程式碼中整合的第三方元件、程式庫、架構和相依性，確保第三方程式碼安全無虞且是最新狀態。

如需 Amazon Q 用來檢閱程式碼的完整偵測器清單，請參閱 [Amazon Q 偵測器程式庫](https://docs.aws.amazon.com/codeguru/detector-library/)。

## 配額
<a name="quotas"></a>

Amazon Q 安全掃描會維持下列配額：
+ **輸入成品大小** - IDE 專案工作空間內所有檔案的大小上限，包括第三方程式庫、組建 JAR 檔案及暫存檔案。
+ **原始程式碼大小** - 在篩選所有第三方程式庫和不支援的檔案之後，Amazon Q 掃描的原始程式碼大小上限。

下表說明自動掃描和完整專案掃描維持的配額。


| 資源 | 自動檢閱 | 檔案或專案檢閱 | 
| --- | --- | --- | 
| 輸入成品大小 | 200 KB | 500 MB | 
| 原始程式碼大小 | 200 KB | 50 MB | 

# 使用 Amazon Q Developer 開始程式碼檢閱
<a name="start-review"></a>

Amazon Q 可以檢閱整個檔案或程式碼庫，或在撰寫程式碼時自動檢閱程式碼。

開始進行之前，請確定您已在支援程式碼檢閱的 IDE 中安裝 Amazon Q。如需詳細資訊，請參閱[在 IDE 中安裝 Amazon Q Developer 延伸模組或外掛程式](q-in-IDE-setup.md)。

**Topics**
+ [

## 檢閱檔案、專案或工作區
](#project-review)
+ [

## 範例任務和提示
](#code-review-prompts)
+ [

## 在您編寫程式碼時進行檢閱
](#auto-scan)

## 檢閱檔案、專案或工作區
<a name="project-review"></a>

您可以從聊天面板啟動檢閱，讓 Amazon Q 檢閱特定檔案或專案。檔案和專案檢閱包括規則型和生成式 AI 支援的檢閱。

Amazon Q 完成檢閱後，您可以調查問題並取得程式碼修正以修復問題。如需詳細資訊，請參閱[解決程式碼問題](address-code-issues.md)。

若要開始檔案或專案檢閱，請完成 IDE 的下列步驟：

------
#### [ JetBrains ]

1. 在 IDE 中開啟您要檢閱的檔案或專案。

1. 選擇 Amazon Q 圖示以開啟聊天面板。

1. 使用自然語言描述您要執行的程式碼檢閱類型。您只能檢閱最近的程式碼變更，或整個檔案。程式碼變更是根據檔案上 git diff 命令的輸出所決定。如適用，除非另有說明，否則 Amazon Q 預設只會檢閱您的程式碼變更。

1. 在開啟程式碼專案或檔案於 IDE 中開啟的情況下，您可以輸入如下內容：

   1. **Review my code changes** – Amazon Q 將檢閱您程式碼庫中的任何程式碼變更

   1. **Run a code review on this entire file** – Amazon Q 將檢閱您檔案中的所有程式碼，而不只是變更

   1. **Review this repository** – Amazon Q 將檢閱您的整個程式碼庫，而不只是變更

   如需更詳細的程式碼檢閱案例和相關聯的提示，請參閱[範例提示](#code-review-prompts)。

1. Amazon Q 將會開始檢閱您的檔案或專案。完成後，它會摘要最高優先順序的問題和觀察結果。

1. 如果偵測到任何問題，**程式碼問題**索引標籤會開啟，其中包含 Amazon Q 找到的問題清單。

1. 若要進一步了解程式碼問題，請導覽至**程式碼問題**面板。您可以在該處執行下列操作：

   1. 選取問題，以重新導向至偵測到有漏洞或低品質程式碼的特定檔案區域。

   1. 若要取得程式碼問題的說明，請選擇程式碼問題名稱旁的放大鏡圖示。Amazon Q 會提供有關問題的詳細資訊，並建議補救措施供您插入程式碼中。

   1. 若要修正程式碼問題，請選擇程式碼問題名稱旁的扳手圖示。Amazon Q 會提供修正的簡短說明，然後在程式碼檔案中執行就地修正。您會在檔案中看到程式碼變更，並且可以從聊天面板選擇復原變更。

   1. 您也可以使用自然語言來詢問有關問題的詳細資訊、取得建議修正的說明，或詢問替代解決方案。

1. 如需有關解決問題的詳細資訊，請參閱 [使用 Amazon Q Developer 解決程式碼問題](address-code-issues.md)。

------
#### [ Visual Studio 程式碼 ]

1. 在 IDE 中開啟您要檢閱的檔案或專案。

1. 選擇 Amazon Q 圖示以開啟聊天面板。

1. 使用自然語言描述您要執行的程式碼檢閱類型。您只能檢閱最近的程式碼變更，或整個檔案。程式碼變更是根據檔案上 git diff 命令的輸出所決定。如適用，除非另有說明，否則 Amazon Q 預設只會檢閱您的程式碼變更。

1. 在開啟程式碼專案或檔案於 IDE 中開啟的情況下，您可以輸入如下內容：

   1. **Review my code changes** – Amazon Q 將檢閱您程式碼庫中的任何程式碼變更

   1. **Run a code review on this entire file** – Amazon Q 將檢閱您檔案中的所有程式碼，而不只是變更

   1. **Review this repository** – Amazon Q 將檢閱您的整個程式碼庫，而不只是變更

   如需更詳細的程式碼檢閱案例和相關聯的提示，請參閱[範例提示](#code-review-prompts)。

1. Amazon Q 將會開始檢閱您的檔案或專案。完成後，它會摘要最高優先順序的問題和觀察結果。

1. 如果偵測到任何問題，**程式碼問題**索引標籤會開啟，其中包含 Amazon Q 找到的問題清單。

1. 若要進一步了解程式碼問題，請導覽至**程式碼問題**面板。您可以在該處執行下列操作：

   1. 選取問題，以重新導向至偵測到有漏洞或低品質程式碼的特定檔案區域。

   1. 若要取得程式碼問題的說明，請選擇程式碼問題名稱旁的放大鏡圖示。Amazon Q 會提供有關問題的詳細資訊，並建議補救措施供您插入程式碼中。

   1. 若要修正程式碼問題，請選擇程式碼問題名稱旁的扳手圖示。Amazon Q 會提供修正的簡短說明，然後在程式碼檔案中執行就地修正。您會在檔案中看到程式碼變更，並且可以從聊天面板選擇復原變更。

   1. 您也可以使用自然語言來詢問有關問題的詳細資訊、取得建議修正的說明，或詢問替代解決方案。

1. 如需有關解決問題的詳細資訊，請參閱 [使用 Amazon Q Developer 解決程式碼問題](address-code-issues.md)。

------
#### [ Visual Studio ]

1. 在 Visual Studio 中，從您要掃描的專案開啟檔案。

1. 選擇檔案底部的 Amazon Q 圖示，以開啟 Amazon Q 任務列。

1. 從任務列中，選擇**執行安全掃描**。Amazon Q 會開始掃描您的專案。

   在下圖中，使用者在 Visual Studio 中選擇 **Amazon Q** 圖示，因而出現任務列提示，使用者可在此選擇**執行安全掃描**。  
![\[Visual Studio 與顯示「執行安全掃描」選項的 Amazon Q 任務列\]](http://docs.aws.amazon.com/zh_tw/amazonq/latest/qdeveloper-ug/images/VS-scans.png)

1. 在 Visual Studio 輸出窗格中，掃描的狀態會更新。掃描完成時，您會收到通知。

   如需有關檢視和解決問題清單的資訊，請參閱 [使用 Amazon Q Developer 解決程式碼問題](address-code-issues.md)。

------

## 範例任務和提示
<a name="code-review-prompts"></a>

啟動程式碼檢閱時，您可能會遇到幾種情況。以下是啟動程式碼檢閱的一些方法概觀，以及如何提示 Amazon Q 執行您想要的檢閱。
+ 若要僅檢閱單一檔案的程式碼變更：
  + 在 IDE 中開啟 檔案並輸入 **Review my code**
  + 輸入 **Review the code in <filename>**
+ 若要檢閱整個程式碼檔案：
  + 開啟檔案而不變更，然後輸入 **Review my code**
  + 開啟包含變更的檔案，然後輸入 **Review my entire code file**
  + 輸入 **Review all the code in <filename>**
+ 若要檢閱儲存庫中的所有程式碼變更：
  + 在 IDE 中開啟儲存庫並輸入 **Review my code**
+ 若要檢閱整個儲存庫，不只是變更：
  + 在 IDE 中開啟儲存庫並輸入 **Review my repository**

## 在您編寫程式碼時進行檢閱
<a name="auto-scan"></a>

**注意**  
Amazon Q 自動檢閱僅適用於 [Amazon Q Developer 專業方案訂閱](getting-started-q-dev.md)。

自動檢閱是由 [Amazon Q 偵測器](https://docs.aws.amazon.com/codeguru/detector-library/)支援的規則型檢閱。Amazon Q 會自動檢閱您主動編碼的檔案，一旦在您的程式碼中偵測到程式碼問題，就會產生問題。當 Amazon Q 執行自動檢閱時，不會產生就地程式碼修正。

當您使用 Amazon Q 時，自動檢閱預設為啟用狀態。請使用下列程序來暫停或繼續執行自動檢閱。

**暫停和繼續執行自動檢閱**

若要暫停自動檢閱，請完成下列步驟。

1. 從 IDE 視窗底部選擇 **Amazon Q**。

   Amazon Q 任務列隨即開啟。

1. 選擇**暫停自動檢閱**。若要繼續執行自動檢閱，選擇**繼續自動檢閱**。

# 使用 Amazon Q Developer 解決程式碼問題
<a name="address-code-issues"></a>

本節中的主題說明如何應對和解決程式碼問題，以及如何適時忽略問題。

**Topics**
+ [

# 解決 JetBrains 和 Visual Studio Code 中的程式碼問題
](address-issues-jetbrains-visualstudiocode.md)
+ [

# 解決 Visual Studio 中的程式碼問題
](address-issues-visualstudio.md)

# 解決 JetBrains 和 Visual Studio Code 中的程式碼問題
<a name="address-issues-jetbrains-visualstudiocode"></a>

若要解決 JetBrains 和 Visual Studio Code 中的程式碼問題，您可以選擇產生就地修正，或是產生說明供您手動更新程式碼。

您可以執行下列動作：
+ 產生就地程式碼修正 
+ 說明問題並取得新的程式碼
+ 忽略問題，或忽略所有類似的問題

## 為檔案產生就地修正
<a name="generate-fixes"></a>

Amazon Q 可以就地更新您的檔案，以自動修復偵測到的程式碼問題。

若要自動修正 檔案中的程式碼問題：

------
#### [ JetBrains ]

1. 在**問題**工具視窗中的 **Amazon Q 程式碼問題**索引標籤中，選擇您要解決的程式碼問題。

1. 面板隨即開啟，其中包含有關程式碼問題的詳細資訊。如果適用，您會看到用來識別程式碼問題之 Amazon Q 偵測器的詳細資訊。

1. 在面板底部，選擇**修正**。

1. 在聊天面板中，Amazon Q 會提供修正的簡短說明，然後在程式碼檔案中套用就地修正。

1. 您會在檔案中看到程式碼變更，並且可以從聊天面板選擇復原變更。

------
#### [ Visual Studio 程式碼 ]

1. 在**程式碼問題**索引標籤中，選擇您要解決的程式碼問題。

1. 選擇扳手圖示。

   下圖顯示 Visual Studio Code 中程式碼問題的扳手圖示。  
![\[中程式碼問題的扳手圖示Visual Studio Code，用於產生程式碼修正。\]](http://docs.aws.amazon.com/zh_tw/amazonq/latest/qdeveloper-ug/images/code-review-fix-vsc.png)

1. 在聊天面板中，Amazon Q 會提供修正的簡短說明，然後在程式碼檔案中套用就地修正。

1. 您會在檔案中看到程式碼變更，並且可以從聊天面板選擇復原變更。

------

## 說明程式碼問題並取得新的程式碼
<a name="explain-issue"></a>

Amazon Q 可以提供程式碼問題的深入說明，並提供修復選項與隨附的程式碼，供您新增至檔案。

若要取得程式碼問題的說明：

------
#### [ JetBrains IDEs ]

1. 在**問題**工具視窗中的 **Amazon Q 程式碼問題**索引標籤中，選擇您要解決的程式碼問題。

1. 面板隨即開啟，其中包含有關程式碼問題的詳細資訊。如果適用，您會看到用來識別程式碼問題之 Amazon Q 偵測器的詳細資訊。

1. 在面板底部，選擇**說明**。

1. 在聊天面板中，Amazon Q 會提供問題的詳細資訊，並建議如何使用您可以插入 檔案的程式碼進行修正。

1. 若要更新您的檔案，請依照 Amazon Q 指示的位置新增或取代程式碼，並將提供的程式碼複製到檔案中的正確位置。新增更新後的程式碼時，請務必移除易受攻擊的程式碼。

------
#### [ Visual Studio 程式碼 ]

1. 在**程式碼問題**索引標籤中，選擇您要解決的程式碼問題。

1. 選擇放大鏡圖示。

   下圖顯示 Visual Studio Code 中程式碼問題的放大鏡圖示。  
![\[中程式碼問題的放大鏡圖示Visual Studio Code，用於解釋程式碼問題。\]](http://docs.aws.amazon.com/zh_tw/amazonq/latest/qdeveloper-ug/images/code-review-view-details-vsc.png)

1. 在聊天面板中，Amazon Q 會提供問題的詳細資訊，並建議如何使用您可以插入 檔案的程式碼進行修正。

1. 若要更新您的檔案，請依照 Amazon Q 指示的位置新增或取代程式碼，並將提供的程式碼複製到檔案中的正確位置。新增更新後的程式碼時，請務必移除易受攻擊的程式碼。

------

## 忽略程式碼問題
<a name="ignore-issues"></a>

如果偵測到的程式碼問題不適用，您可以選擇忽略它，或忽略它和所有類似的問題 (有相同 CWE 的問題)。問題將從「程式碼問題」索引標籤中移除。

若要忽略程式碼問題：

------
#### [ JetBrains ]

1. 在**問題**工具視窗中的 **Amazon Q 程式碼問題**索引標籤中，選擇您要忽略的程式碼問題。

1. 面板隨即開啟，其中包含有關程式碼問題的詳細資訊。在面板底部，選擇**忽略**。程式碼問題會從程式碼問題面板中移除。

1. 您也可以選擇**全部忽略**，以忽略相同 CWE 的此問題和其他程式碼問題。

------
#### [ Visual Studio 程式碼 ]

1. 在**程式碼問題**索引標籤中，選擇您要忽略的程式碼問題。

1. 選擇忽略圖示。

   下圖顯示 Visual Studio Code 中程式碼問題的忽略圖示。  
![\[中程式碼問題的忽略圖示Visual Studio Code，用於忽略和關閉程式碼問題。\]](http://docs.aws.amazon.com/zh_tw/amazonq/latest/qdeveloper-ug/images/code-review-ignore-issue-vsc.png)

1. 程式碼問題會從程式碼問題面板中移除。

1. 若要忽略類似問題，請選擇略過圖示，然後選擇出現**的忽略類似問題**按鈕。

------

# 解決 Visual Studio 中的程式碼問題
<a name="address-issues-visualstudio"></a>

若要在 Visual Studio 中檢視 Amazon Q 偵測到的程式碼問題，請展開 Visual Studio 主功能表中的**檢視**標題，然後選擇**錯誤清單**，以開啟 Visual Studio **錯誤清單**。

您可以使用程式碼問題中的資訊來更新程式碼。更新程式碼之後，請再次檢閱程式碼，以查看問題是否已解決。

根據預設，Visual Studio **錯誤清單**會顯示程式碼基底的所有警告和錯誤。若要在 Visual Studio **錯誤清單**中篩選 Amazon Q 程式碼問題，請完成下列程序來建立篩選條件。

**注意**  
您必須已執行程式碼檢閱，且 Amazon Q 在過程中偵測到問題，在這種情況下才會顯示程式碼問題。  
程式碼問題在 Visual Studio 中會顯示為警告。若要在**錯誤清單**中檢視 Amazon Q 偵測到的問題，則必須選取**錯誤清單**標題中的**警告**選項。

**篩選錯誤清單中的程式碼問題**

1. 從 Visual Studio 主功能表選擇檢視，然後選擇**錯誤清單**以開啟**錯誤清單**窗格。

1. 在**錯誤清單**窗格中的標頭列上按一下滑鼠右鍵，以開啟內容功能表。

1. 在內容功能表中展開**顯示欄**，然後在展開的功能表中選取**工具**。

1. **工具**欄會新增至您的**錯誤清單**。

1. 從**工具**欄標頭選取**篩選**圖示，然後選擇 **Amazon Q** 以篩選出 Amazon Q 程式碼問題。

# 篩選程式碼問題
<a name="filter-code-issues"></a>

**注意**  
您只能在 JetBrains IDE 和 Visual Studio Code 中篩選程式碼問題。

當您篩選程式碼問題時，「程式碼問題」面板中只會顯示符合所選取條件的問題。您可以根據問題的嚴重性進行篩選，因此您只能在面板中看到所選嚴重性的問題。

您也可以控制「程式碼問題」面板中組織程式碼問題的方式。您可以根據嚴重性或問題的檔案位置來將問題分組。

若要篩選程式碼問題：

------
#### [ JetBrains IDEs ]

1. 從 **Amazon Q Code Issues** 索引標籤中，選擇篩選條件圖示。

1. 隨即開啟具有嚴重性層級的快顯功能表。

   下圖顯示 中程式碼問題索引標籤中的嚴重性選單IntelliJ IDEA。  
![\[中的嚴重性篩選條件選單IntelliJ IDEA。\]](http://docs.aws.amazon.com/zh_tw/amazonq/latest/qdeveloper-ug/images/jb-filter-issues.png)

1. 選取或取消選取您要篩選的嚴重性等級，然後選擇**確定**。只有您所選取嚴重性的問題會出現在 **Amazon Q Code Issues** 面板中。

------
#### [ Visual Studio 程式碼 ]

1. 從**程式碼問題**面板中，選擇篩選圖示。

   下圖顯示 Visual Studio Code 中「程式碼問題」索引標籤中的篩選圖示。  
![\[Visual Studio Code 中「程式碼問題」索引標籤中的篩選圖示。\]](http://docs.aws.amazon.com/zh_tw/amazonq/latest/qdeveloper-ug/images/filter-issues-vsc.png)

1. **篩選問題**功能表隨即開啟。

   選取或取消選取您要篩選之嚴重性等級旁的方塊，然後選擇**確定**。只有您所選取嚴重性**的問題會出現在程式碼**問題面板中。

------

若要將程式碼問題分組：

------
#### [ JetBrains IDEs ]

1. 從 **Amazon Q Code Issues** 面板中，選擇分組圖示。

1. **群組依據**彈出式選單隨即開啟。

1. 選取**嚴重性**，根據問題的嚴重性在程式碼問題面板中分組問題。選取**位置**，根據問題所在的程式碼檔案來分組問題。

------
#### [ Visual Studio 程式碼 ]

1. 從**程式碼問題**面板中，選擇分組圖示。

   下圖顯示 Visual Studio Code 中「程式碼問題」索引標籤中的分組圖示。  
![\[Visual Studio Code 中「程式碼問題」索引標籤中的分組圖示。\]](http://docs.aws.amazon.com/zh_tw/amazonq/latest/qdeveloper-ug/images/group-issues-vsc.png)

1. **將問題分組**功能表隨即開啟。

1. 選取**嚴重性**，根據問題的嚴重性在程式碼問題面板中分組問題。選取**位置**，根據問題所在的程式碼檔案來分組問題。

------

# Amazon Q Developer 程式碼檢閱中的程式碼問題嚴重性
<a name="code-issue-severity"></a>

Amazon Q 會定義您程式碼中偵測到的程式碼問題的嚴重性，讓您能夠決定要優先處理哪些問題，並追蹤應用程式的安全狀態。下列各節說明用來決定程式碼問題嚴重性的方法，以及每一種嚴重性層級的意義。

## 如何決定嚴重性
<a name="severity-calculation"></a>

程式碼問題的嚴重性取決於產生問題的偵測器。[Amazon Q 偵測器程式庫](https://docs.aws.amazon.com/codeguru/detector-library)中的每個偵測器都會有使用通用漏洞評分系統 ([CVSS](https://nvd.nist.gov/vuln-metrics/cvss/v3-calculator)) 為其指派的嚴重性。CVSS 會考慮問題清單的內容可能遭到利用的方式 (例如，是否可透過網際網路達成，或是否須有實體存取權)，以及可以取得何種層級的存取權。

下表概述如何根據惡意行為者成功攻擊系統所需的存取層級和工作量來判斷嚴重性。


**嚴重性判斷矩陣**  

| 存取層級 | 努力程度 | 嚴重性 | 
| --- | --- | --- | 
| 完全控制系統或其輸出 | 須有系統存取權 | 高 | 
| 完全控制系統或其輸出 | 具有高工作量的網際網路 | 嚴重 | 
| 完全控制系統或其輸出 | 透過網際網路 | 嚴重 | 
| 存取敏感資訊 | 須有系統存取權 | 中 | 
| 存取敏感資訊 | 具有高工作量的網際網路 | 高 | 
| 存取敏感資訊 | 透過網際網路 | 高 | 
| 可能使系統當機或變慢 | 須有系統存取權 | 低 | 
| 可能使系統當機或變慢 | 具有高工作量的網際網路 | 中 | 
| 可能使系統當機或變慢 | 透過網際網路 | 中 | 
| 提供額外的安全性 | 無法利用 | Info (資訊) | 
| 提供額外的安全性 | 須有系統存取權 | Info (資訊) | 
| 提供額外的安全性 | 具有高工作量的網際網路 | 低 | 
| 提供額外的安全性 | 透過網際網路 | 低 | 
| 最佳實務 | 無法利用 | Info (資訊) | 

## 嚴重性定義
<a name="severity-definitions"></a>

嚴重性程度的定義如下。

 **重大 - 程式碼問題應該立即解決，以避免向上呈報。**

重大程式碼問題表示，攻擊者可能取得系統控制權，或適度投入即可修改系統的行為。建議您以最緊急的狀況處理重大問題清單。您也應該考慮資源的重要性。

 **高 - 程式碼問題必須於近期優先處理。**

高嚴重性的程式碼問題表示，攻擊者可能取得系統控制權，或高度投入即可修改系統的行為。建議您將高嚴重性的問題清單視為須於近期優先處理，並立即採取補救步驟。您也應該考慮資源的重要性。

 **中 - 程式碼問題應視為須於中期優先處理。**

中等嚴重性的問題清單可能會導致系統當機、無回應或無法使用。我們建議您盡早調查相關程式碼。您也應該考慮資源的重要性。

 **低 - 程式碼問題本身不需採取動作。**

低嚴重性的問題清單表示程式設計錯誤或反模式。您不需要對低嚴重性的問題清單立即採取動作，但這些問題可在您與其他問題相互關聯時提供內容。

**資訊 - 沒有建議的動作。**

資訊問題清單包括品質或易讀性改善的建議，或替代 API 操作。不需要立即採取行動。

# 在 IDE 中使用 Amazon Q Developer 轉換程式碼
<a name="transform-in-IDE"></a>

Amazon Q Developer 可以透過執行自動化語言和作業系統 (OS) 層級升級與轉換的方式，在整合式開發環境 (IDE) 中轉換您的程式碼。您提供要轉換的程式碼，Amazon Q 就會產生變更，供您檢閱並套用至檔案。

若要開始使用，請在支援轉換的 IDE 中安裝 Amazon Q。然後，請參閱您要使用 Amazon Q 執行之轉換類型的主題。

如需支援轉換的 IDE 以及如何安裝 Amazon Q 的詳細資訊，請參閱 [在 IDE 中使用 Amazon Q Developer](q-in-IDE.md)。

**Topics**
+ [

# 使用 Amazon Q Developer 轉換 Java 應用程式
](transform-java.md)
+ [

# 使用 Amazon Q Developer 轉換 .NET 應用程式
](transform-dotnet-IDE.md)

# 使用 Amazon Q Developer 轉換 Java 應用程式
<a name="transform-java"></a>

**注意**  
AWS 轉換自訂現可用於 Java 升級。代理式 AI，可處理版本升級、開發套件遷移等，並在每次執行時改善。[開始使用](https://docs.aws.amazon.com/transform/latest/userguide/custom-get-started.html)

Amazon Q 支援下列類型的 Java 應用程式轉換：
+ Java 語言和相依性版本升級
+ Oracle 至 PostgreSQL 資料庫移轉的內嵌 SQL 轉換

若要開始著手，請參閱您要執行之轉換類型的主題。

**Topics**
+ [

## 配額
](#quotas-java-transformation-ide)
+ [

# 使用 Amazon Q Developer 升級 Java 版本
](code-transformation.md)
+ [

# 使用 Amazon Q Developer 轉換 Java 應用程式中的內嵌 SQL
](transform-sql.md)
+ [

# 使用 Amazon Q Developer 在命令列上轉換程式碼
](transform-CLI.md)
+ [

# 檢視轉換任務歷史記錄
](transformation-job-history.md)
+ [

# Java 轉換問題故障診斷
](troubleshooting-code-transformation.md)

## 配額
<a name="quotas-java-transformation-ide"></a>

在 IDE 和命令列中使用 Amazon Q 進行 Java 應用程式轉換維持以下配額：
+ **每個任務的程式碼行數** - Amazon Q 可在某一特定轉換任務中轉換的程式碼行數上限。
+ **每月程式碼行數** - Amazon Q 在一個月內可轉換的程式碼行數上限。
+ **並行任務** - 您可以同時執行的轉換任務數量上限。此配額適用於 IDE 中的所有轉換，包括 [Visual Studio 中的 .NET 轉換](transform-dotnet-IDE.md)。
+ **每月任務數** - 您一個月內可執行的轉換任務數量上限。


| 資源 | 配額 | 
| --- | --- | 
| 每個任務的程式碼行數 | 免費方案：1000 行程式碼 | 
| 每月程式碼行數 | 免費方案：2000 行程式碼 | 
| 並行任務數 |  每個使用者 1 個任務 每個 AWS 帳戶 25 個任務  | 
| 每月任務數 |  專業方案：1000 個任務 免費方案：100 個任務  | 

# 使用 Amazon Q Developer 升級 Java 版本
<a name="code-transformation"></a>

Amazon Q Developer 可在整合式開發環境 (IDE) 中，將您的 Java 應用程式升級至較新的語言版本。Amazon Q 可進行變更來升級您的程式碼，這些變更包括更新已棄用的程式碼元件和 API，以及升級程式碼中的程式庫、架構和其他相依性。

為了轉換您的程式碼，Amazon Q 會先在來源語言版本中建置您的程式碼，並確認其包含執行轉換所需的資訊。Amazon Q 成功轉換程式碼後，您可以在 IDE 中驗證和接受變更。由於 Amazon Q Developer 會進行必要的最低程度變更，讓升級後的程式碼與目標 JDK 相容，因此需要額外的轉換才能升級專案的程式庫和相依性。如需 Amazon Q 如何轉換程式碼的詳細資訊，請參閱 [Amazon Q Developer 如何轉換程式碼以進行 Java 語言升級](how-CT-works.md)。

**Topics**
+ [

## 支援的 Java 升級和 IDE
](#supported-languages-IDEs)
+ [

## 步驟 1：事前準備
](#java-upgrade-prerequisites)
+ [

## 步驟 2：設定您的專案
](#configure-project)
+ [

## 步驟 3：建立相依性升級檔案 (選用)
](#create-dependency-upgrade-file)
+ [

## 步驟 4：轉換您的程式碼
](#transform-code-java)
+ [

# Amazon Q Developer 如何轉換程式碼以進行 Java 語言升級
](how-CT-works.md)

## 支援的 Java 升級和 IDE
<a name="supported-languages-IDEs"></a>

Amazon Q 目前針對轉換支援下列 Java 原始程式碼版本和目標版本。將程式碼轉換為相同 Java 版本的過程包括升級原始程式碼版本中的程式庫和其他相依性。


**支援的 Java 升級**  

| 原始程式碼版本 | 支援的目標版本 | 
| --- | --- | 
| Java 8  | Java 17 和 Java 21 | 
| Java 11 | Java 17 和 Java 21 | 
| Java 17 | Java 17 和 Java 21  | 
| Java 21 |  Java 21   | 

Amazon Q 在下列 IDE 中支援 Java 升級：
+ JetBrains IDE 中的模組
+ Visual Studio Code 中的專案和工作空間

## 步驟 1：事前準備
<a name="java-upgrade-prerequisites"></a>

繼續進行之前，請確定您已完成[在 IDE 中設定 Amazon Q ](q-in-IDE-setup.md)中的步驟。

在您開始程式碼轉換任務之前，務必確定符合以下先決條件：
+ 您的專案是以[支援的 Java 版本](#supported-languages-IDEs)撰寫，並以 Maven 為基礎建置。
+ 您的專案已在您的 IDE 中使用 Maven 成功建置。目前支援 Maven 3.8 或更新版本。
+ 您的專案來源 JDK 可在本機使用，且是原始程式碼的版本。例如，若您要轉換 Java 8 程式碼，則本機 JDK 安裝應為 JDK 8。
+ 您的專案會在 55 分鐘內建置完成。
+ 您的專案已正確設定，並已指定正確的 JDK 版本。如需詳細資訊，請參閱[步驟 2：設定您的專案](#configure-project)。
+ 您的專案不需要存取您私有網路上的資源，包括虛擬私有雲端 (VPC) 或內部部署網路。例如，若您的專案包含會連線至您網路中資料庫的單元測試，則轉換將會失敗。
+ 您的專案不會在 Java 專案中使用封裝 Java 以外語言的外掛程式。例如，如果您的專案除了 Java 原始程式碼之外，還使用 [frontend-maven-plugin](https://github.com/eirslett/frontend-maven-plugin) 執行前端 JavaScript 程式碼，則轉換將會失敗。
+ 您的本機網路允許上傳至 Amazon Q 用來轉換程式碼的 Amazon S3 儲存貯體。如需詳細資訊，請參閱[允許存取資料周界中的 Amazon S3 儲存貯體](firewall.md#data-perimeters)。
+ 您的應用程式僅使用 UTF-8 字元。如果您的應用程式使用非 UTF-8 字元，Amazon Q 仍會嘗試轉換您的程式碼。

## 步驟 2：設定您的專案
<a name="configure-project"></a>

若要設定專案，請針對您要使用的 IDE 使用下列資訊。

### 在 JetBrains 中設定專案
<a name="configure-jetbrains"></a>

若要在 JetBrains 中設定專案，您可能需要指定下列專案和模組設定。

如果您的模組與專案使用相同的 JDK 和語言層級，則不需要更新模組設定。
+ 專案 SDK - 用來編譯專案的 JDK。
+ 專案語言層級 - 專案中使用的 Java 版本。
+ 模組 SDK - 用來編譯模組的 JDK。
+ 模組語言層級 - 模組中使用的 Java 版本。
+ Maven Runner JRE - 您用來建置模組的 JDK。

**更新專案和模組設定**

若要更新專案或模組的 SDK 和語言層級設定，請完成下列步驟：

1. 從您的 JetBrains IDE 中選擇**檔案**，然後選擇**專案結構**。

1. 「專案結構」視窗隨即開啟。在**專案設定**下，選擇**專案**。

   1. 若要更新您的專案 JDK，請從 **SDK** 旁的下拉式清單中選擇。

   1. 若要更新您的專案語言，請從**語言層級**旁的下拉式清單中選擇。

1. 請在 **Project Settings (專案詳細資訊)** 下選擇 **Modules (模組)**。

   1. 若要更新您的模組 JDK，請從 **SDK** 旁的下拉式清單中選擇。

   1. 若要更新您的模組語言，請從**語言層級**旁的下拉式清單中選擇。

如需詳細資訊，請參閱 JetBrains 文件中的[專案結構設定](https://www.jetbrains.com/help/idea/project-settings-and-structure.html)和[模組結構設定](https://www.jetbrains.com/help/idea/configure-modules.html)。

**更新 Maven 設定**

若要更新 Maven Runner JRE，請完成下列步驟：

1. 從您的 JetBrains IDE 中選擇齒輪圖示，然後在出現的功能表中選擇**設定**。

1. 在**設定**視窗中選擇**建置、執行、部署**，然後依序選擇**建置工具**、**Maven**、**執行器**。

1. 在 JRE 欄位中，選擇用來建置您要轉換之模組的 JDK。

### 在 VS Code 中設定專案
<a name="configure-vsc"></a>

若要在 VS Code 中設定專案，您的專案必須包含下列項目：
+ 專案根資料夾中的 `pom.xml` 檔案
+ 專案目錄中的 `.java` 檔案

如果您的專案包含 Maven 包裝函式可執行檔 (`mvnw` 適用於 macOS，或 `mvnw.cmd` 適用於 Windows)，請確定其位於專案的根目錄。Amazon Q 將使用包裝函式，而且不需要其他 Maven 組態。

如果您不使用 Maven 包裝函式，請安裝 Maven。如需詳細資訊，請參閱 Apache Maven 文件中的[安裝 Apache Maven](https://maven.apache.org/install.html)。

安裝 Maven 之後，將其新增至您的 `PATH` 變數。如需詳細資訊，請參閱 [如何將 Maven 新增至我的 `PATH`？](troubleshooting-code-transformation.md#add-maven-to-path)。您的 Java `runtime` 變數也應指向 JDK，而非 JRE。若要確認您的組態正確，請執行 `mvn -v`。輸出應該會顯示您的 Maven 版本和指向 JDK 路徑的 `runtime` 變數。

## 步驟 3：建立相依性升級檔案 (選用)
<a name="create-dependency-upgrade-file"></a>

您可以將*相依性升級檔案*提供給 Amazon Q，此 YAML 檔案中會列出專案相依性，以及轉換過程中要升級哪些版本。藉由提供相依性升級檔案，您就可以指定 Amazon Q 可能不知道要進行升級的第三方和第一方相依性。

第一方相依性是指您的組織維護的程式庫、外掛程式和架構，而且這些只能在本機或組織的私有網路上使用。Amazon Q 在您的本機環境中執行建置時，可以存取您的第一方相依性。如需詳細資訊，請參閱[在本機環境中建置程式碼](how-CT-works.md#java-local-builds)。第三方相依性是公開提供或開放原始碼的相依性，這些並非您組織獨有。

您可以在 YAML 檔案中指定要升級的第一方相依性，Amazon Q 會在 JDK 升級期間 (例如 Java 8 升級到 17) 將這些相依性升級。您可以在初始 JDK 升級之後，初始化另一次轉換 (17 到 17 或 21 到 21) 以升級第三方相依性。

一旦 Amazon Q 執行最低 JDK 升級，您就可以初始化另一次轉換來升級所有第三方相依性。或者，您可以在 YAML 檔案中指定第三方相依性及其版本，以在程式庫升級轉換期間僅升級這些相依性。

Amazon Q 會在轉換期間提示您提供相依性升級檔案。如果您想要提供檔案，請先確定您已正確設定檔案。以下是 YAML 檔案中的必要欄位：
+ name - 相依性升級檔案的名稱。
+ description (選用) - 相依性升級檔案的說明，以及用於哪一個轉換。
+ dependencyManagement - 包含要升級的相依性和外掛程式清單。
+ dependencies - 包含要升級的程式庫名稱和版本。
+ plugins - 包含要升級的外掛程式名稱和版本。
+ identifier - 程式庫、外掛程式或其他相依性的名稱。
+ targetVersion - 升級後的相依性版本。
+ versionProperty (選用) - 您定義的相依性版本，如您應用程式的 `pom.xml` 檔案中的 `properties` 標籤所設定。
+ originType - 相依性為第一方或第三方，以 FIRST\$1PARTY 或 THIRD\$1PARTY 指定。

以下是相依性升級 YAML 檔案的範例，以及供 Amazon Q 剖析的必要組態：

```
name: dependency-upgrade
  
description: "Custom dependency version management for Java migration from JDK 8/11/17 to JDK 17/21"
  
  
dependencyManagement:
  
  dependencies:
  
    - identifier: "com.example:library1"
  
      targetVersion: "2.1.0"
  
      versionProperty: "library1.version"  # Optional
  
      originType: "FIRST_PARTY"   
  
    - identifier: "com.example:library2"
  
      targetVersion: "3.0.0"
  
      originType: "THIRD_PARTY"
  
  plugins:
  
    - identifier: "com.example.plugin"
  
      targetVersion: "1.2.0"
  
      versionProperty: "plugin.version"  # Optional
            
      originType: "THIRD_PARTY"
```

## 步驟 4：轉換您的程式碼
<a name="transform-code-java"></a>

若要測試 IDE 設定，請下載並解壓縮範例專案，然後針對您的 IDE 完成下列步驟。如果您能夠檢視提議的變更和轉換摘要，表示您可以轉換自己的程式碼專案。如果轉換失敗，表示您的 IDE 未正確設定。若要解決組態問題，請檢閱 [步驟 2：設定您的專案](#configure-project) 和 [疑難排解](troubleshooting-code-transformation.md)。

**注意**  
在程式碼轉換期間，請勿關閉、關上或讓本機電腦進入睡眠狀態。初始和驗證組建會使用用戶端環境，因此需要穩定的網路連線。

若要升級程式碼專案或模組的程式碼語言版本，請針對您的 IDE 完成下列步驟。

------
#### [ JetBrains ]

1. 在 JetBrains 中開啟您要升級的模組。確定您已在 IDE 中成功建置專案。

1. 選擇 Amazon Q 標誌，並要求 Amazon Q 在開啟的聊天面板中轉換您的應用程式。

1. **轉換應用程式**快顯視窗隨即出現。從下拉式清單中選擇您要升級的專案，然後選擇**轉換**。

1. Amazon Q 會提示您提供升級相依性檔案。如果您已設定 YAML 且其中包含要升級的目標相依性和版本，請新增該檔案。Amazon Q 會驗證檔案，以確保其設定正確。如果發生錯誤，請檢閱 [步驟 3：建立相依性升級檔案 (選用)](#create-dependency-upgrade-file) 中所述的格式和必要欄位。

1. Amazon Q 開始進行轉換。您可以在**轉換詳細資訊**索引標籤上檢視進度。

1. 轉換完成後，您可以先驗證升級後的程式碼，再更新專案。若要檢視新程式碼，請前往**轉換詳細資訊**索引標籤，然後選擇**檢視差異**。在出現的**套用修補程式**視窗中，選擇檔案以開啟包含原始程式碼和升級後程式碼的差異檢視。

1. 若要接受 Amazon Q 所做的變更，請選擇**檢視差異**以開啟**套用修補程式**視窗。選取所有更新的檔案，然後選擇**確定**以就地更新您的專案。

1. 若要取得程式碼如何升級和建議的後續步驟的詳細資訊，請在**轉換詳細資訊**索引標籤上，選擇**檢視轉換摘要**。

------
#### [ Visual Studio 程式碼 ]

1. 在 VS Code 中開啟您要升級的專案或工作空間。確定您已在 IDE 中成功建置專案。

1. 選擇 Amazon Q 標誌，並要求 Amazon Q 在開啟的聊天面板中轉換您的應用程式。

1. 從 IDE 頂端的搜尋列中，選擇您要升級的專案。

1. 如果 Amazon Q 找不到您的原始程式碼版本，則會提示您選擇程式碼版本。選擇寫入原始程式碼的版本，然後在快顯視窗中選擇**轉換**以繼續。

1. 如果出現提示，請輸入 JDK 的 `JAVA_HOME` 路徑。如需詳細資訊，請參閱[設定 VS Code 專案](#configure-vsc)。

1. Amazon Q 會提示您提供升級相依性檔案。如果您已設定 YAML 且其中包含要升級的目標相依性和版本，請新增該檔案。Amazon Q 會驗證檔案，以確保其設定正確。如果發生錯誤，請檢閱 [步驟 3：建立相依性升級檔案 (選用)](#create-dependency-upgrade-file) 中所述的格式和必要欄位。

1. Amazon Q 開始進行轉換。您可以在 **Transformation Hub** 索引標籤上檢視進度。

1. 轉換完成後，**提議的變更**索引標籤便會開啟。若要在更新專案之前驗證升級後的程式碼，請選擇**下載提議的變更**。選擇檔案以開啟包含原始程式碼和升級後程式碼的差異檢視。

1. 若要接受 Amazon Q 所做的變更，請前往**提議的變更**索引標籤，然後選擇**接受**。

1. 若要取得程式碼如何升級和建議的後續步驟的詳細資訊，請在 **Transformation Hub** 上選擇**檢視和更多動作**省略符號按鈕，然後選擇**顯示轉換摘要**。

------

# Amazon Q Developer 如何轉換程式碼以進行 Java 語言升級
<a name="how-CT-works"></a>

為了轉換您的程式碼，Amazon Q Developer 會產生轉換計畫，並利用該計畫來升級專案的程式碼語言版本。轉換程式碼之後，它會提供轉換摘要和檔案差異，供您在接受變更之前檢閱變更。由於 Amazon Q Developer 會進行必要的最低程度變更，讓升級後的程式碼與目標 JDK 相容，因此需要額外的轉換才能升級專案的程式庫和相依性。下列各節提供更多 Amazon Q 如何執行轉換的詳細資訊。

## 建置程式碼並建立轉換計畫
<a name="build-code-create-plan"></a>

為了要開始轉換您的程式碼，Amazon Q 會在本機上建置您的專案，並產生包含您的原始程式碼、專案相依性和建置日誌的建置成品。

產生建置成品後，Amazon Q 會在安全的建置環境中建置您的程式碼，並建立轉換計畫，該計畫會針對您要升級的專案或模組進行自訂。轉換計畫概述了 Amazon Q 將嘗試進行的特定變更，包括新的相依性版本、主要程式碼變更，以及已棄用程式碼的建議取代項目。這些變更是以程式碼的初步建置為基礎，並且可能在轉換期間變更。

## 轉換程式碼
<a name="transform-code"></a>

為了轉換您的程式碼，Amazon Q 會根據轉換計畫中提議的變更，嘗試將您的程式碼升級至目標 Java 版本。在其進行變更時，會同時在原始程式碼中重新建置並執行現有的單元測試，以反覆修正任何遇到的錯誤。JDK 可從下列原始程式碼版本升級到目標版本：
+ Java 8 到 17
+ Java 8 到 21
+ Java 11 到 17
+ Java 11 到 21
+ Java 17 到 21

Amazon Q 會進行必要的最低程度變更，讓您的程式碼與目標 Java 版本相容。一旦 Amazon Q 執行最低 JDK 升級，您就可以初始化另一次轉換來升級所有第三方相依性。或者，您可以在 YAML 檔案中指定第三方相依性及其版本，以在程式庫升級轉換期間僅升級這些相依性。

升級程式碼時，Amazon Q 會嘗試進行下列變更：
+ 根據目標 Java 版本建議更新已棄用的程式碼元件
+ 將熱門程式庫和架構升級至與目標 Java 版本相容的版本。這包括將下列程式庫和架構更新為其最新的可用主要版本：
  + Apache Commons IO 
  + Apache HttpClient 
  + bc-fips 
  + Cucumber-JVM 
  + 休眠 
  + jackson-annotations 
  + JakartaEE
  + Javax 
  + javax.servlet 
  + jaxb-api 
  + jaxb-impl 
  + jaxen 
  + jcl-over-slf4j 
  + json-simple 
  + jsr305 
  + junit 
  + junit-jupiter-api 
  + Log4j 
  + Micronaut 
  + Mockito 
  + mockito-core 
  + Okio 
  + PowerMockito 
  + Quarkus 
  + slf4j 
  + slf4j-api 
  + Spring Boot 
  + Spring Framework 
  + Spring Security 
  + Swagger 
  + 測試 

**注意**  
請勿在程式碼轉換期間關閉或關上本機電腦，因為用戶端組建需要穩定的網路連線。

## 在本機環境中建置程式碼
<a name="java-local-builds"></a>

在轉換期間，Amazon Q 會在您的本機環境中執行驗證建置。Amazon Q 會在伺服器端進行多個步驟來轉換您的程式碼。在每個步驟之後，Amazon Q 會將程式碼傳送至您的本機環境，以建置並測試其所做的變更。然後程式碼會傳回伺服器端，以繼續轉換。

本機環境中的組建可讓 Amazon Q 執行需要存取私有資源的測試，藉此協助驗證轉換後的程式碼。為了將在本機環境中建置 AI 生成程式碼所伴隨的安全風險降至最低，Amazon Q 會檢閱並更新其產生的程式碼，以解決安全疑慮。

## 檢閱轉換摘要並接受變更
<a name="review-plan-accept-changes"></a>

轉換完成後，Amazon Q 會提供轉換摘要，其中包含其所做變更的詳細資訊，包括最終建置的狀態，指出您的整個專案是否已升級。您也可以檢視建置日誌摘要，以了解導致 Amazon Q 無法在升級版本中建置程式碼的任何問題。

轉換摘要還包含轉換計畫中提議的變更與 Amazon Q 為了升級程式碼最終所做的變更之間的差異，以及不在原始計畫中的任何其他變更。

檢閱轉換摘要後，您可以在檔案差異檢視中檢視 Amazon Q 提議的變更。Amazon Q 建議的任何程式碼變更都不會影響您目前的專案檔案，直到您接受變更為止。轉換完成後，轉換後的程式碼可在 30 天內使用。

## 完成部分成功的轉換
<a name="partially-successful-transformations"></a>

根據程式碼基底的複雜性和細節而定，可能會有部分成功轉換的執行個體。這表示，Amazon Q 只能轉換專案中的特定檔案或程式碼區域。在此情況下，您必須手動更新專案的其餘程式碼，才能在更新的語言版本中建置。

為了協助轉換其餘程式碼，您可以在 IDE 中使用 Amazon Q 聊天。您可以要求 Amazon Q 檢閱部分更新的檔案，並提供新的程式碼來解決問題，例如編譯錯誤。您也可以使用[特徵開發](q-in-IDE-chat.md#develop-code)和[工作區內容](workspace-context.md)等功能，將更多專案納入內容，並一次取得多個檔案的建議。

# 使用 Amazon Q Developer 轉換 Java 應用程式中的內嵌 SQL
<a name="transform-sql"></a>

IDE 中用於程式碼轉換的 Amazon Q Developer 代理程式可協助您將內嵌 SQL 轉換為使用 AWS Database Migration Service (AWS DMS) 完成 Oracle 到 PostgreSQL 資料庫遷移。

AWS DMS 是一種雲端服務，可讓您遷移關聯式資料庫、資料倉儲、NoSQL 資料庫和其他類型的資料存放區。 AWS DMS 中的 DMS 結構描述轉換可協助您轉換可套用至目標資料庫的資料庫結構描述和程式碼物件。如需詳細資訊，請參閱*AWS Database Migration Service 《 使用者指南*》中的[什麼是 AWS Database Migration Service？](https://docs.aws.amazon.com/dms/latest/userguide/Welcome.html)。

當您使用 AWS DMS 和 DMS 結構描述轉換來遷移資料庫時，您可能需要將應用程式中的內嵌 SQL 轉換為與目標資料庫相容。您可以在 IDE 中使用 Amazon Q 自動執行轉換，而不須手動轉換。Amazon Q 會使用 DMS 結構描述轉換的中繼資料，將應用程式中的內嵌 SQL 轉換為與目標資料庫相容的版本。

目前，Amazon Q 可以轉換 Java 應用程式中的 SQL，以將 Oracle 資料庫移轉至 PostgreSQL。如果您的應用程式包含 Oracle SQL 陳述式，您就會在 IDE 中看到轉換 SQL 程式碼的選項。如需詳細資訊，請參閱先決條件。

## 步驟 1：事前準備
<a name="sql-transform-prereqs"></a>

繼續進行之前，請確定您已完成[在 IDE 中設定 Amazon Q ](q-in-IDE-setup.md)中的步驟。

在您開始程式碼轉換任務以進行 SQL 轉換之前，務必確定符合以下先決條件：
+ 您要將具有內嵌 SQL 的 Java 應用程式從 Oracle 資料庫移轉至 PostgreSQL 資料庫。您的應用程式必須包含 Oracle SQL 陳述式，才能符合轉換的資格。
+ 您已完成使用 AWS DMS 結構描述轉換來轉換資料庫結構描述的程序。如需詳細資訊，請參閱《資料庫移轉指南》**中的[使用 DMS 結構描述轉換將 Oracle 資料庫移轉至 Amazon RDS for PostgreSQL](https://docs.aws.amazon.com/dms/latest/sbs/schema-conversion-oracle-postgresql.html)。
+ 結構描述轉換完成後，您已從 DMS AWS 主控台下載遷移專案檔案。

## 步驟 2：設定應用程式
<a name="sql-transform-configure"></a>

若要轉換您的內嵌 SQL 程式碼，您的 Java 專案必須至少包含一個 `.java` 檔案。

如果您使用 JetBrains IDE，則必須將「專案結構」設定中的 SDK 欄位設定為適用的 JDK。如需設定「專案結構」設定的相關資訊，請參閱 JetBrains 文件中的[專案結構設定](https://www.jetbrains.com/help/idea/project-settings-and-structure.html)。

## 步驟 3：轉換內嵌 SQL
<a name="convert-sql"></a>

若要將 Java 應用程式中的內嵌 SQL 程式碼轉換成與 PostgreSQL 目標資料庫相容的格式，請完成下列步驟：

1. 在安裝 Amazon Q 所在的 IDE 中，開啟包含您需要轉換之內嵌 SQL 的 Java 程式碼基底。

1. 選擇 Amazon Q 圖示以開啟聊天面板。

1. 在聊天面板中要求 Amazon Q 轉換您的應用程式。

1. 如果您的 Java 應用程式符合 SQL 轉換的資格，Amazon Q 會提示您選擇要執行的轉換類型。輸入 **SQL conversion**。

1. Amazon Q 會提示您，上傳您從 Amazon S3 擷取的結構描述中繼資料檔案。在聊天中，Amazon Q 會提供擷取檔案的指示。

1. Amazon Q 會提示您提供包含內嵌 SQL 的專案，以及資料庫結構描述檔案。在聊天面板中，從下拉式功能表選擇適當的檔案。

1. 確認 Amazon Q 從資料庫結構描述擷取的詳細資訊正確無誤。

1. Amazon Q 會開始轉換您的 SQL 程式碼。這個過程可能需要幾分鐘的時間。

1. Amazon Q 轉換 SQL 程式碼後，會提供差異內容，其中包含對檔案所做的任何更新。檢閱差異中的變更，然後接受變更以更新程式碼。

   Amazon Q 還會提供轉換摘要，其中包含其所做變更的詳細資訊。

1. 更新程式碼後，返回 AWS DMS 主控台，確認新的 SQL 與遷移的資料庫相容。

# 使用 Amazon Q Developer 在命令列上轉換程式碼
<a name="transform-CLI"></a>

您可以使用 Amazon Q Developer 命令列轉換工具，從命令列轉換您的應用程式。若要轉換程式碼，請提供原始程式碼和任何必要組態檔案的路徑，Amazon Q 會進行一系列步驟來產生新的程式碼。在整個轉換過程中，Amazon Q 會在您的本機環境中建置程式碼，以驗證變更。如需詳細資訊，請參閱[在本機環境中建置程式碼](#local-builds)。Amazon Q 會在您的儲存庫中建立新的分支，並在此處遞交程式碼變更。轉換完成後，您可以將分支合併到原始分支中，以將變更合併到程式碼基底中。

若要開始進行，請安裝命令列工具並進行身分驗證，然後查看設定和啟動轉換的命令。

**Topics**
+ [

## 在本機環境中建置程式碼
](#local-builds)
+ [

## 命令
](#commands)
+ [

# 使用 Amazon Q Developer 在命令列上執行轉換
](run-CLI-transformations.md)
+ [

# 對命令列上的轉換進行故障診斷
](troubleshooting-CLI-transformations.md)
+ [

# Amazon Q Developer 命令列轉換工具版本歷史記錄
](transform-CLI-versions.md)

## 在本機環境中建置程式碼
<a name="local-builds"></a>

在轉換期間，Amazon Q 會在您的本機環境中執行驗證建置。Amazon Q 會在伺服器端進行多個步驟來轉換您的程式碼。在每個步驟之後，Amazon Q 會將程式碼傳送至您的本機環境，以建置並測試其所做的變更。然後程式碼會傳回伺服器端，以繼續轉換。

本機環境中的組建可讓 Amazon Q 執行需要存取私有資源的測試，藉此協助驗證轉換後的程式碼。為了將在本機環境中建置 AI 生成程式碼所伴隨的安全風險降至最低，Amazon Q 會檢閱並更新其產生的程式碼，以解決安全疑慮。

**注意**  
Amazon Q 會根據專案的請求、說明和內容執行轉換。為了維護安全性，避免在專案儲存庫中包含外部、未經審核的成品，並一律驗證轉換後程式碼的功能和安全性。

## 命令
<a name="commands"></a>

如需執行這些命令的逐步指示，請參閱 [使用 Amazon Q Developer 在命令列上執行轉換](run-CLI-transformations.md)。

若要設定轉換並向 Amazon Q Developer 專業方案進行身分驗證，請執行：

```
qct configure
```

若要開始轉換以進行 Java 升級，請執行下列命令。針對 *<your-source-java-version>*，您可以輸入 `JAVA_1.8`、`JAVA_8`、`JAVA_11`、`JAVA_17` 或 `JAVA_21`。針對 *<your-target-java-version>*，您可以輸入 `JAVA_17` 或 `JAVA_21`。`--source_version` 和 `--target_version` 為選用。`--trust` 旗標可在執行轉換的同時審核程式碼，以維護安全性。

```
qct transform --source_folder <path-to-folder>
    --source_version <your-source-java-version>        
    --target_version <your-target-java-version>
    --trust
```

若要開始轉換以進行 SQL 轉換，請執行：

```
qct transform --source_folder <path-to-folder>
    --sql_conversion_config_file <path-to-sql-config-file>
```

若要查看您用於轉換的命令列工具版本，請執行：

```
qct -v
```

若要取得轉換協助，請執行：

```
qct -h
```

若要檢視轉換任務歷史記錄，請執行：

```
qct history
```

如需檢視和管理轉換任務歷史記錄的詳細資訊，請參閱 [在命令列上檢視任務歷史記錄](transformation-job-history.md#cli-job-history)。

# 使用 Amazon Q Developer 在命令列上執行轉換
<a name="run-CLI-transformations"></a>

完成以下步驟，以使用 Amazon Q Developer 命令列工具在命令列上轉換程式碼。

## 先決條件
<a name="CLI-transformation-prerequisites"></a>

在命令列上開始轉換之前，必須符合下列先決條件：
+ 如果您要升級 Java 程式碼版本，您的專案須符合[使用 Amazon Q 升級 Java 版本的先決條件](code-transformation.md#java-upgrade-prerequisites)。
+ 如果您要轉換 Java 應用程式中的內嵌 SQL，您的應用程式須符合[使用 Amazon Q 轉換內嵌 SQL 的先決條件](transform-sql.md#sql-transform-prereqs)。
+ 您的命令列環境已安裝 Python。這是您將安裝命令列工具的方式。最低支援版本為 Python 3.12。
+ 您要在 macOS 或 Linux 上執行轉換。
+ 您應用程式的大小為 2 GB 或更小。
+ 如果您希望 Amazon Q 升級特定相依性，則須已設定[相依性升級檔案](#step-3-dependency-upgrade-file)。

## 步驟 1：選擇身分驗證方法並新增許可
<a name="step-1-permissions-auth"></a>

您可以進行 IAM Identity Center 身分驗證，以便在命令列上執行轉換。確定您具備適當的許可。

**注意**  
命令列上執行的轉換不支援客戶自管金鑰。

### 新增許可
<a name="transform-CLI-add-permissions"></a>

與您用來進行身分驗證的 Amazon Q Developer 訂閱相關聯的 IAM 身分，必須具有在命令列上執行轉換的許可。繼續進行之前，請確定您的 IAM 身分具有 [允許使用者在命令列上執行轉換](id-based-policy-examples-users.md#id-based-policy-examples-allow-cli-transformations) 中定義的許可。

### 透過 Amazon Q Developer 訂閱向 IAM Identity Center 進行身分驗證
<a name="auth-IdC"></a>

若要向 IAM Identity Center 進行身分驗證，您的管理員必須將您[以員工使用者身分訂閱 Amazon Q Developer 專業方案](subscribe-users.md)，而且您必須提供啟動 URL 才能透過訂閱進行身分驗證。您或您的管理員可以在 Amazon Q Developer 主控台中找到啟動 URL。如需詳細資訊，請參閱 [尋找啟動 URL 以搭配 Amazon Q Developer 使用](manage-account-details.md)。

若要新增必要的許可，請參閱 [新增許可](#transform-CLI-add-permissions)。

您可以在 [步驟 4：設定和身分驗證](#step-4-configure-auth) 中提供啟動 URL。

## 步驟 2：安裝工具
<a name="step-2-install"></a>



1. [下載 Amazon Q 命令列工具以進行轉換](https://desktop-release.codewhisperer.us-east-1.amazonaws.com/amzn_qct_cli/amzn_qct_cli-1.2.2.zip)並解壓縮。

   若要下載舊版命令列工具，請參閱 [版本歷史記錄](transform-CLI-versions.md)。

1. 我們建議您使用 Python 設定虛擬環境來安裝工具。若要建立虛擬環境，請在您要安裝工具並執行的目錄中開啟終端視窗：

   ```
   python -m venv qct-cli 
   ```

1. 若要啟用虛擬環境，請執行：

   ```
   source qct-cli/bin/activate 
   ```

1. 若要在命令列上安裝工具，請根據您的電腦架構，執行下列命令並包含您將工具解壓縮所在的路徑：

------
#### [ Linux\$1aarch64 ]

   ```
   pip install <path/to/unzipped-tool>/Linux_aarch64/amzn_qct_cli-1.2.2-py3-none-any.whl
   ```

------
#### [ Linux\$1x86\$164 ]

   ```
   pip install <path/to/unzipped-tool>/Linux_x86_64/amzn_qct_cli-1.2.2-py3-none-any.whl
   ```

------
**注意**  
如果您使用較舊的命令列工具版本進行轉換，請將 `1.2.2` 取代為您下載的[版本](transform-CLI-versions.md)。

1. 若要確認工具已安裝，請執行：

   ```
   which qct
   ```

## 步驟 3：建立相依性升級檔案 (選用)
<a name="step-3-dependency-upgrade-file"></a>

您可以將*相依性升級檔案*提供給 Amazon Q，此 YAML 檔案中會列出專案相依性，以及轉換過程中要升級哪些版本。藉由提供相依性升級檔案，您就可以指定 Amazon Q 可能不知道要進行升級的第三方和第一方相依性。

第一方相依性是指您的組織維護的程式庫、外掛程式和架構，而且這些只能在本機或組織的私有網路上使用。Amazon Q 在您的本機環境中執行建置時，可以存取您的第一方相依性。如需詳細資訊，請參閱[在本機環境中建置程式碼](transform-CLI.md#local-builds)。第三方相依性是公開提供或開放原始碼的相依性，這些並非您組織獨有。

您可以在 YAML 檔案中指定要升級的第一方相依性，Amazon Q 會在 JDK 升級期間 (例如 Java 8 升級到 17) 將這些相依性升級。您可以在初始 JDK 升級之後，初始化另一次轉換 (17 到 17 或 21 到 21) 以升級第三方相依性。

一旦 Amazon Q 執行最低 JDK 升級，您就可以初始化另一次轉換來升級所有第三方相依性。或者，您可以在 YAML 檔案中指定第三方相依性及其版本，以在程式庫升級轉換期間僅升級這些相依性。

Amazon Q 會在轉換期間提示您提供相依性升級檔案。如果您想要提供檔案，請先確定您已正確設定檔案。以下是 YAML 檔案中的必要欄位：
+ name - 相依性升級檔案的名稱。
+ description (選用) - 相依性升級檔案的說明，以及用於哪一個轉換。
+ dependencyManagement - 包含要升級的相依性和外掛程式清單。
+ dependencies - 包含要升級的程式庫名稱和版本。
+ plugins - 包含要升級的外掛程式名稱和版本。
+ identifier - 程式庫、外掛程式或其他相依性的名稱。
+ targetVersion - 升級後的相依性版本。
+ versionProperty (選用) - 您定義的相依性版本，如您應用程式的 `pom.xml` 檔案中的 `properties` 標籤所設定。
+ originType - 相依性為第一方或第三方，以 FIRST\$1PARTY 或 THIRD\$1PARTY 指定。

以下是相依性升級 YAML 檔案的範例，以及供 Amazon Q 剖析的必要組態：

```
name: dependency-upgrade
  
description: "Custom dependency version management for Java migration from JDK 8/11/17 to JDK 17/21"
  
  
dependencyManagement:
  
  dependencies:
  
    - identifier: "com.example:library1"
  
      targetVersion: "2.1.0"
  
      versionProperty: "library1.version"  # Optional
  
      originType: "FIRST_PARTY"   
  
    - identifier: "com.example:library2"
  
      targetVersion: "3.0.0"
  
      originType: "THIRD_PARTY"
  
  plugins:
  
    - identifier: "com.example.plugin"
  
      targetVersion: "1.2.0"
  
      versionProperty: "plugin.version"  # Optional
            
      originType: "THIRD_PARTY"
```

## 步驟 4：設定和身分驗證
<a name="step-4-configure-auth"></a>

您必須先向 IAM Identity Center 進行身分驗證，並提供轉換的組態詳細資訊，才能開始轉換。

1. 若要啟動轉換組態程序，請執行下列命令：

   ```
   qct configure
   ```

1. 系統會提示您為每個支援的 Java 版本輸入 JDK 路徑。您只需要指定 Java 應用程式來源版本的 JDK 路徑，不需指定目標版本。

1. 接著向 IAM Identity Center 進行身分驗證，系統會提示您輸入 Amazon Q Developer 專業方案訂閱設定檔的啟動 URL。

   然後，輸入您訂閱 AWS 區域 的 ，格式如下：`us-east-1`。如需支援的區域的清單，請參閱 [支援的地區](regions.md)。如需區域代碼清單，請參閱《AWS 一般參考 指南》**中的[區域端點](https://docs.aws.amazon.com/general/latest/gr/rande.html#regional-endpoints)。

1. 您的組態偏好設定會儲存至 configuration.ini 檔案。

## 步驟 5：執行轉換
<a name="step-5-run-transformation"></a>

選擇您要執行的轉換類型，以查看所需的組態和命令。

**注意**  
請勿在程式碼轉換期間關閉或關上本機電腦，因為用戶端組建需要穩定的網路連線。

------
#### [ Java upgrade ]

**修改轉換計畫**

在 Java 版本升級期間，Amazon Q 會產生轉換計畫，供您在轉換開始之前檢閱。您可以選擇請求對計畫進行下列變更：
+ Amazon Q 從計畫中包含的清單升級哪些程式庫
  + 範例提示：
    + 僅升級 <dependency1>、<dependency2> 和 <dependency5>
    + 不升級 <dependency1> 或 <dependency2>
+ 要升級程式庫的目標版本
  + 範例提示：
    + 將 <dependency> 升級至此版本，而非 <version>
+ Amazon Q 應執行哪些步驟
  + 範例提示：
    + 僅完成步驟 1-7
    + 不執行步驟 5-9
+ 新增要升級的其他相依性 (升級至較新的 JDK 版本時才有此選項)
  + 範例提示：
    + 同時將 <dependency1> 升級至 <version2>

**升級 Java 程式碼**

1. 執行下列命令來啟動轉換以進行 Java 升級。將 `<path-to-folder>` 取代為包含您轉換之程式碼的資料夾路徑，並將 `<your-target-java-version>` 取代為 `JAVA_17` 或 `JAVA_21`。

   ```
   qct transform --source_folder <path-to-folder>
       --target_version <your-target-java-version>
   ```

   其他命令選項：
   + 如果您要指定要升級的相依性，請新增 `--dependency_upgrade_file` 選項並包含相依性升級檔案的路徑。
   + 如果您不想要檢閱或更新轉換計畫，可將 `--no-interactive` 旗標新增至命令。Amazon Q 不會要求您提供有關計畫的意見回饋，而您也沒有機會請求變更。

1. 您的 Maven 版本會在轉換開始之前驗證。如果您至少有最低支援版本，則會看到下列輸出：

   ```
   Running command: mvn --version at: path/to/current/directory 
   Your Maven version is supported for transformations.
   ```

   如果您沒有支援的 Maven 版本，則必須將其更新才能繼續。如需更多資訊，請參閱[先決條件](#CLI-transformation-prerequisites)。

1. 如果您未新增 `--no-interactive` 旗標，Amazon Q 會提示您提供有關轉換計畫的意見回饋。您可以用英文自然語言說明要進行的變更，如果 Amazon Q 可支援您請求的變更，則會更新計畫。

1. Amazon Q 開始進行轉換。它會在整個轉換過程中輸出狀態更新。完成後，Amazon Q 會提供輸出轉換結果、日誌和組態檔案的路徑。

   升級後的程式碼將遞交至 Amazon Q 建立的新分支。Amazon Q 會根據您執行 `qct configure` 時所做的選擇，分成一或多次遞交程式碼。

1. 如果您在升級 Java 版本後執行另一次轉換，請在您遞交第一次轉換之變更的相同分支中啟動第二次轉換。

------
#### [ SQL conversion ]

在開始之前，請確定您已閱讀 [使用 Amazon Q Developer 轉換 Java 應用程式中的內嵌 SQL](transform-sql.md)，以了解此類型轉換的先決條件。

1. 若要轉換內嵌 SQL，您必須先建立 YAML 檔案，其中包含 [AWS DMS 結構描述轉換](https://docs.aws.amazon.com/dms/latest/sbs/schema-conversion-oracle-postgresql.html)中結構描述中繼資料檔案的路徑。

   以下是檔案所需的格式：

   ```
   schema_conv_metadata_path: <path-to-metadata-zip-file>
   ```

1. 執行下列命令來啟動轉換進行 SQL 轉換。將 `<path-to-folder>` 取代為包含您要轉換之程式碼的資料夾路徑，並將 `<path-to-sql-config-file>` 取代為您在步驟 1 中建立的 YAML 檔案路徑。

   ```
   qct transform --source_folder <path-to-folder>
       --sql_conversion_config_file <path-to-sql-config-file>
   ```

1. 如果 Amazon Q 在您的結構描述中繼資料檔案中找到多個結構描述，則會停止轉換並提供偵測到的結構描述清單。選擇要用於 SQL 轉換的結構描述，然後將新欄位 `schema: <schema-name>` 新增至 YAML 檔案。

1. Amazon Q 開始進行轉換。它會在整個轉換過程中輸出狀態更新。完成後，Amazon Q 會提供輸出轉換結果、日誌和組態檔案的路徑。

   升級後的程式碼將遞交至 Amazon Q 建立的新分支。

------

## 暫停或取消轉換
<a name="pause-cancel-CLI-transformations"></a>

您可以選擇暫停或取消目前的轉換任務。您可以暫停轉換任務長達 12 小時，然後再次繼續執行。

**若要暫停或取消程式碼轉換任務**

1. 在 CLI 終端中，按下鍵盤上的 **Ctrl\$1C**。

1. 選取您要暫停或取消轉換。
   + 如果您要暫停程式碼轉換任務，則輸入 `1`。您可以使用下列 QCT 命令在 12 小時內繼續執行任務，以繼續程式碼轉換：``qct transform --source_folder=≤/Path/Given/Originally/To/QCT>``。
   + 如果您要取消程式碼轉換任務，則輸入 `2`。

# 對命令列上的轉換進行故障診斷
<a name="troubleshooting-CLI-transformations"></a>

以下資訊可協助您針對使用 Amazon Q Developer 在命令列上轉換應用程式時常見的問題進行故障診斷。

## 為什麼我的持有人權杖未重新整理？
<a name="bearer-token-refresh"></a>

如果您看到以下錯誤，表示您需要重新整理用於身分驗證的持有人權杖。

```
Refreshing bearer token
('Error refreshing bearer token due to: ', InvalidGrantException('An error occurred (InvalidGrantException) when calling the CreateToken operation: '))
('Error getting bearer token due to: ', RuntimeError(('Error refreshing bearer token due to: ', InvalidGrantException('An error occurred (InvalidGrantException) when calling the CreateToken operation: '))))
```

若要解決此錯誤，請執行下列命令：

```
rm ~/.aws/qcodetransform/credentials.json
```

移除過時的憑證檔案後，再次執行 `qct transform` 以重新啟動轉換。

## 為什麼未使用最新版本的命令列工具？
<a name="install-latest-version"></a>

即使您下載新版的命令列工具進行轉換，系統有時仍會使用舊版工具。

若要確保您使用最新版的工具，請下載[最新版本](transform-CLI-versions.md)。然後根據您的電腦架構，執行下列命令並包含您將工具解壓縮所在的路徑：

------
#### [ Linux\$1aarch64 ]

```
pip install <path/to/unzipped-tool>/Linux_aarch64/amzn_qct_cli-1.2.2-py3-none-any.whl --force-reinstall
```

------
#### [ Linux\$1x86\$164 ]

```
pip install <path/to/unzipped-tool>/Linux_x86_64/amzn_qct_cli-1.2.2-py3-none-any.whl --force-reinstall
```

------

**注意**  
如果您使用較舊的命令列工具版本進行轉換，請將 `1.2.2` 取代為您下載的[版本](transform-CLI-versions.md)。

# Amazon Q Developer 命令列轉換工具版本歷史記錄
<a name="transform-CLI-versions"></a>

請檢閱下列資訊，以了解 Amazon Q Developer 命令列轉換工具目前和過去版本的詳細資訊。表中包含每個版本的下載連結、發行日期和版本備註。


****  

| 版本 | 版本日期 | 版本備註 | 
| --- | --- | --- | 
|   [1.2.2 （最新）](https://desktop-release.codewhisperer.us-east-1.amazonaws.com/amzn_qct_cli/amzn_qct_cli-1.2.2.zip)   | 2026 年 2 月 26 日 | 已將 AWS 轉換自訂的促銷橫幅新增至 QCT CLI。轉換命令執行和說明文字上的橫幅顯示。新的 --skip-banner 旗標來隱藏橫幅輸出。 | 
|   [1.2.1](https://desktop-release.codewhisperer.us-east-1.amazonaws.com/amzn_qct_cli/amzn_qct_cli-1.2.1.zip)   | 2025 年 9 月 9 日 | 更新了 Maven 延伸模組，以加入初始專案上傳期間的第一方父 POM | 
|   [1.2.0](https://desktop-release.codewhisperer.us-east-1.amazonaws.com/amzn_qct_cli/amzn_qct_cli-1.2.0.zip)   | 2025 年 8 月 7 日 | 新增了檢視任務歷史記錄和 Maven Java 專案模組結構視覺化的支援。 | 
|   [1.1.0](https://desktop-release.codewhisperer.us-east-1.amazonaws.com/amzn_qct_cli/amzn_qct_cli-1.1.0.zip)   | 2025 年 7 月 21 日 | 包括收集轉換相關遙測的支援。 | 
|   [1.0.0](https://desktop-release.codewhisperer.us-east-1.amazonaws.com/amzn_qct_cli/amzn_qct_cli-1.0.0.zip)   | 2025 年 6 月 27 日 | 命令列轉換工具已全面推出，僅支援透過 IAM Identity Center AWS 搭配 Amazon Q Developer Pro 訂閱進行身分驗證。新增了對歐洲 (法蘭克福) 區域中訂閱的支援。 | 
|   [0.6.0](https://desktop-release.codewhisperer.us-east-1.amazonaws.com/amzn_qct_cli/amzn_qct_cli-0.6.0.zip)   | 2025 年 6 月 6 日 | 包括對提供相依性升級檔案以及對轉換計畫進行迭代的支援。 | 
|   [0.5.2](https://desktop-release.codewhisperer.us-east-1.amazonaws.com/amzn_qct_cli/amzn_qct_cli-0.5.2.zip)   | 2025 年 4 月 16 日 | 錯誤修正，可解決包含第一方相依性的應用程式繼續執行任務和失敗的問題。 | 
|   [0.5.1](https://desktop-release.codewhisperer.us-east-1.amazonaws.com/amzn_qct_cli/amzn_qct_cli-0.5.1.zip)   | 2025 年 3 月 13 日 | 當您使用 IAM 進行身分驗證時，不再需要提供 AWS 區域。同時包括錯誤修正，可在輸出日誌中包含任務狀態。 | 
|   [0.5.0](https://desktop-release.codewhisperer.us-east-1.amazonaws.com/amzn_qct_cli/amzn_qct_cli-0.5.0.zip)   | 2025 年 2 月 28 日 | 包括透過 驗證 IAM 的支援 AWS CLI。 | 
|   [0.4.1](https://desktop-release.codewhisperer.us-east-1.amazonaws.com/amzn_qct_cli/amzn_qct_cli-0.4.1.zip)   | 2025 年 2 月 17 日 | 修正錯誤，以包含輸入設定 Amazon Q Developer 訂閱 AWS 區域 之 的支援。 | 
|   [0.4.0](https://desktop-release.codewhisperer.us-east-1.amazonaws.com/amzn_qct_cli/amzn_qct_cli-0.4.0.zip)   | 2025 年 2 月 14 日 | 包括將 Java 應用程式升級至 Java 21 的支援。 | 
|   [0.3.0](https://desktop-release.codewhisperer.us-east-1.amazonaws.com/amzn_qct_cli/amzn_qct_cli-0.3.0.zip)   | 2025 年 2 月 12 日 | 包括在 Java 應用程式中轉換內嵌 SQL 的支援。 | 
|   [0.2.0](https://desktop-release.codewhisperer.us-east-1.amazonaws.com/amzn_qct_cli/amzn_qct_cli-0.2.0.zip)   | 2025 年 2 月 3 日 | 包括分多次遞交接收升級後 Java 程式碼的支援。 | 
|  [0.1.0](https://desktop-release.codewhisperer.us-east-1.amazonaws.com/amzn_qct_cli/amzn_qct_cli-0.1.0.zip)  | 2024 年 11 月 27 日 | 初始版本。包括從命令列升級 Java 程式碼版本的支援。 | 

# 檢視轉換任務歷史記錄
<a name="transformation-job-history"></a>

Amazon Q 提供完整的 Java 轉換任務歷史記錄概觀，可讓您追蹤和檢閱 IDE 與命令列中的轉換任務。

轉換任務歷史記錄包含下列任務的相關資訊：
+ **日期** - 轉換任務何時執行
+ **專案名稱** - 已轉換的專案名稱
+ **狀態** - 轉換任務的目前狀態
+ **持續時間** - 轉換完成所花的時間
+ **任務 ID** - 轉換任務的唯一識別符
+ **差異修補程式** - 顯示所有程式碼變更的最終差異修補程式檔案的連結或路徑
+ **摘要** - 包含所做變更詳細資訊的轉換摘要檔案的連結或路徑

**注意**  
只有此功能發行後執行的轉換才會在任務歷史記錄中提供。如需功能發行日期，請參閱 [《Amazon Q Developer 使用者指南》文件歷史記錄](doc-history.md)。

## 在 IDE 中檢視任務歷史記錄
<a name="ide-job-history"></a>

**注意**  
目前這項功能只在 Visual Studio Code 中提供。

Visual Studio Code 中的 Transformation Hub 提供了完整的 Java 轉換任務歷史記錄檢視。

Transformation Hub 中的表格列出過去 30 天內最近的 10 個轉換任務。從表格中，您可以存取轉換成品和重新整理任務，以追蹤進度並取得缺少的成品。

### 擷取轉換成品
<a name="retrieve-artifacts"></a>

您可以從任務歷史記錄表存取轉換成品，例如差異修補程式和摘要檔案。選擇適當的連結，以在 IDE 中開啟差異或摘要。

成品儲存在本機 `.aws/transform` 目錄中，因此您也可以存取先前從過去任務下載的轉換成品。

### 重新整理任務狀態
<a name="refresh-jobs"></a>

您可以從任務歷史記錄表重新整理任務狀態。重新整理失敗的任務，以便從伺服器端取得可能尚未到達您伺服器的更新狀態 (例如，在 Amazon Q 能夠繼續執行失敗的任務時)。您也可以重新整理已完成的任務，以下載可能尚未出現的成品。

### 如何針對 IDE 中執行的任務儲存任務歷史記錄
<a name="ide-history-storage"></a>

對於 Visual Studio Code，所有轉換任務資訊和成品都會儲存在本機的 `.aws/transform` 目錄中。儲存空間組織方式如下：

```
.aws/transform/
├── [project-name-1]/
│   ├── [job-id-1]/
│   │   ├── diff.patch
│   │   ├── [summary-1]/
│   │   │   └── summary.md
│   │   │   └── buildCommandOutput.log
│   └── [job-id-2]/
│       ├── diff.patch
│       ├── [summary-2]/
│       │   └── summary.md
│       │   └── buildCommandOutput.log
└── [project-name-2]/
    └── [job-id-3]/
        ├── diff.patch
        ├── [summary-3]/
        │   └── summary.md
        │   └── buildCommandOutput.log
```

## 在命令列上檢視任務歷史記錄
<a name="cli-job-history"></a>

對於命令列上的轉換，**qct history** 命令可讓您使用自訂選項存取轉換任務歷史記錄。

對於 CLI，轉換任務歷史記錄資訊會儲存在本機的 `.aws/qcodetransform/history/` 目錄中。

### 使用 qct 歷史記錄命令
<a name="cli-history-command"></a>

檢視轉換任務歷史記錄的基本命令為：

```
qct history
```

根據預設，此命令會顯示最近的 10 個轉換任務，以及任何暫停或進行中的任務。

您也可以使用 **--limit** 旗標指定要顯示的任務歷史記錄項目數。例如，若要顯示 20 個任務，請執行：

```
qct history --limit 20
```

# Java 轉換問題故障診斷
<a name="troubleshooting-code-transformation"></a>

以下資訊可協助您針對使用 Amazon Q Developer 轉換 Java 應用程式時常見的問題進行故障診斷。

**Topics**
+ [

## 為什麼 Amazon Q 無法上傳我的專案？
](#project-upload-fail)
+ [

## 為什麼我的 Maven 命令會失敗？
](#maven-commands-failing)
+ [

## 如何將 Maven 新增至我的 `PATH`？
](#add-maven-to-path)
+ [

## 為什麼 Amazon Q 無法建置我的程式碼？
](#build-fail)
+ [

## 為什麼我的轉換在經過 55 分鐘後失敗？
](#build-time-limit)
+ [

## 為什麼我無法下載轉換後的程式碼？
](#download-code-fail)
+ [

## 如何存取程式碼轉換日誌？
](#logs)
+ [

## 如何找到我的轉換任務 ID？
](#job-id)

## 為什麼 Amazon Q 無法上傳我的專案？
<a name="project-upload-fail"></a>

如果您的專案上傳失敗，可能是因為下列其中一個問題。請參閱您在 Amazon Q 中所看到錯誤的對應主題。

**Topics**
+ [

### 縮減專案大小
](#reduce-project-size)
+ [

### 在 IDE 中設定代理設定
](#configure-proxy)
+ [

### 允許存取 Amazon S3
](#allowlist-s3-bucket)

### 縮減專案大小
<a name="reduce-project-size"></a>

為了轉換您的程式碼，Amazon Q 會產生專案成品，其中包含您的原始程式碼、專案相依性和組建日誌。轉換任務的專案成品大小上限為 2 GB。如果您收到與專案成品大小相關的錯誤，則必須縮減專案的大小，或嘗試轉換較小的專案。您可以在程式碼轉換日誌中檢視專案成品檔案的大小。如需詳細資訊，請參閱[如何存取程式碼轉換日誌？](#logs)

### 在 IDE 中設定代理設定
<a name="configure-proxy"></a>

為了轉換程式碼，Amazon Q 會將專案成品上傳至服務擁有的 Amazon S3 儲存貯體。上傳過程涉及使用 SSL 或 TLS 憑證來建立 Amazon S3 與 IDE 之間的通訊。如果您使用代理伺服器，代理伺服器使用的 SSL 或 TLS 憑證必須受信任，否則 Amazon Q 無法上傳您的專案。

如果您收到與代理或憑證相關的錯誤，您可能需要設定讓 IDE 或作業系統信任您的憑證，或更新其他代理設定。

**注意**  
如果您位於組織的代理伺服器或防火牆後方，也可能會遇到與憑證無關的問題。如果您完成下列設定憑證的程序後仍發生問題，請聯絡您的網路管理員，確認您可從 IDE 與 Amazon S3 進行通訊。如需詳細資訊，請參閱[允許存取 Amazon S3](#allowlist-s3-bucket)。

#### 在 JetBrains 中設定憑證
<a name="configure-proxy-JB"></a>

若要設定您的 JetBrains IDE Java 執行階段環境 (JRE) 使其信任代理伺服器使用的 SSL 或 TLS 憑證，您必須將 SSL 或 TLS 憑證匯入 JRE 中的 `cacerts` 檔案。`cacerts` 檔案中包含 HTTPS 和 SSL 等安全連線的受信任根憑證，同時也是 JRE 安全設定的一部分。若要匯入憑證，請完成下列程序。

**注意**  
我們建議您在修改 `cacerts` 檔案之前先行備份，因為任何錯誤都可能導致安全連線發生問題。

1. 確定 JRE 中 `cacerts` 檔案的路徑。JetBrains IDE 隨附的內部 JRE 中 `cacerts` 檔案的路徑，取決於作業系統和您使用的 JetBrains IDE 版本。

   以下是常見作業系統中 `cacerts` 檔案的路徑範例。選擇您的作業系統以查看範例。
**注意**  
 `<JetBrains Installation Folder>` 是指安裝 JetBrains 產品所在的目錄。此目錄通常是在安裝過程中選擇。  
`jbr` 資料夾代表 JRE 與 JetBrains IDE 綁定，這是專為搭配 JetBrains IDE 使用而打造的特定 JRE 版本。

------
#### [ Windows ]

   Windows 上所安裝 JetBrains IDE 的 `cacerts` 檔案路徑為：

   ```
   <JetBrains Installation Folder>\jbr\bin\cacerts
   ```

   例如，如果您將 JetBrains IDE 安裝到 Windows 上的預設位置，則路徑可能是：

   ```
   C:\Program Files\JetBrains\jbr\bin\cacerts
   ```

------
#### [ macOS ]

   macOS 上所安裝 JetBrains IDE 的 `cacerts` 檔案路徑為：

   ```
   /Applications/JetBrains Toolbox/<version>/JetBrains Toolbox.app/Contents/jbr/Contents/Home/lib/security/cacerts
   ```

   例如，如果您將 JetBrains IDE 安裝到 macOS 上的預設位置，則路徑可能是：

   ```
   /Applications/JetBrains Toolbox/2022.3.4/JetBrains Toolbox.app/Contents/jbr/Contents/Home/lib/security/cacerts
   ```

------
#### [ Linux ]

   Linux 上所安裝 JetBrains IDE 的 `cacerts` 檔案路徑為：

   ```
   /opt/jetbrains/jbr/lib/security/cacerts
   ```

------

1. 確定您需要匯入 `cacerts` 檔案的憑證。憑證檔案的副檔名通常是 `.cer`、`.crt` 或 `.der`。如果您不確定要新增哪些憑證，請聯絡您的網路管理員。

1. 將憑證匯入 `cacerts` 金鑰存放區。您可以使用 Java `keytool` 命令進行這項操作。

   1. 開啟命令提示字元並輸入下列命令：

      ```
      keytool -import -alias <alias> -file <certificate_file> -keystore <path_to_cacerts>
      ```

   1. 針對 `<alias>`，您可以為您要匯入的憑證新增名稱，以供後續參考。此選項為選用。

   1. 針對 `<certificate_file>`，指定您要匯入之憑證的路徑。此路徑應該是包含憑證的 `.cer`、`.crt` 或 `.der` 檔案的路徑。

   1. 針對 `<path_to_cacerts>`，指定您在步驟 1 儲存的 `cacerts` 金鑰存放區檔案路徑。這是您要匯入憑證的檔案。

   例如，如果您要將名為 `my_certificate.cer` 的憑證匯入 Windows 上 IntelliJ IDEA 中所綁定 JRE 的 `cacerts` 金鑰存放區，並且要為憑證提供別名 `myalias`，則命令可能是：

   ```
   keytool -import -alias myalias -file my_certificate.cer -keystore "C:\Program Files\JetBrains\IntelliJ IDEA 2022.3.2\jbr\bin\cacerts"
   ```

1. 在匯入程序期間，系統會提示您輸入金鑰存放區密碼。`cacerts` 金鑰存放區的預設密碼為 `changeit`。

1. 執行命令後，系統會要求您信任憑證。若要確認憑證受信任並完成匯入，請輸入 `yes`。

1. 除了 JRE 之外，您可能還需要將憑證新增至 IDE 本身。如需詳細資訊，請參閱 JetBrains 文件中的[伺服器憑證](https://www.jetbrains.com/help/idea/settings-tools-server-certificates.html)。

#### 在 Visual Studio Code 中設定憑證
<a name="configure-proxy-VSC"></a>

若要設定 Visual Studio Code 信任代理伺服器所使用的 SSL 或 TLS 憑證，請確定您已為作業系統設定下列代理設定。

##### 在 macOS 上設定 Visual Studio Code 中的憑證
<a name="certs-mac"></a>

在 macOS 上為 Visual Studio Code 設定下列代理設定。

##### 將憑證新增至 macOS 鑰匙圈
<a name="w2aac11c16c17c13c23b7b9c11b5b1b5"></a>

您必須將代理伺服器使用的憑證新增至 macOS 鑰匙圈 (若您尚未這樣做)。如需有關將憑證新增至鑰匙圈的資訊，請參閱《Keychain Access 使用者指南》中的[使用 Mac 上的 Keychain Access 將憑證新增至鑰匙圈](https://support.apple.com/guide/keychain-access/add-certificates-to-a-keychain-kyca2431/mac)。

##### 安裝 Mac CA VSCode 延伸模組
<a name="w2aac11c16c17c13c23b7b9c11b5b1b7"></a>

[Mac CA VSCode 延伸模組](https://marketplace.visualstudio.com/items?itemName=linhmtran168.mac-ca-vscode)可讓 Amazon Q 存取您新增至 Mac 上 Keychain Access 的憑證。

若要安裝延伸模組：

1. 在 VS Code 延伸模組窗格中搜尋 `mac-ca-vscode`，然後選擇**安裝**。

1. 重新啟動 VS Code。

##### 在 macOS 上更新 VS Code 中的代理設定
<a name="w2aac11c16c17c13c23b7b9c11b5b1b9"></a>

更新下列設定，確保已為您的代理正確設定 VS Code。

1. 在 VS Code 中開啟設定。

1. 在搜尋列中，輸入 `proxy`。

1. 在 **Http：代理**欄位中，新增您的代理 URL。

1. 取消勾選 **Http：代理嚴格 SSL**。

1. 在 **Http：代理支援**下拉式清單中，選擇**開啟**。

1. 在「設定」搜尋列中，輸入 `http.experimental.systemCertificatesV2`。選取 **Http > 試驗：系統憑證 V2**。

##### 在 Windows 上設定 Visual Studio Code 中的憑證
<a name="certs-windows"></a>

在 Windows 上為 Visual Studio Code 設定下列代理設定。

##### 在 Windows 上新增憑證作為信任的根憑證
<a name="w2aac11c16c17c13c23b7b9c11b5b3b5"></a>

您必須將代理伺服器使用的憑證，新增至 Windows 上受信任的根憑證授權單位存放區 (若您尚未這樣做)。若要新增憑證，請完成下列程序：

1. 開啟搜尋工具或「執行」命令視窗。

1. 輸入下列命令以開啟 Certificate Manager 工具：

   ```
   certmgr.msc
   ```

1. 選擇**受信任的根憑證授權單位**存放區。

1. 用滑鼠右鍵按一下**憑證**，選擇**所有工作**，然後選擇**匯入...**。

1. 依照提供的指示匯入代理憑證。

1. 匯入憑證後，請確認憑證已新增。

   在**受信任的根認證授權單位**存放區中，按兩下**憑證**。用滑鼠右鍵按一下您新增的憑證，然後選擇**屬性**。在**憑證用途**下，**啟用此憑證的所有用途**選項應為已選取狀態。

##### 安裝 Win-CA VSCode 延伸模組
<a name="w2aac11c16c17c13c23b7b9c11b5b3b7"></a>

[Win-CA VSCode 延伸模組](https://marketplace.visualstudio.com/items?itemName=ukoloff.win-ca)可讓 Amazon Q 存取您新增至 Windows 中受信任的根憑證的憑證。

若要安裝延伸模組：

1. 在 VS Code 設定窗格中搜尋 `win-ca `。

1. 在**注入**下拉式清單中，選擇**附加**。

##### 在 Windows 上更新 VS Code 中的代理設定
<a name="w2aac11c16c17c13c23b7b9c11b5b3b9"></a>

更新下列設定，確保已為您的代理正確設定 VS Code。

1. 在 VS Code 中開啟設定。

1. 在搜尋列中，輸入 `proxy`。

1. 在 **Http：代理**欄位中，新增您的代理 URL。

1. 取消勾選 **Http：代理嚴格 SSL**。

1. 在 **Http：代理支援**下拉式清單中，選擇**開啟**。

1. 在「設定」搜尋列中，輸入 `http.experimental.systemCertificatesV2`。選取 **Http > 試驗：系統憑證 V2**。

1. 重新啟動 VS Code。

### 允許存取 Amazon S3
<a name="allowlist-s3-bucket"></a>

在轉換期間，Amazon Q 會將您的程式碼上傳至服務擁有的 Amazon S3 儲存貯體。如果您的網路或組織尚未設定 Amazon S3 的存取權，Amazon Q 將無法上傳您的專案。

為了確保 Amazon Q 能夠上傳您的專案，請確定您的代理組態和其他網路元件 (例如 Data Lost Prevention (DLP) 政策) 皆已設定為允許存取 Amazon S3。您可能還需要將 Amazon Q 上傳專案所在的 Amazon S3 儲存貯體加入允許清單。如需詳細資訊，請參閱[要列入允許清單的 Amazon S3 儲存貯體 URL 和 ARN](firewall.md#data-perimeters)。

如果您轉換大型專案，而 DLP 政策或其他網路元件未設定將 Amazon S3 儲存貯體加入允許清單，則這些政策和元件可能導致延遲並造成無法成功上傳。如果您選擇不將儲存貯體加入允許清單，則可能需要轉換較小的專案，Amazon Q 才能將其上傳。

## 為什麼我的 Maven 命令會失敗？
<a name="maven-commands-failing"></a>

以下是您可能會在 JetBrains 和 Visual Studio Code IDE 中看到的 Maven 組態問題。如果您解決問題後仍看到 Maven 錯誤，表示可能是您的專案有問題。使用錯誤日誌中的資訊來解決專案的任何問題，然後嘗試再次轉換專案。

### 在 JetBrains 中更新 Maven 組態
<a name="jetbrains"></a>

如果在 JetBrains 中因 Maven 命令問題而導致轉換失敗，**執行**索引標籤上會顯示錯誤日誌。使用日誌中的資訊來解決問題。以下是您可能需要解決的一些問題：
+ 確定您的 Maven 主路徑設定為**套件**。前往**設定**，然後展開**建置、執行、部署**區段。展開**建置工具**區段，然後展開 **Maven**。在 **Maven 主路徑**下拉式清單中，選擇**套件**。
+ 確定 Java 執行階段環境 (JRE) 使用您的專案 JDK。前往**設定**，然後展開**建置、執行、部署**區段。展開 **Maven** 並選擇**執行器**。在 **JRE** 下拉式清單中，選擇**使用專案 JDK**。
+ 確定已啟用 Maven。前往**設定**並選擇**外掛程式**。搜尋 Maven，並選擇 Maven 外掛程式。如果您看到**啟用**按鈕，請選擇該按鈕以啟用 Maven。

### 在 Visual Studio Code 中更新 Maven 組態
<a name="vscode"></a>

如果在 VS Code 中，轉換因 Maven 命令問題而失敗，包含錯誤日誌的文字檔案便會在新索引標籤中開啟。使用日誌中的資訊來解決問題。

確定您已設定下列其中一個選項：
+ 您專案的專案根資料夾中包含 Maven 包裝函式
+ 您的 `PATH` 上有 Amazon Q 支援的 Maven 版本

如需詳細資訊，請參閱[如何將 Maven 新增至我的 `PATH`？](#add-maven-to-path) 

## 如何將 Maven 新增至我的 `PATH`？
<a name="add-maven-to-path"></a>

若要在 VS Code 中轉換程式碼而不使用 Maven 包裝函式，您必須安裝 Maven，並將其新增至 `PATH` 變數。

若要檢查是否已正確安裝 Maven，請在 Visual Studio Code 之外新的作業系統終端中執行 `mvn -v`。您應該會看到包含您的 Maven 版本的輸出。

如果您是在 Visual Studio Code 終端收到輸出，而不是在您的作業系統終端，或是找不到命令，表示您需要將 Maven 新增至 `PATH`。

 若要將 Maven 新增至您的 `PATH`，請依照電腦的指示進行。

------
#### [ macOS ]

若要將 Maven 新增至您的 macOS `PATH`，請完成下列步驟。

1. 尋找您的 Maven 安裝目錄，或您安裝 Maven 所在的資料夾，並儲存該資料夾的路徑。

1. 在您選擇的編輯器中開啟 Shell 的組態檔案。近期 macOS 版本的預設 Shell 為 `zsh`，且預設組態檔案位於 `~/.zshrc`。

   將以下行新增至組態檔案的底部。將 `M2_HOME` 的值設定為您在步驟 1 中儲存的路徑：

   ```
   export M2_HOME="your Maven installation directory"
   export PATH="${M2_HOME}/bin:${PATH}"
   ```

   這些命令可在所有終端中提供 `mvn` 命令。

1. 關閉所有作業系統終端視窗，並結束所有 Visual Studio Code 執行個體。

1. 若要確認 Maven 已新增至您的 `PATH`，請開啟新的作業系統終端，並執行下列命令：

   ```
   mvn -v
   ```

   您應該會看到包含您的 Maven 版本的輸出。

1. 看到您的 Maven 輸出後，重新啟動 Visual Studio Code。您可能也需要重新啟動電腦。開啟新的 Visual Studio Code 終端並執行下列命令：

   ```
   mvn -v
   ```

   輸出應與步驟 4 中的輸出相同。如果 Visual Studio Code 輸出不同，請嘗試下列操作，以確定您的設定正確無誤：
   + 在 Visual Studio Code 中檢查您的 `PATH` 變數。IDE 延伸模組可能會更改 `PATH`，因而使其與您的本機 `PATH` 變數不同。解除安裝延伸模組，以將其從 `PATH` 中移除。
   + 檢查 Visual Studio Code 中的預設 Shell。如果設定為 `zsh` 以外的值，請針對您的 Shell 重複上述步驟。

------
#### [ Windows ]

若要將 Maven 新增至您的 Windows `PATH`，請完成下列步驟：

1. 尋找您的 Maven 安裝目錄，或您安裝 Maven 所在的資料夾，並儲存該資料夾的路徑。

1. 開啟「環境變數」視窗：

   1. 選擇 Windows 按鈕以開啟搜尋列。

   1. 輸入 `Edit environment variables for your account` 並選擇它。

1. 在**環境變數**視窗中，尋找 Path 變數。如果您已有 Path 變數，請選擇**編輯...** 進行更新。如果您未看到 Path 變數，請選擇**新增...** 新增該變數。

1. 在顯示的**編輯環境變數**視窗中，按兩下現有路徑以進行編輯，或選擇**新增**以新增路徑項目。

   將現有的 Maven 路徑項目取代為您在步驟 1 中儲存的路徑，或新增路徑作為新項目。在路徑結尾處，新增 `\bin` 作為尾碼，如下列範例所示：

   ```
   C:\Users\yourusername\Downloads\apache-maven-3.9.6-bin\apache-maven-3.9.6\bin
   ```

1. 選擇**確定**以儲存路徑項目，然後在**環境變數**視窗中再次選擇**確定**。

1. 開啟新的命令提示字元，並執行以下命令：

   ```
   mvn -v
   ```

   您應該會看到包含您的 Maven 版本的輸出。

------

## 為什麼 Amazon Q 無法建置我的程式碼？
<a name="build-fail"></a>

如果在 Amazon Q 建置程式碼時轉換失敗，則您的專案可能未針對 Amazon Q 建置程式碼的環境正確設定。您可能需要更新建置組態或程式碼實作。

檢閱 Amazon Q 提供的建置日誌輸出，以判斷是否有可對專案進行的變更。以下是一些可能導致 Amazon Q 無法建置程式碼的常見問題。

### 移除 pom.xml 中的絕對路徑
<a name="remove-absolute-path"></a>

如果您的 pom.xml 檔案中有絕對路徑，Amazon Q 將無法尋找相關檔案，因此可能無法建置您的程式碼。

以下是您的 `pom.xml` 檔案中可能包含的絕對路徑範例：

```
<toolspath>
    <path>/Library/Java/JavaVirtualMachines/jdk-11.0.11.jdk/Contents/Home/lib/tools.jar</path>
</toolspath>
```

您可以使用指標來建立相對路徑，而不使用絕對路徑。以下範例說明如何使用相對路徑取代先前的絕對路徑：

```
<toolspath>
    <path>${java.home}/../lib/tools.jar</path>
</toolspath>
```

### 在單元測試中移除本機或外部資料庫
<a name="remove-external-databases"></a>

Amazon Q 建置程式碼時，會在您的專案中執行任何單元測試。如果單元測試呼叫本機或外部資料庫，Amazon Q 將無法存取資料庫，因而導致建置失敗。為了避免建置失敗，您必須從單元測試中移除資料庫呼叫，或是在提交轉換之前移除單元測試。

## 為什麼我的轉換在經過 55 分鐘後失敗？
<a name="build-time-limit"></a>

如果您的程式碼轉換任務在經過 55 分鐘後失敗，可能是您的程式碼建置時間超過建置時間限制。目前建置程式碼的時間限制為 55 分鐘。

如果您的本機建置時間需要 55 分鐘或更長的時間，請縮短專案的建置時間來轉換程式碼。如果您的本機建置比使用程式碼轉換的建置更快，請檢查您的專案是否有可能失敗的任務，或是在不同環境中花費更長時間的任務。請考慮停用長時間執行的測試案例。另外，請考慮針對嘗試存取可能無法從安全的 IDE 環境或網際網路取得之資源的情況使用逾時。

## 為什麼我無法下載轉換後的程式碼？
<a name="download-code-fail"></a>

如果您在轉換完成後無法下載程式碼，可能是因為下列其中一個問題。請參閱您在 Amazon Q 中所看到錯誤的對應主題。

**Topics**
+ [

### 縮減專案大小
](#reduce-project-size-output)
+ [

### 在 30 天內下載程式碼差異
](#download-30-hrs)
+ [

### 在 IDE 中設定代理設定
](#configure-proxy-download)
+ [

### 移除 JetBrains 代理設定中的萬用字元
](#remove-wildcard)

### 縮減專案大小
<a name="reduce-project-size-output"></a>

轉換完成後，Amazon Q 會產生輸出成品，其中包含升級後程式碼的差異，以及包含其所做變更相關資訊的轉換摘要。輸出成品必須為 1 GB 或更小，IDE 才能下載。

如果輸出成品超過限制，您將無法下載升級後的程式碼或轉換摘要。嘗試轉換較小的專案，以防止產生大型輸出成品。如果問題仍然存在，請聯絡 支援。如需 支援 與 Amazon Q 聯絡的相關資訊，請參閱 [使用 Amazon Q Developer 與 支援 聊天](support-chat.md)。

### 在 30 天內下載程式碼差異
<a name="download-30-hrs"></a>

包含升級後程式碼的程式碼差異檔案只會在轉換完成後 30 天內提供。如果轉換完成後超過 30 天，請重新啟動轉換以下載差異檔案。

### 在 IDE 中設定代理設定
<a name="configure-proxy-download"></a>

Amazon Q 會從服務擁有的 Amazon S3 儲存貯體下載升級後的程式碼。下載過程涉及使用 SSL 或 TLS 憑證來建立 Amazon S3 與 IDE 之間的通訊。如果您使用代理伺服器，代理伺服器使用的 SSL 或 TLS 憑證必須受信任，否則 Amazon Q 無法上傳您的專案。

若要下載程式碼，您可能需要將 IDE 設定為信任憑證，或更新其他代理設定。如需有關更新代理設定的詳細資訊，請參閱 [在 IDE 中設定代理設定](#configure-proxy)。

### 移除 JetBrains 代理設定中的萬用字元
<a name="remove-wildcard"></a>

如果您已在 JetBrains IDE 中設定代理設定，您可能會在下載升級後的程式碼時看到下列錯誤：

```
software.amazon.awssdk.core.exception.SdkClientException: 
Unable to execute HTTP request: Dangling meta character '*' near index 0
```

這可能是因為 IDE 代理設定的**無代理**欄位中有萬用字元 (\$1) 所造成。Amazon Q 使用的 Java SDK 不支援在此欄位中使用萬用字元項目。

若要下載程式碼，請移除**無代理**欄位中的任何萬用字元，然後重新啟動 IDE。如果您需要指定應略過代理的主機，請使用規則表達式，而非萬用字元。若要更新 JetBrains IDE 中的代理設定，請參閱 JetBrains 文件中的 [HTTP 代理](https://www.jetbrains.com/help/idea/settings-http-proxy.html)。

## 如何存取程式碼轉換日誌？
<a name="logs"></a>

### 存取 JetBrains 中的日誌
<a name="jetbrains-logs"></a>

如需如何存取 JetBrains 日誌檔案的相關資訊，請參閱 JetBrains 文件中的[尋找 IDE 日誌檔案](https://intellij-support.jetbrains.com/hc/en-us/articles/207241085-Locating-IDE-log-files)。

若要在 JetBrains 中尋找 Amazon Q 發出的日誌，請在 IDE 日誌中搜尋下列字串：

```
software.aws.toolkits.jetbrains.services.codemodernizer
```

程式碼轉換日誌會以上述字串開頭。Maven 產生的日誌會顯示在**執行**索引標籤上，且日誌項目前後都會有上述字串。

### 存取 Visual Studio Code 中的日誌
<a name="vsc-logs"></a>

若要在 VS Code 中尋找 Amazon Q 發出的日誌，請完成下列步驟：

1. 在頂端導覽列中選擇**檢視**，然後選擇**命令面板**。

1. 在顯示的命令面板中搜尋 `Amazon Q: View Logs`。

1. 日誌會在 IDE 中開啟。若要搜尋 `CodeTransformation` 的日誌檔案，請使用 `CMD + F` 或 `Control + F`。

VS Code 中的程式碼轉換日誌會加上 `CodeTransformation:` 字首。以下是 VS Code 中針對 Maven 複製相依性錯誤產生的日誌範例：

```
2024-02-12 11:29:16 [ERROR]: CodeTransformation: Error in running Maven copy-dependencies command mvn = /bin/sh: mvn: command not found
```

## 如何找到我的轉換任務 ID？
<a name="job-id"></a>

### 在 JetBrains 中尋找您的任務 ID
<a name="jetbrains"></a>

若要在 JetBrains 中尋找轉換任務 ID，請前往 **Transformation Hub** 中的**轉換詳細資訊**索引標籤，然後選擇**顯示任務狀態** (時鐘) 圖示。

### 在 Visual Studio Code 中尋找您的任務 ID
<a name="vs-code"></a>

若要在 VS Code 中尋找轉換任務 ID，請前往 **Transformation Hub**，然後選擇**顯示任務狀態** (時鐘) 圖示。

# 使用 Amazon Q Developer 轉換 .NET 應用程式
<a name="transform-dotnet-IDE"></a>

Amazon Q Developer 可以透過採用生成式 AI 技術的重構工作流程，將 Windows 型 .NET 應用程式移植到與 Linux 相容的跨平台 .NET 應用程式。Amazon Q 還可協助您將過時的跨平台 .NET 應用程式版本升級至較新的版本。

為了轉換 .NET 解決方案或專案，Amazon Q 會分析您的程式碼基底、確定移植您的應用程式所需的更新，並且在轉換開始之前產生轉換計畫。在此分析期間，Amazon Q 會將您的 .NET 解決方案或專案分成程式碼群組，方便您在轉換計畫中檢視。*程式碼群組*是專案及其所有相依性，這些會共同產生可建置的程式碼單位，例如動態連結程式庫 (DLL) 或可執行檔。

在轉換期間，Amazon Q 會在 Transformation Hub 提供逐步更新，您可在此監控進度。Amazon Q 轉換您的應用程式後，會在差異檢視中產生摘要並包含提議的變更，您可以選擇在接受變更之前驗證變更。當您接受變更時，Amazon Q 會就地更新您的 .NET 解決方案或專案。

Amazon Q 會執行四個主要任務，將 .NET 應用程式移植到 Linux：
+ **升級語言版本** - 將過時的 C\$1 程式碼版本取代為與 Linux 相容的 C\$1 版本。
+ **從 .NET Framework 移轉至跨平台 .NET** - 將專案和套件從 Windows 相依的 .NET Framework 移轉至與 Linux 相容的跨平台 .NET。
+ **重寫程式碼以便與 Linux 相容** - 重構和重寫已棄用且效率不佳的程式碼元件。
+ **產生 Linux 相容性整備報告** - 對於需要使用者介入才能在 Linux 上建置和執行程式碼的開放式任務，Amazon Q 會提供轉換後設定應用程式所需的詳細動作報告。

如需 Amazon Q 如何執行 .NET 轉換的詳細資訊，請參閱[運作方式](how-dotnet-transformation-works.md)。

**Topics**
+ [

## 配額
](#quotas-dotnet-transformation)
+ [

# 在 Visual Studio 中使用 Amazon Q Developer 移植 .NET 應用程式
](port-dotnet-application.md)
+ [

# Amazon Q Developer 如何轉換 .NET 應用程式
](how-dotnet-transformation-works.md)
+ [

# IDE 中 .NET 轉換問題的故障診斷
](troubleshooting-dotnet-transformation-IDE.md)

## 配額
<a name="quotas-dotnet-transformation"></a>

在 IDE 中使用 Amazon Q 進行 .NET 轉換維持以下配額：
+ **每個任務的程式碼行數** - Amazon Q 可在某一特定轉換任務中轉換的程式碼行數上限。這也是 .NET 轉換的每月總限制。
+ **並行任務** - 您可以同時執行的轉換任務數量上限。此配額適用於 IDE 中的所有轉換，包括 [Java 轉換](transform-java.md)。


| 資源 | 配額 | 
| --- | --- | 
| 每個任務的程式碼行數 | 100,000 行程式碼 | 
| 並行任務數 |  每個使用者 1 個任務 每個 AWS 帳戶 2 個任務  | 

# 在 Visual Studio 中使用 Amazon Q Developer 移植 .NET 應用程式
<a name="port-dotnet-application"></a>

完成這些步驟，以在 Visual Studio 中使用 Amazon Q Developer 將 Windows 型 .NET 應用程式，移植到與 Linux 相容的跨平台 .NET 應用程式。

## 步驟 1：事前準備
<a name="transform-dotnet-prerequisites"></a>

繼續進行之前，請確定您已完成[在 IDE 中設定 Amazon Q ](https://docs.aws.amazon.com/amazonq/latest/qdeveloper-ug/q-in-IDE.html)中的步驟。

在您開始 .NET 轉換任務之前，務必確定您的應用程式符合以下先決條件：
+ 您的應用程式僅包含以 C\$1 撰寫的 .NET 專案。
+ 您的應用程式只有 Microsoft 編寫的 NuGet 套件相依性 
+ 您的應用程式僅使用 UTF-8 字元。如果您的應用程式使用非 UTF-8 字元，Amazon Q 仍會嘗試轉換您的程式碼。
+ 如果您的應用程式相依於 Internet Information Services (IIS)，則只會使用預設 IIS 組態
+ Amazon Q 將評估您選取的專案類型及其相依性，以建立程式碼群組。您的程式碼群組只會包含下列專案類型：
  + 主控台應用程式
  + 類別庫 
  + Web API
  + WCF 服務
  + Model View Controller (MVC) 和 Single Page Application (SPA) 的商業邏輯層
  + 測試專案

**注意**  
Amazon Q 不支援轉換 UI 層元件，例如 Razor 檢視或 WebForms ASPX 檔案。如果 Amazon Q 在解決方案或專案中偵測到 UI 層元件，則會藉由排除 UI 層元件的方式執行部分轉換，而且您可能需要進一步重構，才能在目標 .NET 版本上建置程式碼。

## 步驟 2：轉換應用程式
<a name="transform-dotnet-app"></a>

若要轉換 .NET 解決方案或專案，請完成下列程序：

1. 在 Visual Studio 中開啟您要轉換的任何 C\$1 型解決方案或專案。

1. 在編輯器中開啟任何 C\$1 檔案。

1. 選擇**解決方案總管**。

1. 在解決方案總管中，用滑鼠右鍵按一下您要轉換的解決方案或專案，然後選擇**使用 Amazon Q Developer 移植**。

1. **使用 Amazon Q Developer 移植**視窗隨即出現。

   **選擇要轉換的解決方案或專案**下拉式功能表中已選擇您選取的解決方案或專案。您可以展開功能表，以選擇不同的解決方案或專案來進行轉換。

   在**選擇 .NET 目標**下拉式功能表中，選擇您要升級的目標 .NET 版本。

1. 選擇**確認**以開始轉換。

1. Amazon Q 會開始轉換您的程式碼。您可以檢視其產生的轉換計畫，以了解其如何轉換您的應用程式的詳細資訊。

   此時 **Transformation Hub** 會開啟，您可以在此監控轉換期間的進度。Amazon Q 完成**等待任務轉換啟動**步驟後，您可以在轉換期間瀏覽至專案或解決方案以外的位置。

1. 轉換完成後，瀏覽至 **Transformation Hub**，然後選擇**檢視差異**，以在差異檢視中檢閱 Amazon Q 提議的變更。

1. 選擇**檢視程式碼轉換摘要**，以取得 Amazon Q 所做變更的詳細資訊。您也可以選擇**將摘要下載為 .md**，以下載轉換摘要。

   如果在 Linux 移植狀態下，**程式碼群組**表中的任何項目需要輸入，您必須手動更新一些檔案，才能在 Linux 上執行應用程式。

   1. 從**動作**下拉式功能表中，選擇**下載 Linux 整備報告**。

   1. 此時會開啟一個 .csv 檔案，其中包含您必須完成的任何專案或解決方案變更，如此您的應用程式才會與 Linux 相容。檔案中包含需要更新的專案和檔案、要更新的項目說明，以及問題的說明。使用**建議**欄，以獲得如何解決 Linux 整備問題的想法。

1. 若要就地更新您的檔案，請從**動作**下拉式功能表選擇**接受變更**。

# Amazon Q Developer 如何轉換 .NET 應用程式
<a name="how-dotnet-transformation-works"></a>

請檢閱下列各節，了解如何使用 Amazon Q Developer 進行 .NET 轉換的詳細資訊。

## 分析您的應用程式並產生轉換計畫
<a name="analyzing-app-generating-plan"></a>

在轉換開始之前，Amazon Q 會先在本機上建置您的程式碼，以確保其可建置並正確設定以進行轉換。然後，Amazon Q 會將您的程式碼上傳至安全且加密的建置環境 AWS、分析您的程式碼庫，並決定移植應用程式所需的更新。

在此分析期間，Amazon Q 會將您的 .NET 解決方案或專案分成程式碼群組。程式碼群組是專案及其所有相依性，這些會共同產生可建置的程式碼單位，例如動態連結程式庫 (DLL) 或可執行檔。即使您未選取所有專案相依性進行轉換，Amazon Q 仍會判斷建置您所選取專案所需的相依性，並且一併進行轉換，如此轉換後的應用程式就可建置且可供使用。

分析程式碼後，Amazon Q 會產生轉換計畫，其中概述將要進行的提議變更，包括要轉換的程式碼群組清單及其相依性。

## 轉換應用程式
<a name="transforming-app"></a>

為了要開始轉換，Amazon Q 會在安全的建置環境中再次建置您的程式碼，確保可在遠端進行建置。Amazon Q 隨後就會開始移植您的應用程式。它會從下而上進行，從最低層級相依性開始。如果 Amazon Q 移植相依性時遇到問題，則會停止轉換，並提供造成錯誤的原因資訊。

轉換包括對應用程式進行下列更新：
+ 將過時的 C\$1 程式碼版本取代為與 Linux 相容的 C\$1 版本
+ 將 .NET Framework 升級到跨平台 .NET，包括：
  + 識別並反覆取代套件、程式庫和 API
  + 升級和取代 NuGet 套件和 API
  + 轉換為跨平台執行時期
  + 設定中介軟體並更新執行時期組態
  + 取代私有或第三方套件 
  + 處理 IIS 和 WCF 元件 
  + 對建置錯誤進行偵錯
+ 重寫程式碼使其與 Linux 相容，包括重構和重寫已棄用且效率不佳的程式碼，以移植現有程式碼 

## 檢閱轉換摘要並接受變更
<a name="reviewing-summary-accepting-changes"></a>

轉換完成後，Amazon Q 會提供轉換摘要，其中包含對您的應用程式提出的提議更新相關資訊，包括變更的檔案數、更新的套件，以及變更的 API。它會標記任何未成功的轉換，包括受影響的檔案或部分檔案，以及在嘗試建置期間遇到的錯誤。您也可以使用建置日誌檢視建置摘要，以進一步了解所做的變更。

轉換摘要也會提供 Linux 移植狀態，其指出是否需要額外的使用者輸入才能使應用程式與 Linux 相容。如果程式碼群組中的任何項目需要您輸入，您可以下載 Linux 整備報告，其中包含 Amazon Q 在建置時無法解決的 Windows 特定考量。如果任何程式碼群組或檔案需要輸入，請檢閱報告以取得仍需要進行何種變更的詳細資訊，並取得如何更新程式碼的建議 (如適用)。您必須先手動進行這些變更，才能在 Linux 上執行您的應用程式。

您可以先在差異檢視中檢閱 Amazon Q 所做的提議變更，再接受變更以就地更新您的檔案。更新您的檔案並解決 Linux 整備報告中的任何項目後，您的應用程式就可在跨平台 .NET 上執行。

# IDE 中 .NET 轉換問題的故障診斷
<a name="troubleshooting-dotnet-transformation-IDE"></a>

利用下列各節對 IDE 中使用 Amazon Q Developer 進行 .NET 轉換時的常見問題進行故障診斷。

## 如何知道任務是否正在進行？
<a name="job-progressing"></a>

如果 Amazon Q 似乎在 Transformation Hub 中的某個步驟花很長的時間，您可以在輸出日誌中查看任務是否仍為作用中。如果產生診斷訊息，表示任務仍為作用中。

若要查看輸出，請在 Visual Studio 中選擇**輸出**索引標籤。在**顯示輸出來源：**功能表中，選擇 **Amazon Q 語言用戶端**。

下面的螢幕擷取畫面顯示 Amazon Q 在轉換期間所產生輸出的範例。

![\[Amazon Q Developer Code Transformation Hub 螢幕擷取畫面，顯示來自 Amazon Q 語言用戶端的輸出。\]](http://docs.aws.amazon.com/zh_tw/amazonq/latest/qdeveloper-ug/images/code-transform-troubleshoot4.png)


## 為什麼未選取某些專案進行轉換？
<a name="projects-not-selected"></a>

Amazon Q 只能轉換以 C\$1 語言撰寫的支援專案類型。目前，Amazon Q 不支援移植 UI 層元件，或以 VB.NET 或 F\$1 語言撰寫的專案。如需轉換 .NET 專案支援的專案類型和其他先決條件的清單，請參閱 [步驟 1：事前準備](port-dotnet-application.md#transform-dotnet-prerequisites)。

## 如果我的專案或解決方案未轉換，如何獲得支援？
<a name="get-support"></a>

如果您無法自行疑難排解問題，您可以聯絡 支援 或 AWS 帳戶 您的團隊提交支援案例。

若要取得支援，請提供轉換任務 ID，以便 AWS 可以調查失敗的任務。若要尋找轉換任務 ID，請在 Visual Studio 中選擇**輸出**索引標籤。在**顯示輸出來源：**功能表中，選擇 **Amazon Q 語言用戶端**。

## 如何防止防火牆干擾轉換任務？
<a name="firewall-inteference"></a>

如果您的組織使用防火牆，可能會干擾 Visual Studio 中的轉換。您可以在 Node.js 中暫時停用安全檢查，以進行故障診斷或測試阻止轉換執行的因素。

環境變數 `NODE_TLS_REJECT_UNAUTHORIZED` 可控制重要的安全檢查。將 `NODE_TLS_REJECT_UNAUTHORIZED` 設為「0」會停用 Node.js 的拒絕未經授權的 TLS/SSL 憑證。這表示：
+ 將接受自我簽署憑證
+ 將允許過期的憑證
+ 將允許主機名稱不相符的憑證
+ 將忽略任何其他憑證驗證錯誤

如果您的代理使用自我憑證，您可以設定下列環境變數，而不要停用 `NODE_TLS_REJECT_UNAUTHORIZED`：

```
NODE_OPTIONS = —use-openssl-ca
NODE_EXTRA_CA_CERTS = Path/To/Corporate/Certs
```

否則，您必須指定代理使用的 CA 憑證，才能停用 `NODE_TLS_REJECT_UNAUTHORIZED`。

**若要在 Windows 上停用 NODE\$1TLS\$1REJECT\$1UNAUTHORIZED：**

1. 開啟「開始」功能表並搜尋**環境變數**。

1. 選擇**編輯系統環境變數**。

1. 在**系統屬性**視窗中，選擇**環境變數**。

1. 在**系統變數**下，選擇**新增**。

1. 將**變數名稱**設為 NODE\$1TLS\$1REJECT\$1UNAUTHORIZED，並將**變數值**設為 0。

1. 選擇**確定**以儲存變更。

1. 啟動 Visual Studio。

# 使用 Amazon Q Developer 解釋和更新程式碼
<a name="explain-update-code"></a>

Amazon Q Developer 可以解釋和更新整合式開發環境 (IDE) 中特定的程式碼行。若要更新您的程式碼，可要求 Amazon Q 對特定程式碼行或區塊進行變更，其將產生新的程式碼，以反映您要求的變更。然後，您可以將更新後的程式碼直接插入程式碼來源的檔案中。

您可從下列選項擇一使用：
+ **解釋** − 用自然語言解釋您的程式碼。
+ **重構** − 提高程式碼的易讀性或效率，以及其他改進。
+ **修正** − 對程式碼進行偵錯。
+ **產生測試** - 為目前檔案或選取的程式碼建立單元測試。
+ **最佳化** − 增強程式碼效能。
+ **傳送至提示** − 將反白顯示的程式碼傳送至 Amazon Q 聊天面板，並提出有關程式碼的任何問題。

## 將程式碼傳送到 Amazon Q
<a name="send-code"></a>

若要讓 Amazon Q 解釋或更新您的程式碼，請完成下列步驟。

1. 反白顯示 IDE 中程式碼檔案的區段。

1. 在反白顯示的程式碼上按一下右鍵以開啟內容視窗。選擇 **Amazon Q**，然後選擇**解釋**、**重構**、**修正**、**產生測試**、**最佳化**或**傳送至提示**。

   如果您選擇**傳送至提示**，則 Amazon Q 會將反白顯示的程式碼複製到聊天面板，您可以在此面板中輸入有關程式碼的任何問題。

1. 若要以新產生的程式碼取代反白顯示的程式碼，您可以複製該程式碼，或選擇**插入程式碼**以將其直接插入檔案中。Amazon Q 會以更新後的程式碼來取代原本的程式碼。

# 與 Amazon Q Developer 進行內嵌聊天
<a name="q-in-IDE-inline-chat"></a>

*內嵌聊天*功能可讓您從 IDE 的主要編碼視窗與 Amazon Q 聊天。若要使用內嵌聊天功能，您可以反白顯示需要建議的程式碼，並在小型輸入畫面中提供指示。Amazon Q 會繼續為您產生程式碼，並在主要編碼視窗中以差異形式呈現程式碼。然後，您可以選擇接受或拒絕變更。

內嵌聊天的優點是，在聊天視窗與主要編碼視窗之間移動時不需要切換內容。

通常您會在檢閱程式碼、編寫單元測試，或執行需要程式碼形式答案的其他任務時，使用內嵌聊天功能。在您需要文字形式答案 (例如，「解釋此程式碼」的答案) 的情況下，使用[聊天視窗]()會是較好的選項。

Amazon Q 透過內嵌聊天產生程式碼建議時，會考慮目前檔案中的程式碼。它不會查看其他檔案或專案中的程式碼。

## Amazon Q 內嵌聊天的實際情形
<a name="q-in-IDE-inline-chat-action"></a>

內嵌聊天工作階段隨即展開，如下所示。

1. 您可以反白顯示需要建議的程式碼，然後根據您的 IDE 從下列選項中選擇：
   + 在 Visual Studio Code 和 JetBrains 中，按 `⌘+I` (Mac) 或 `Ctrl+I` (Windows)
   + 在 Eclipse 中，按 `⌘+Shift+I` (Mac) 或 `Ctrl+Shift+I` (Windows)
   + 或者，您可以在選項上按一下滑鼠右鍵，然後依序選擇 **Amazon Q** 和**內嵌聊天**

   這樣就會在主要編碼視窗頂端啟動小型輸入畫面，您可以在此輸入提示，例如 **Fix this code**。  
![\[內嵌聊天輸入畫面。\]](http://docs.aws.amazon.com/zh_tw/amazonq/latest/qdeveloper-ug/images/inline-chat-input-screen.png)

1. Amazon Q 會產生程式碼並以差異形式呈現。  
![\[內嵌聊天差異。\]](http://docs.aws.amazon.com/zh_tw/amazonq/latest/qdeveloper-ug/images/inline-chat-diff.png)

1. 您可以藉由選擇**接受**或**拒絕**，或按下對應按鍵 (`Enter` 或 `Esc`) 來接受或拒絕變更。  
![\[內嵌聊天接受和拒絕按鈕。\]](http://docs.aws.amazon.com/zh_tw/amazonq/latest/qdeveloper-ug/images/inline-chat-accept.png)

## 範例主題和問題
<a name="q-in-IDE-inline-chat-questions"></a>

內嵌聊天一律會傳回程式碼形式的答案，因此您可以輸入如下的提示：
+ 記錄此程式碼
+ 重構此程式碼
+ 編寫此函式的單元測試

## 差異格式
<a name="q-in-IDE-inline-chat-diff"></a>

內嵌聊天會以多個區塊顯示差異，其中現有程式碼位於頂端，而建議的程式碼位於底部。不支援並列差異。

# 在 IDE 中新增內容至 Amazon Q Developer 聊天
<a name="ide-chat-context"></a>

當您在整合式開發環境 (IDE) 中與 Amazon Q 聊天時，您可以為 Amazon Q 提供像是檔案和資料夾等額外的*內容*，Amazon Q 可使用這些額外的內容來量身打造並改善其答案。

有兩種方式可提供內容給 Amazon Q：
+ **明確** - 若要明確提供內容，請在聊天視窗中輸入 **@**。**@** 會啟動內容選擇器快顯視窗，供您從中選取要包含為內容的項目。或者，您可以輸入 **@** 並開始輸入檔案、資料夾或其他內容類型的名稱，讓它自動完成。如需詳細資訊，請參閱[明確內容類型](#context-explicit)。
+ **自動** - 若要自動提供內容，您可以在聊天之外另行設定內容。只要有任何開發人員在處理專案時於聊天視窗中輸入問題，Amazon Q 就會自動參考內容。如需詳細資訊，請參閱[自動內容類型](#context-automatic)。

Amazon Q 產生答案後，會在**內容**下拉式清單中顯示作為內容使用的檔案，此清單會出現在答案開頭的正上方。

## 明確內容類型
<a name="context-explicit"></a>

當您在聊天中輸入 **@** 時，您可以從下列內容類型之中選取：
+ **@workspace** - Amazon Q 會使用專案的工作空間作為其答案的內容。**@workspace** 選項需要組態。如需詳細資訊，請參閱[在 IDE 中新增工作空間內容至 Amazon Q Developer 聊天](workspace-context.md)。
+ **資料夾** - Amazon Q 會顯示目前專案中的資料夾清單，並使用您選取的資料夾作為其答案的內容。
+ **檔案** - Amazon Q 會顯示目前專案中的檔案清單，並使用您選取的檔案作為其答案的內容。
+ **程式碼** - Amazon Q 會顯示目前專案中的類別、函式、全域變數清單，並使用您選取的項目作為其答案的內容。
+ **影像** - Amazon Q 可讓您新增影像作為提示的內容，對於從 UI 圖樣或序列圖產生程式碼這類情境很實用。影像必須是 JPEG、PNG、GIF 或 WebP 格式，大小上限為 3.75 MB，且維度不超過 8,000 x 8,000 像素。您最多可在單一訊息中包含 20 個影像，包括鎖定於內容的任何影像。
+ **提示** - Amazon Q 會顯示您已儲存的提示清單，並使用您選取的提示作為其答案的內容。**提示**選項需要某些組態。如需詳細資訊，請參閱[將提示儲存至程式庫，以搭配 Amazon Q Developer 聊天使用](context-prompt-library.md)。

## 自動內容類型
<a name="context-automatic"></a>

Amazon Q 會自動使用下列內容類型 (若您已設定)：
+ **專案規則** - Amazon Q 會自動使用您定義的一組專案規則作為內容。如需詳細資訊，請參閱[建立專案規則以搭配 Amazon Q Developer 聊天使用](context-project-rules.md)。
+ **自訂** - Amazon Q 會自動使用原始程式碼的儲存庫作為內容。

# 在 IDE 中新增工作空間內容至 Amazon Q Developer 聊天
<a name="workspace-context"></a>

當您在整合式開發環境 (IDE) 中與 Amazon Q 聊天時，您可以將 **@workspace** 新增至您的問題，以自動包含工作空間程式碼中最相關的區塊作為內容。Amazon Q Developer 會根據定期更新的索引來判斷關聯性。

使用工作空間內容時，Amazon Q 具有增強功能，包括尋找檔案、了解不同檔案之間使用程式碼的方式，以及產生利用多個檔案的程式碼，包括未開啟的檔案。

**Topics**
+ [

## 設定
](#setup)
+ [

## 使用工作空間內容提問
](#ask-questions-workspace-context)

## 設定
<a name="setup"></a>

在您繼續之前，請確定已安裝最新版的 IDE。您可以接著完成下列設定步驟。

### 啟用索引
<a name="setup-enable-indexing"></a>

若要使用工作空間作為內容，Amazon Q 會建立工作空間儲存庫的本機索引，包括程式碼檔案、組態檔案和專案結構。在編製索引期間，系統會篩選掉二進位檔或 `.gitignore` 檔案中指定的非必要檔案。

為新的工作空間編製索引的過程可能需要 5 到 20 分鐘。在此期間，您可以預期 IDE 中的 CPU 使用率會升高。初始索引編製完成後，索引會在您對工作空間進行變更時以累進的方式更新。

您第一次新增工作空間內容時，必須在 IDE 中啟用索引。請完成下列步驟來啟用索引。

1. 在 Amazon Q 聊天面板中將 **@workspace** 新增至您的問題。

1. Amazon Q 會提示您啟用索引。選擇**設定**，系統會將您重新導向至 IDE 中的 Amazon Q 設定。

   如果未出現提示，您可以選擇 IDE 底部的 **Amazon Q** 以前往設定。然後從開啟的 Amazon Q 任務列中選擇**開啟設定**。

1. 選取**工作空間索引**旁的方塊。

### 設定索引 (選用)
<a name="setup-configure-indexing"></a>

索引程序不需要任何組態，但您可以選擇指定索引專用的執行緒數量。如果您增加使用的執行緒數量，索引將會更快完成，而且會佔用更多 CPU。若要更新索引組態，請指定**工作空間索引工作者執行緒**設定的執行緒數量。您也可以設定可針對工作空間內容編製索引的檔案大小上限，並啟用使用圖形處理單元 (GPU) 來處理索引。

## 使用工作空間內容提問
<a name="ask-questions-workspace-context"></a>

若要將工作空間作為內容新增至您與 Amazon Q 的對話中，請開啟您要提問的工作空間，然後在聊天面板中將 **@workspace** 新增至您的問題。您必須在您要新增工作空間內容的任何問題中新增 @workspace。

如果您要開始討論不同的工作空間，請開啟工作空間，然後開啟新的聊天索引標籤。在您的問題中加入 **@workspace**，以新增新的工作空間作為內容。

您可以向 Amazon Q 提出有關工作空間中任何檔案的問題，包括未開啟的檔案。除了現有的對話式編碼功能之外，Amazon Q 還可以解釋檔案、尋找程式碼，以及從多個檔案產生程式碼。

以下範例示範您可以在聊天中，利用工作空間內容向 Amazon Q 提出的問題：
+ @workspace 處理授權的程式碼在哪裡？
+ @workspace 此專案中具有應用程式邏輯的關鍵類別是什麼？
+ @workspace 解釋 main.py 
+ @workspace 新增 auth 至此專案
+ @workspace 此專案使用哪些第三方程式庫或套件，以及用途為何？
+ @workspace 新增函式 *<function name>* 的單元測試

# 將提示儲存至程式庫，以搭配 Amazon Q Developer 聊天使用
<a name="context-prompt-library"></a>

您可以建置常見提示的程式庫，供您在 IDE 中與 Amazon Q 聊天時使用。透過將這些提示儲存在您的程式庫中，您就可以輕鬆地將其插入聊天中，而不必每次重複輸入提示。您可以在多個對話和專案中使用儲存的提示。

提示會儲存在 `~/.aws/amazonq/prompts` 資料夾中。

**若要將提示儲存到提示程式庫**

1. 在您的 IDE 中，開啟 Amazon Q 聊天視窗。

1. 輸入 **@**，然後選取**提示**。

1. 選擇**建立新的提示**。（您可能需要向下捲動才能找到它。)

1. 在**提示名稱**中，輸入提示名稱，例如 **Create\$1sequence\$1diagram**，然後按 Enter。請注意，提示名稱不能包含空格。

   Amazon Q 會在 `~/.aws/amazonq/prompts` 資料夾中建立名為 `Create_sequence_diagram.md` 的提示檔案，並在您的 IDE 中開啟該檔案。

1. 在提示檔案中，新增詳細的提示。例如：

   `Create a sequence diagram using Mermaid that shows the sequence of calls between resources. Ignore supporting resources like IAM policies and security group rules.`

1. 儲存提示檔案。

**若要使用儲存的提示**

1. 在您的 IDE 中，開啟 Amazon Q 聊天視窗。

1. 輸入 **@**，然後選取**提示**。

1. 選擇已儲存的提示，例如 **Create\$1sequence\$1diagram**。

1. (選用) 視需要在聊天輸入視窗中新增詳細資訊。您可以輸入更多文字並新增更多內容類型。範例提示的外觀如下所示...

   `@Create_sequence_diagram using the files in the @lib folder`

1. 提交提示並等待 Amazon Q 產生答案。

# 鎖定內容項目
<a name="context-pinning"></a>

**注意**  
內容鎖定目前僅適用於 VS Code IDE。

內容鎖定可讓您指定內容項目，這些項目會新增至聊天工作階段內的所有訊息中。當您鎖定某個內容項目時，該項目會自動包含在目前對話內的每一則訊息中，因此您不需要重複輸入 **@workspace**、**@file** 或 **@folder** 等命令。

鎖定的項目有兩個來源：您可以手動鎖定經常參考的項目，或者 Amazon Q 會自動新增內容 (例如您目前的作用中檔案)，以改善回應品質。鎖定的內容項目會出現在聊天面板的文字輸入方塊頂端，您可以控制移除您不想要包含的任何內容。

為了協助維持清楚的內容界限，鎖定的項目只會套用至您目前的聊天索引標籤。當您開啟新的索引標籤時，您將會重頭開始，且只會看見預設的鎖定內容，例如作用中的檔案。

## 使用鎖定的內容
<a name="w2aac11c16c25c19b7"></a>

**若要新增鎖定的內容項目**

1. 在您的 IDE 中，開啟 Amazon Q 聊天面板。

1. 在聊天中使用 **@workspace**、**@file**、**@folder** 或 **@prompt** 等內容命令之後，按一下所需的內容以將其鎖定。

   或者，您可以按一下「@Pin Context」按鈕以檢視可用的選項，並選取要鎖定的內容。

1. 鎖定的內容將會出現在聊天面板頂端的鎖定內容區域中。

### 鎖定內容項目的方法
<a name="w2aac11c16c25c19b7b5"></a>

有三種方式可用來鎖定內容項目：

1. 使用 @Pin Context 功能表：
   + 按一下聊天面板中的「@Pin Context」按鈕。
   + 從可用選項中選取所需的內容項目。

1. 使用內容功能表和鍵盤快速鍵：
   + 在聊天輸入中輸入「@」以叫出內容功能表。
   + 瀏覽至所需的項目。
   + 按 Option/Alt \$1 Enter 即可鎖定選取的項目。

1. 從輸入提示鎖定：
   + 如果您已在輸入中輸入內容命令 (如 **@workspace**、**@file**、**@folder** 或 **@prompt**)，請將游標暫留在輸入中的內容項目上方。
   + 按一下項目以將其鎖定。

鎖定後，內容項目將會出現在聊天的文字輸入方塊頂端的鎖定內容區域中。

**若要移除鎖定的內容項目**
+ 若要移除鎖定的內容項目，請按一下藥丸左側的 X。此方法同時適用於使用者鎖定和系統新增的內容項目。

# 建立專案規則以搭配 Amazon Q Developer 聊天使用
<a name="context-project-rules"></a>

您可以建置專案規則程式庫，供您在 IDE 中與 Amazon Q 聊天時使用。這些規則說明整個團隊的編碼標準和最佳實務。例如，您可以有一項規則，指出所有 Python 程式碼都必須使用類型提示，或所有 Java 程式碼都必須使用 Javadoc 註解。將這些規則儲存在專案中，就能確保開發人員的一致性，而不受其經驗程度影響。

專案規則是在專案的 `project-root/.amazonq/rules` 資料夾內的 Markdown 檔案中定義。

在您建立專案規則後，Amazon Q 會在開發人員於專案內與 Amazon Q 聊天時，自動使用規則作為內容，並確保在產生答案時遵守這些規則。如需新增內容至聊天的詳細資訊，請參閱 [在 IDE 中新增內容至 Amazon Q Developer 聊天](ide-chat-context.md)。

您可以直接在檔案系統中或透過 Amazon Q 聊天介面建立專案規則。

**若要使用 Amazon Q 聊天介面建立專案規則**

1. 在您的 IDE 中，開啟 Amazon Q 聊天面板。

1. 在聊天輸入方塊中，按一下**規則**按鈕。

1. 選取**建立新規則**。

1. 在出現的對話方塊中，輸入規則的名稱。

   這樣將會在專案的 `project-root/.amazonq/rules` 資料夾中使用該名稱建立 Markdown 檔案。

1. 在編輯器中新增規則內容。

1. 儲存檔案。

**若要使用檔案系統建立專案規則**

1. 在 IDE 中，開啟專案的根資料夾。

1. 在專案根資料夾中，建立下列資料夾：

   `project-root/.amazonq/rules`

   此資料夾會保留您所有的專案規則。

1. 在 `project-root/.amazonq/rules` 中，建立專案規則檔案。此檔案必須是 Markdown 檔案。例如：

   `cdk-rules.md`

1. 開啟您的專案規則 Markdown 檔案。

1. 將詳細提示新增至檔案。例如：

   ```
   All Amazon S3 buckets must have encryption enabled, enforce SSL, and block public access.
   All Amazon DynamoDB Streams tables must have encryption enabled. 
   All Amazon SNS topics must have encryption enabled and enforce SSL. 
   All Amazon SNS queues must enforce SSL.
   ```

1. 儲存檔案。

1. (選用) 新增更多專案規則 Markdown 檔案。

   現在您已建立一或多項專案規則。Amazon Q 會在開發人員於專案內與 Amazon Q 聊天時，自動使用這些規則作為內容。

**若要在 Amazon Q 聊天介面中管理規則**

1. 在您的 IDE 中，開啟 Amazon Q 聊天面板。

1. 在聊天輸入方塊中，按一下**規則**按鈕以查看所有可用的規則。

1. 按一下規則，即可針對目前聊天工作階段將其切換為開啟或關閉：
   + 有核取記號的規則為作用中，將會套用至您的對話。
   + 沒有核取記號的規則表示未在目前工作階段中作用。

# 產生 Amazon Q 聊天的記憶體庫
<a name="context-memory-bank"></a>

Amazon Q 可以自動產生記憶體庫檔案，以提供專案結構、技術堆疊和產品資訊的快速索引。此功能會分析專案中的金鑰檔案，以建立摘要檔案，協助 Amazon Q 了解您的程式碼庫，而不必在每次提出問題時分析整個專案。

當您產生記憶體庫檔案時，Amazon Q 會在 下建立`memory-bank`子資料夾`.amazonq/rules`，其中包含下列自動產生的檔案：
+ `product.md` – 專案及其功能的概觀。
+ `structure.md` – 專案的架構、資料夾組織和關鍵元件。
+ `tech.md` – 您的技術堆疊、架構、相依性和編碼標準。
+ `guidelines.md` – 專案的開發標準和模式。

當您與 Amazon Q 聊天時，這些檔案會自動用作內容，提供專案的背景資訊。

## 為您的專案產生記憶體庫
<a name="generate-files"></a>

若要產生記憶體庫，請完成下列程序。

1. 在您的 IDE 中，開啟 Amazon Q 聊天面板。

1. 在聊天輸入方塊中，選擇**規則**按鈕。

1. 選取**產生記憶體庫**。

1. 新的聊天索引標籤隨即開啟，Amazon Q 會開始分析您的專案以建立記憶體庫檔案。

1. 完成後，您可以選擇**規則**按鈕來檢視檔案。

   您可以在提出問題時，選取和取消選取要做為內容的個別檔案。

1. 如果您的專案變更，您可以讓 Amazon Q 產生新的記憶體庫檔案來更新其內容。若要這樣做，請選擇**規則**按鈕，然後選取**重新產生記憶體庫**。

## 自訂記憶體庫產生
<a name="customize-files"></a>

您可以透過建立自訂專案規則來自訂記憶體庫檔案的產生方式。例如，您可以建立規則，指定所產生檔案的語言或格式：

```
When generating the memory bank files like product.md, structure.md, and tech.md, 
always generate content in Spanish and include detailed code examples.
```

將記憶體庫規則儲存在專案`project-root/.amazonq/rules`資料夾中的檔案中。

如需建立自訂專案規則的詳細資訊，請參閱 [建立專案規則以搭配 Amazon Q Developer 聊天使用](context-project-rules.md)。

# Amazon Q Developer 中的聊天歷史記錄壓縮
<a name="ide-chat-history-compaction"></a>

當您在 IDE 中與 Amazon Q Developer 互動時，您的對話會在聊天歷史記錄中累積。此歷史記錄提供重要的內容，可協助 Amazon Q 了解您的專案，並提供更相關的回應。不過，每一個對基礎模型提出的請求中能夠包含的對話歷史記錄數量有所限制。

## 了解內容視窗限制
<a name="understanding-context-window-limits"></a>

內容視窗代表與 Amazon Q 的單一互動中可處理的資訊量上限。這包括：
+ 您目前的問題或請求
+ 對話中先前的訊息
+ 您已共用的程式碼片段和檔案
+ 有關專案的系統資訊

當此內容視窗接近其容量上限時，Amazon Q 參考先前對話內容的能力就可能受到影響。

## 聊天歷史記錄壓縮的運作方式
<a name="how-chat-history-compaction-works"></a>

聊天歷史記錄壓縮可讓您保留對話中重要的資訊，同時減少使用的內容量。壓縮的時機：

1. Amazon Q 會分析您的對話歷史記錄

1. 它建立重點、問題和決策的精簡摘要

1. 此摘要會取代內容視窗中的詳細對話歷史記錄

1. 您仍可在聊天介面中看見您的完整對話

壓縮有助於您繼續對話，而不會遺失重要的內容，同時避免在達到內容視窗限制時啟動全新的聊天。

## 使用聊天歷史記錄壓縮
<a name="using-chat-history-compaction"></a>

您可以透過兩種方式使用壓縮：

### 手動壓縮
<a name="manual-compaction"></a>

若要手動壓縮聊天歷史記錄：

1. 在聊天輸入欄位中輸入 **/compact**

1. Amazon Q 將處理您的請求，並顯示確認訊息與精簡的對話摘要

當您想要繼續目前的對話，但注意到回應時間變慢或答案較不相關時，可使用手動壓縮。

### 自動壓縮微調
<a name="automatic-compaction-nudge"></a>

當您的內容視窗達到其容量的約 80% 時，Amazon Q 會顯示建議壓縮的通知。此通知包括：
+ 解釋建議壓縮的原因
+ 立即觸發壓縮的按鈕

## 壓縮後
<a name="after-compaction"></a>

壓縮發生之後：
+ 在目前工作階段結束之前，您仍可在聊天介面中看見您的完整對話歷史記錄
+ Amazon Q 會使用壓縮後的摘要 (而非完整歷史記錄) 來產生回應
+ 壓縮後的摘要會包含在內容視窗中，而非詳細歷史記錄
+ 當您重新啟動 IDE 時，詳細的聊天歷史記錄將會重設

## 相關命令
<a name="related-commands"></a>

### 清除聊天歷史記錄
<a name="clearing-chat-history"></a>

除了壓縮之外，您也可以使用 **/clear** 命令來完全清除聊天歷史記錄：

1. 在聊天輸入欄位中輸入 **/clear**

1. Amazon Q 將同時從顯示器和內容視窗移除所有先前的對話歷史記錄

### 比較選擇壓縮與清除歷史記錄的時機
<a name="when-to-choose-compaction-vs-clearing"></a>

在下列情況下選擇壓縮：
+ 您想要繼續目前的對話主題
+ 先前的內容仍然與您目前的任務相關
+ 您想要保留對話中的大致方向和知識

在下列情況下選擇清除歷史記錄：
+ 您要開始全新的任務或主題
+ 先前的對話不再相關
+ 您想要確保先前的內容不會影響新的回應
+ 您想要從對話中移除可能的敏感資訊

# 檢視、刪除和匯出 Amazon Q Developer 對話歷史記錄
<a name="ide-chat-conversation"></a>

當您在整合式開發環境 (IDE) 中與 Amazon Q 聊天時，Amazon Q 會將每個聊天索引標籤儲存為個別對話。您可以檢視、搜尋和刪除這些對話。您也可以將其匯出至 Markdown 或 HTML 格式檔案。

Amazon Q 會將您的對話儲存在本機電腦的主目錄中。

Amazon Q 會個別儲存每個工作空間的對話，如果您沒有看到自己的對話歷史記錄，可能是因為您位於錯誤的工作空間中。Amazon Q 只會顯示目前工作空間的對話歷史記錄。

使用下列指示來檢視、搜尋、刪除和匯出您的對話。

**若要檢視和搜尋過去的對話**

1. 在您的 IDE 中，登入 Amazon Q。

1. 開啟 Amazon Q 聊天索引標籤。

1. 執行以下其中一項操作來開啟聊天歷史記錄：
   + 在聊天面板的右上角，選擇**檢視聊天歷史記錄**按鈕。
   + 按 `ctrl+F` (Windows 和 Linux) 或 `⌘ F` (Mac)。

1. 執行以下任意一項：
   + 選擇您要檢視的對話。對話會依日期排列。
   + 使用聊天歷史記錄頂端附近的搜尋列來尋找對話。Amazon Q 會尋找與您所輸入文字完全相符的對話。

**若要刪除單一對話**

1. 在您的 IDE 中，登入 Amazon Q。

1. 執行以下任意一項：
   + 在開啟的聊天工作階段的聊天索引標籤中，輸入 **/clear** 以刪除聊天索引標籤的內容。
   + 開啟 Amazon Q 聊天索引標籤，然後執行下列其中一項操作來開啟聊天歷史記錄：
     + 在聊天面板的右上角，選擇**檢視聊天歷史記錄**按鈕。
     + 按 `ctrl+F` (Windows 和 Linux) 或 `⌘ F` (Mac)。

     在您要刪除的對話中，選擇垂直省略符號 (⋮)，然後選擇**刪除**。

**若要將對話匯出至 Markdown 或 HTML**

1. 在您的 IDE 中，登入 Amazon Q。

1. 執行以下任意一項：
   + 在聊天工作階段已啟動的情況下，於聊天面板的右上角選擇**匯出**按鈕，以匯出索引標籤中顯示的對話。
   + 開啟 Amazon Q 聊天索引標籤，然後執行下列其中一項操作來開啟聊天歷史記錄：
     + 在聊天面板的右上角，選擇**檢視聊天歷史記錄**按鈕。
     + 按 `ctrl+F` (Windows 和 Linux) 或 `⌘ F` (Mac)。

     在您要匯出的對話中，選擇垂直省略符號 (⋮)，然後選擇**匯出**，以將對話匯出至 Markdown 或 HTML 格式檔案。

   根據預設，Amazon Q 會將檔案命名為 `q-dev-chat-yyyy-mm-dd.md|html`，並儲存在專案的根目錄中。

# 在與 Amazon Q Developer 的聊天中使用快速鍵
<a name="q-in-ides-chat-shortcuts"></a>

Amazon Q 提供鍵盤快速鍵，協助您有效率地與代理式聊天介面互動。使用鍵盤快速鍵可協助您保持工作流程，而不需在鍵盤和滑鼠之間切換。

**注意**  
鍵盤快速鍵目前只能在 Visual Studio Code IDE 中使用。

## 鍵盤快速鍵
<a name="keyboard-shortcuts"></a>


**Amazon Q 聊天的鍵盤快速鍵**  

| 動作 | Visual Studio Code 快速鍵 | 
| --- | --- | 
| 執行命令 |  Shift \$1 Cmd \$1 Enter (Mac) Shift \$1 Ctrl \$1 Enter (Windows) Shift \$1 Meta \$1 Enter (Linux)  | 
| 拒絕命令 |  Shift \$1 Cmd \$1 R (Mac) Shift \$1 Ctrl \$1 R (Windows) Shift \$1 Meta \$1 R (Linux)  | 
| 停止產生 |  Shift \$1 Cmd \$1 退格鍵 (Mac) Shift \$1 Ctrl \$1 退格鍵 (Windows) Shift \$1 Meta \$1 退格鍵 (Linux)  | 

## 自訂鍵盤快速鍵
<a name="customizing-keyboard-shortcuts"></a>

您可以在 IDE 中透過標準鍵盤快速鍵自訂介面修改快速鍵。Amazon Q 會使用各 IDE 的原生快速鍵系統，因此您所做的任何變更都會反映在 Amazon Q 介面中。工具提示和 UI 元素中顯示的快速鍵會自動更新，以符合您的自訂按鍵對應。

## 快速鍵可探索性
<a name="shortcut-discoverability"></a>

Amazon Q 提供多種方式來探索鍵盤快速鍵：
+ **工具提示**：將游標暫留在執行命令按鈕、拒絕命令按鈕或停止按鈕上，即可查看目前的鍵盤快速鍵
+ **設定**：檢視 IDE 鍵盤快速鍵自訂介面中的所有快速鍵

## 快速鍵行為
<a name="shortcut-behavior"></a>
+ 您的焦點必須在 Amazon Q 聊天面板中，代理式聊天的鍵盤快速鍵才會有作用
+ 此機制可防止與現有的 IDE 按鍵繫結關係發生衝突
+ 如果您修改快速鍵，您可能需要重新整理 IDE，變更才會反映在工具提示中

# 在 IDE 中選取 Amazon Q 聊天的模型
<a name="q-in-ides-chat-models"></a>

您可以選取在 IDE 中聊天時，希望 Amazon Q 使用的模型。您選取的模型會在所有後續聊天工作階段中持續作用。

下表說明 IDE 中可供 Amazon Q 聊天使用的模型及其內容視窗。


****  

| 模型 | 內容視窗 | 
| --- | --- | 
| Claude Sonnet 3.7 | 200k | 
| Claude Sonnet 4 (預設) | 200k | 

## 選取在 IDE 中用於聊天的模型
<a name="select-model-ide-chat"></a>

若要選取您在 IDE 中聊天時 Amazon Q 使用的模型：

1. 在您的 IDE 中開啟 Amazon Q 聊天面板。

1. 在文字方塊底部，選擇模型功能表下拉式清單。從可用選項中選取您要使用的模型。

   您選取的模型會持續作用，直到您變更為止。

## 內容視窗
<a name="context-window"></a>

內容視窗是內容量，包括您的對話歷史記錄和任何明確或自動內容，可供 Amazon Q 用來處理和回應您的請求。內容是以字符為衡量單位，其中包括文字和程式碼。

如需內容的詳細資訊，請參閱 [新增內容至聊天](ide-chat-context.md)。