升级应用程序的Java版本
watsonx Code Assistant 标准计划
要升级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 升级。
-
在集成开发环境中,右键单击要升级的应用程序目录下层次结构中的任意项目。
-
使用任一路径启动升级程序。 两者都一样:
- 单击 watsonx Code Assistant 然后单击升级 Java 版本。
- 单击现代化 Java 应用程序,然后单击升级 Java 版本。
-
在“升级 <您的应用程序名称>”页面上,选择分析参数,这些参数定义了应用程序的分析规则。
-
可选择更改Java源,它会自动显示推荐值。
Java源版本就是您要升级的Java版本。 根据构建配置中检测到的Java版本,watsonx Code Assistant会推荐一个Java版本作为源代码。 如果适合您的应用程序,您可以从支持的Java版本列表中选择不同的Java版本。 构建配置位于 Maven "
pom.xml文件中。推荐的Java版本要么是构建配置中检测到的Java版本,要么是在检测到Java版本的情况下可用的最佳Java版本。 例如,如果在构建配置中指定了不支持的 "Java9,那么 "Java8 就是推荐的 "Java版本。 建议使用Java8,因为它是最接近分析所支持的Java版本,而且比检测到的Java版本早。
支持的最低Java版本是Java6。
-
选择 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 用户界面中。
修正问题并审核申请的补充信息
升级 <您的*应用程序名称>*页面列出以下信息:
- Java版本源和Java版本目标
- 技术报告、清单报告和分析报告的链接
- 需要修复的问题(可以是自动修复、辅助修复或自主修复)以及其他信息的选项卡
在运行自动修复时,以及在 Java 版本目标更改后构建应用程序时,都需要目标 Java 开发人员工具包。 确保为您的集成开发环境配置了目标 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 "视图处于不同的编辑器组中。
-
按照聊天中的代码建议修改代码并解决问题。
有时,聊天会提供信息性回复,而不是代码建议。
-
在修复问题时,点击 “重建”并刷新,直到所有辅助修复都完成。
完成自主修复
如果“自主修复” 选项卡中有一个或多个修复,请选择该选项卡。
您可以更改代码并确定如何修复代码,也可以通过聊天获得帮助。
- 展开“说明”并按说明操作。
- 扩展每个问题。
- 点击 “阅读更多” 可展开阅读。
- 单击问题中列出的文件。 文件在编辑器中打开。
- Click 开始聊天, which is displayed for each occurrence of the issue. 聊天窗口打开,您可以获得帮助。 例如,您可以询问代码助手当前代码的作用。 或者,您可以询问是否存在问题代码的替代实现方法。
- 在修复问题时,点击 “重建”并刷新,直到所有自动修复的问题都得到解决。
处理补充信息
如果“附加信息”选项卡上有一个或多个数字,请选择该选项卡。
标签上所列问题的确定方式与其他标签上所列问题的确定方式相同。 虽然附加信息问题不需要更改代码,但请查看这些问题,以确保在代码迁移后您的应用程序能够正常运行。
附加信息可能指出一些问题,例如API中的细微行为变化以及如何处理这些问题。
-
展开说明并遵照执行。
-
点击每期。
- 点击 “阅读更多” 可展开阅读。
- 点击问题中列出的文件链接,查看代码。
处理当前应用程序之外的外部问题
在进行修复时,有些问题可能会被归类为当前应用程序之外的外部问题。 这些问题的源代码在指定的存档中,不属于当前源程序的一部分。
如果档案是贵组织拥有的图书馆:
-
您可以将其相关源代码作为一个单独的应用程序打开,然后使用 watsonx Code Assistant 修复其中的问题。
-
然后,您就可以更新当前的应用程序,使用新的修复版本。
如果档案馆是贵组织不拥有的图书馆:
-
您需要更新到不包含此问题的版本。 如果没有这样的版本,您可能需要使用其他技术。
-
您可以与 watsonx Code Assistant 开始对话,以帮助确定替代品。 首先,请尝试询问
What is the library X used for?或Is it easy to replace?。 继续对话,获取更多有关您使用图书馆的具体信息。