升級您的應用程式的Java版本
[watsonx Code Assistant] {: tag-blue}標準方案
要升級Java程式碼,您首先建立並分析應用程序,然後修復發現的任何問題。 根據不同的問題,修復問題的能力可以是自動、輔助或自我導向。
在開始之前,請設定您的企業Java環境。
僅限 Eclipse IDE:為了讓多模組 Java 應用程式達到最佳效果,請確保您在 Eclipse 工作區中將聚合器模組及各子模組匯入為單獨的專案。Watsonx Code Assistant 如果將頂層目錄作為單一專案匯入,就不太可能成功內省您的專案。
分析程式碼所需的時間
分析您的申請所需的時間各有不同。 以下是典型的時間。
| 時間 | 應用程式詳細資料 |
|---|---|
| 幾秒至幾分鐘 | 少於 100 堂 |
| 2 至 10 分鐘 | 20,000 至 50,000 行代碼 |
| 10 分鐘以上 | 300,000 行代碼 |
當watsonx Code Assistant分析您的應用程式時,它預設從程式碼分析中排除一些第三方軟體包。 有關詳細信息,請參閱 從應用程式分析中排除的第三方包。
分析您的應用程式以升級Java版本
該分析為您提供了需要解決的問題清單。 修復問題後,應用程式的Java版本將會升級。
如果您恢復對程式碼的更改,則必須按一下 「返回」進行分析,並進行全面分析,如果您想再次進行 Java 升級。
-
在 IDE 中,用滑鼠右鍵按一下您要升級的應用程式目錄中階層結構中的任何項目。
-
使用任一路徑開始升級程序。 兩者都是一樣的:
- 按一下 watsonx Code Assistant,然後按一下升級 Java 版本。
- 按一下 Modernize Java Applications,然後按一下 Upgrade Java Version。
-
在升級<您的應用程式名稱>頁面上,選擇分析參數,這些參數定義了應用程式分析所依據的規則。
-
您可以選擇變更Java來源,該來源會自動顯示建議值。
Java來源版本是您要升級的Java版本。 根據建置組態中偵測到的Java版本,watsonx Code Assistant建議使用Java版本作為來源。 如果適合您的應用程序,您可以從支援的Java版本清單中選擇不同的Java版本。 建置配置位於 Maven
pom.xml檔案中。建議的Java版本是在建置配置中偵測到的Java版本,或是給定偵測到的Java版本的最佳可用Java版本。 例如,如果在建置配置中指定了不支援的Java 9,則建議JavaJava 8。 建議使用Java 8,因為它是分析所支援的最接近的Java版本,而且它早於偵測到的Java版本。
支援的最低Java版本是Java 6。
-
選擇 Java 目標。
Java 目標版本是您要將 Java 應用程式升級到的 Java 版本。 您可以選擇的目標版本是長期 (LTS) Java 版本。
-
按一下「分析」 或 「建置並分析」。
應用程式分析是在應用程式二進位檔案上完成的。 必須在分析開始之前建立應用程式。 您可以自動或手動建立應用程式。
- 點擊 “建置和分析” 以自動建立和分析應用程式。
- 手動建立應用程式後點擊 “分析”。
建置並分析您的應用程式後,將顯示要修復或審查的問題。 根據要解決的問題,解決問題的能力可以是自動化的、輔助的或自我指導的。 要查看的這些問題不需要更改程式碼即可遷移程式碼。 但是,它們可能需要驗證或測試。
當您按一下建立並分析時,應用程式會以其目前的 Java 原始碼版本建立,因此可以分析 Java 升級問題。 請務必使用 Java 開發套件的 Java 原始碼版本設定 IDE,以便 IDE 可以成功建立應用程式。
在建立和分析時,如果您在多模組專案中遇到問題,而該專案包含有
liberty-assembly封裝的子模組,請在專案的根層執行mvn install,然後再試一次。
-
為什麼分析報告中包含.class 檔案,而不是.java 檔案?
當您對二進位檔案 (JAR/WAR/EAR) 執行分析時,問題總是在類別檔案中被發現。 在 watsonx Code Assistant 以外執行二進位掃描器時,無法存取原始碼,因此.class 檔案會包含在分析報告中。 當您匯入遷移計劃,或在 watsonx Code Assistant 內執行分析時,報告會顯示對類別檔案的引用,但 watsonx Code Assistant 會將.class 檔案連結至.java 檔案,而.java 檔案會顯示在 watsonx Code Assistant UI 中。
解決問題並審查您的申請的附加信息
升級<您的應用程式名稱>頁面列出了以下資訊:
- Java版本來源和Java版本目標
- 技術報告、庫存報告和分析報告的連結
- 用於修復問題的選項卡(可以自動修復、輔助修復或自我修復)以及其他訊息
當您執行自動修復以及在進行 Java 版本目標變更後建立應用程式時,需要目標 Java 開發人員工具包。 確保為您的 IDE 配置了目標 Java 開發人員工具包。
- Eclipse IDE 擴充功能會自動嘗試從 IDE 中所有配置的 Java 開發人員工具包中尋找與 Java 版本目標相符的正確 Java 開發人員工具包。
- 在 Visual Studio Code IDE 中,您必須手動變更 Java 開發人員工具包配置。
完成自動修復
如果您的 「自動修復」標籤包含一項或多項修復,請選擇該標籤。
由於watsonx Code Assistant已為您完成修復,因此您無需進行任何程式碼變更。 大語言模型 (LLM) 不用於自動修復。
- 展開說明並閱讀它們。
- (可選)打開問題以查看問題的描述。
- 點擊運行自動修復。
- 自動修復已修復。
- 外部問題將保留在清單中,直到您更新關聯的依賴項。
- 執行自動修復完成後,按一下重建並刷新以更新問題清單。
如果自動修正程式無法執行,並在主控台輸出中產生編譯錯誤,請確定將 maven-compiler 外掛程式的版本更新至 3.13.0 或更新版本。
執行自動化時,如果您在多模組專案中遇到問題,而該專案包含有 liberty-assembly 封裝的子模組,請在專案的根層級執行 mvn install,然後再試一次。
完成輔助修復
如果您有包含一項或多項修復的 「輔助修復」 選項卡,請選擇該選項卡。
儘管您修復了程式碼,watsonx Code Assistant仍會在聊天中提供有關如何更改程式碼的建議,從而為您提供協助。
可提供的協助程度因問題而異。 輔助修復可以幫助您解決問題,有時一個程式碼建議就可以讓您解決所有或大部分問題。 其他時候,程式碼建議可能就像刪除舊的 API 以防止編譯失敗一樣簡單,並且不需要您採取進一步的操作。 請務必遵循每個輔助固定的步驟,以瞭解每個輔助固定的價值和限制。 在未提供完整程式碼建議的情況下,您可以將輔助修復視為聊天中的開場白。 繼續參與聊天,以加深您對問題及其解決方案的理解。
有關與輔助修復相關的問題列表,請參閱 輔助修復參考。
要使用輔助修復:
-
展開說明並按照說明進行操作。
-
對於每個問題,將其展開。
-
按一下「閱讀全文」以展開本期內容。
-
按一下問題中列出的檔案。 檔案會在編輯器中開啟。
-
展開問題以查看問題詳細資訊。
-
如果在詳細資訊中指示您選擇程式碼片段,請選擇它。
-
點擊 “幫助我” 以獲取解決問題的協助。
如果您使用 Visual Studio Code,則適用下列限制:
- 確保僅在一個活動編輯器中選擇 Java 程式碼。
- 確保您在其中選擇 Java 程式碼的活動編輯器與 Modernize to Liberty 或 Java Upgrade 視圖位於不同的編輯器群組中。
-
按照聊天中的代碼建議修改代碼並修復問題。
有時候,聊天會提供資訊回覆,而不是代碼建議。
-
當您修復問題時,請按一下「重建」並重新整理,直到所有輔助修復都修復為止。
完成自我修復
如果您有包含一個或多個修復的 「自我引導修復」 選項卡,請選擇該選項卡。
您更改程式碼並確定如何修復程式碼,但您可以從聊天中獲得協助。
- 展開說明並按照說明進行操作。
- 展開每個問題。
- 按一下「閱讀全文」以展開本期內容。
- 按一下問題中列出的檔案。 檔案會在編輯器中開啟。
- 按一下 「開始聊天」,每次出現問題時都會顯示該聊天。 聊天視窗會開啟,讓您可以針對發生的情況獲得協助。 例如,您可以詢問代碼助理目前代碼是做什麼的。 或者,您可以詢問有問題的程式碼是否存在替代實作。
- 當您修復問題時,請按一下「重建」並重新整理,直到所有自我導向的修復都完成為止。
解決附加訊息
如果您的 「附加資訊」 標籤上包含一個或多個信息,請選擇該選項卡。
該標籤上所列問題的判定方式與其他標籤上問題的判定方式相同。 雖然附加資訊問題不需要變更您的程式碼,但請檢閱這些問題,以確保您的應用程式在程式碼遷移時能正常運作。
額外的資訊可能會指出問題,例如 API 中的細微行為變更,以及該如何處理。
-
展開說明並按照說明進行操作。
-
點擊每個問題。
- 按一下「閱讀全文」以展開本期內容。
- 點擊問題中列出的文件上的連結以查看程式碼。
處理目前應用程式以外的外部問題
在您進行修復工作時,有些可能會被歸類為目前應用程式以外的外部問題發生。 這些問題的原始碼在指定的存檔中,這些存檔並非目前原始碼應用程式的一部分。
如果存檔是您組織擁有的圖書館:
-
您可以將其相關的原始碼作為單獨的應用程式開啟,並使用 watsonx Code Assistant 來修正其中的問題。
-
然後,您可以更新目前的應用程式,以使用新的修復版本。
如果存檔是您的組織不擁有的圖書館:
-
您需要更新到不包含此問題的版本。 如果沒有這樣的版本,您可能需要使用替代技術。
-
您可以與 watsonx Code Assistant 展開對話,以協助確定替代品。 首先,請嘗試詢問
What is the library X used for?或Is it easy to replace?。 繼續對話,針對您對圖書館的特定使用方式取得更多資訊。