GitHub Copilot 应用现代化 - Java 升级(预览版)常见问题解答

解答有关 GitHub Copilot 应用现代化 - Java 升级的常见问题(预览版)。

什么是 GitHub Copilot 应用现代化 - Java 升级(预览版)?

GitHub Copilot 应用现代化 - Java 升级(预览版)是基于 AI 的代理解决方案,旨在帮助升级 Java 应用。

GitHub Copilot 应用现代化 - Java 升级(预览版)可以做什么?

如今,GitHub Copilot 应用现代化 - Java 升级(预览版)可帮助你将项目中的 Java 运行时、依赖项、常用框架和代码升级到较新版本。 它是 Visual Studio Code 的扩展,可以执行以下任务:

  • 分析项目及其依赖项,并提出升级计划。
  • 执行计划以转换项目。
  • 自动修复进度过程中的问题。
  • 报告所有详细信息,包括提交、日志和输出。
  • 在升级后检查常见漏洞和暴露(CVE)安全漏洞和代码不一致。
  • 显示摘要,包括文件更改、更新的依赖项和已修复的问题。
  • 独立于升级过程生成单元测试。

GitHub Copilot 计划可用于 GitHub Copilot 应用现代化 - Java 升级(预览版)?

此产品目前适用于 GitHub Copilot Business 和企业计划。

此工具能否帮助将代码库迁移到 Azure?

有一个单独的工具来完成此任务。 有关详细信息,请参阅适用于 Java 的 GitHub Copilot 应用现代化(预览版)。

是否有适用于 .NET 的升级工具?

是的。 有关详细信息,请参阅 适用于 .NET 的 GitHub Copilot 应用现代化

GitHub Copilot 应用现代化 - Java 升级(预览版)评估了哪种应用程序?

我们在各种开源存储库上验证了该工具,以确保升级后生成成功。 我们还在 Technical Preview 阶段与客户进行了广泛的合作。 用户反馈在优化体验方面发挥了关键作用。 若要参与,请参阅 在 GitHub Copilot 应用现代化 - Java 升级上提供反馈

它是否支持 Spring Boot 和 JUnit 等框架和库升级?

是的。 尽管它的主要重点是 Java 运行时升级,但助手包括一个规划阶段,用于分析和推荐以下工具的更新:

  • Spring Boot
  • JUnit 和其他测试框架
  • 其他第三方依赖项

可以编辑升级计划,以选择最符合兼容性和项目要求的版本。

目前,我们仅支持升级到 Spring Boot 2.7 和 3.2,但不久将支持更多版本。 如果在升级过程中指定了不同的 Spring Boot 版本,我们将选择最接近支持的版本。

支持哪种 Java 版本?

我们目前支持以下 Java 开发工具包(JDK)版本:

  • JDK 8
  • JDK 11
  • JDK 17
  • JDK 21

项目所需的最低 JDK 版本为 JDK 8,你可以升级项目以使用任何最高 JDK 21 版本。

支持哪些类型的 Java 项目?

目前,仅支持以下项目类型:

  • Maven 项目(包括 Maven 包装器)
  • Gradle 项目(仅限 Gradle 包装器,版本 5+)

不支持基于 Kotlin DSL 的 Gradle 项目。

使用此工具的作要求是什么?

若要确保作成功,需要以下信息:

  • 项目类型。 该项目必须是使用 Maven 或 Gradle 构建的基于 Git 的 Java 项目。
  • 目标 Java 版本 - 要升级到的 JDK 版本 - 例如 Java 21。
  • 源和目标 JDK 路径 - 当前和目标版本的已安装 JDK 的路径。
  • Maven/Gradle 设置 - Maven/Gradle 生成工具的路径。 对于 Gradle,仅支持 Gradle 包装器。

此工具的限制是什么?

目前,该扩展具有以下功能限制:

  • 该扩展仅支持 Java 升级,不满足其他编程语言的需求。
  • 它仅适用于使用 Maven 和 Gradle 生成的 Java 项目。
  • 仅支持 Git 存储库。 其他版本控制系统不兼容。
  • 扩展无法保证它建议的更改是最佳或被认为是最佳做法。

建议对此工具使用以下最佳做法:

  • 仅在满足前面所述的指定特征的项目上运行扩展。
  • 在将扩展输出合并到生产分支之前,请完成彻底的代码评审。
  • 运行所有测试,并根据需要完成与更改管理过程关联的常规 QA 检查。

它是否存储我的代码?

否,该工具使用 GitHub Copilot 的方式与使用它修改代码的方式相同,该代码片段不会在直接会话之外保留代码片段。