升级应用程序的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 升级。

  1. 在集成开发环境中,右键单击要升级的应用程序目录下层次结构中的任意项目。

  2. 使用任一路径启动升级程序。 两者都一样:

    • 单击 watsonx Code Assistant 然后单击升级 Java 版本
    • 单击现代化 Java 应用程序,然后单击升级 Java 版本
  3. 在“升级 <您的应用程序名称>”页面上,选择分析参数,这些参数定义了应用程序的分析规则。

    1. 可选择更改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。

    2. 选择 Java 目标。

      Java 目标版本是您正在升级 Java 应用程序的 Java 版本。 您可以选择的版本是长期(LTS) Java 版本。

    3. 单击“分析” 或“构建并分析”。

      应用程序分析是在应用程序二进制文件中进行的。 在开始分析之前,必须先构建应用程序。 您可以自动或手动构建应用程序。

      • 单击“构建和分析”自动构建和分析应用程序。
      • 手动构建应用程序后,单击“分析”。

      在对应用程序进行构建和分析后,会显示需要修复或审查的问题。 根据要解决的问题,解决这些问题的能力可以是自动的、辅助的,也可以是自主的。 这些需要审查的问题不需要修改代码来迁移代码。 不过,它们可能需要验证或测试。

      当您点击 “构建和分析”时,应用程序将以当前 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) 不用于自动修复。

  1. 展开说明并阅读。
  2. 可选择打开问题,查看问题描述。
  3. 单击运行自动修复
    • 自动修复功能已修复。
    • 外部问题会保留在列表中,直到您更新相关的依赖关系。
  4. 运行自动修复完成后,单击“重建”并刷新以更新问题列表。

如果自动修复失败,并在控制台输出中产生编译错误,请确保将 maven-compiler 插件的版本更新为 3.13.0 或更新版本。

运行自动化时,如果遇到包含子模块且子模块使用 liberty-assembly 打包的多模块项目问题,请在项目根目录运行 mvn install,然后重试。

完成辅助修复

如果“辅助修复” 选项卡中有一个或多个修复,请选择该选项卡。

在您修复代码的同时,watsonx Code Assistant会在聊天中为您提供修改代码的建议。

根据问题的不同,可提供的帮助程度也有所不同。 辅助修复功能可以帮助您解决问题,有时代码建议可以帮您解决大部分问题。 其他时候,代码建议可能只是简单地移除一个旧的 API 以防止编译失败,您无需采取进一步行动。 在每次辅助修复时,遵循步骤非常重要,这样才能了解每次辅助修复的价值和局限性。 如果未提供完整的代码建议,您可以在聊天中把辅助修复当作话题的开端。 继续参与聊天,加深对问题及其解决方案的理解。

有关辅助修复相关问题的列表,请参阅 辅助修复参考资料

使用辅助修复:

  1. 展开“说明”并按说明操作。

  2. 每个问题都要展开。

  3. 点击 “阅读更多” 可展开阅读。

  4. 单击问题中列出的文件。 文件在编辑器中打开。

  5. 展开问题查看问题详情。

  6. 如果在详细信息中指示您选择代码片段,请选择该代码片段。

  7. 单击“帮助我” 以获取解决问题的帮助。

    如果使用的是 Visual Studio Code,则有以下限制:

    • 确保只在一个活动编辑器中选择 Java 代码。
    • 确保选择 Java 代码的活动编辑器与 " Modernize to Liberty "或 " Java Upgrade "视图处于不同的编辑器组中。
  8. 按照聊天中的代码建议修改代码并解决问题。

    有时,聊天会提供信息性回复,而不是代码建议。

  9. 在修复问题时,点击 “重建”并刷新,直到所有辅助修复都完成。

完成自主修复

如果“自主修复” 选项卡中有一个或多个修复,请选择该选项卡。

您可以更改代码并确定如何修复代码,也可以通过聊天获得帮助。

  1. 展开“说明”并按说明操作。
  2. 扩展每个问题。
  3. 点击 “阅读更多” 可展开阅读。
  4. 单击问题中列出的文件。 文件在编辑器中打开。
  5. Click 开始聊天, which is displayed for each occurrence of the issue. 聊天窗口打开,您可以获得帮助。 例如,您可以询问代码助手当前代码的作用。 或者,您可以询问是否存在问题代码的替代实现方法。
  6. 在修复问题时,点击 “重建”并刷新,直到所有自动修复的问题都得到解决。

处理补充信息

如果“附加信息”选项卡上有一个或多个数字,请选择该选项卡。

标签上所列问题的确定方式与其他标签上所列问题的确定方式相同。 虽然附加信息问题不需要更改代码,但请查看这些问题,以确保在代码迁移后您的应用程序能够正常运行。

附加信息可能指出一些问题,例如API中的细微行为变化以及如何处理这些问题。

  • 展开说明并遵照执行。

  • 点击每期。

    • 点击 “阅读更多” 可展开阅读。
    • 点击问题中列出的文件链接,查看代码。

处理当前应用程序之外的外部问题

在进行修复时,有些问题可能会被归类为当前应用程序之外的外部问题。 这些问题的源代码在指定的存档中,不属于当前源程序的一部分。

如果档案是贵组织拥有的图书馆:

  1. 您可以将其相关源代码作为一个单独的应用程序打开,然后使用 watsonx Code Assistant 修复其中的问题。

  2. 然后,您就可以更新当前的应用程序,使用新的修复版本。

如果档案馆是贵组织不拥有的图书馆:

  1. 您需要更新到不包含此问题的版本。 如果没有这样的版本,您可能需要使用其他技术。

  2. 您可以与 watsonx Code Assistant 开始对话,以帮助确定替代品。 首先,请尝试询问 What is the library X used for?Is it easy to replace?。 继续对话,获取更多有关您使用图书馆的具体信息。