News

IntelliJ IDEA 中的 K2 Kotlin 模式 (Alpha)

Read this post in other languages:

从 v.2024.1 开始,IntelliJ IDEA 附带可选的 K2 模式。 在此模式下,IDE 使用 K2 编译器进行更快、更稳健的 Kotlin 代码分析。
IDE 现在有两种模式:

  • 经典模式(默认启用)– IDE 使用标准 (K1) Kotlin 编译器分析 Kotlin 代码。
  • K2 模式 (Alpha) – IDE 使用新的 K2 编译器作为代码分析引擎。

这些模式仅影响 IDE 中的代码分析。 如果您想使用 K2 编译器编译项目,则需要在项目的构建设置中指定。 K2 IDE 模式不依赖于项目构建设置中指定的 Kotlin 编译器版本。

什么是 K2 模式?

我们从头重写了 Kotlin 编译器,提高了性能并增强了内部架构,旨在促进 Kotlin 语言的进一步发展。 此外,由于 Kotlin 编译器在 IDE 中用作代码分析引擎,K2 编译器经过优化,可以满足 IDE 的要求。

K2 模式提供:

  • 与未来 Kotlin 功能的兼容性:新模式将支持仅在 K2 Kotlin 编译器中提供的未来语言功能。
  • 代码分析稳定性:代码分析将更加稳定,不会再出现 Highlighting is suspended due to internal error(高亮显示由于内部错误而暂停)消息! 得益于大规模的架构重新设计,IDE 功能的质量和可靠性应该有所提高。
  • 更好的 IDE 性能:Kotlin 代码高亮显示和 Kotlin 代码补全的速度显著提高。
IntelliJ Ultimate 源码库的性能测试
  • 改进的 API:在后续版本中,我们计划为第三方插件引入易用的弹性 API。

支持哪些 IDE 功能?

为了在 IntelliJ IDEA 中提供对 K2 编译器的支持,我们从头开始编写了许多 IDE 功能,因为它们非常依赖于 K1 编译器的 API。 这让我们能够重新思考当前设计,并解决基于 K1 的 IDE 配置中无法解决的问题。

我们并不急于实现或迁移尽可能多的 IDE 功能。 我们的目标是每次完善少量功能,力求最好的质量。 我们将在每个后续版本中稳步丰富 IDE 功能支持,也希望能够得到您的反馈。

IntelliJ IDEA 2024.1 中的 K2 模式支持:

  • 代码高亮显示
  • 代码补全
  • 导航 
  • 查找用法
  • 调试
  • Rename(重命名)、Introduce Variable(引入变量)、Move(移动)、Inline Variable(内联变量)、Change Signature(更改签名)和 Safe Delete(安全删除)等重构
  • 基本编辑功能,例如代码格式设置、形参信息、装订区域图标、QuickDoc、import 优化程序和 Type Hierarchy(类型层次结构)
  • 热门检查、意图和快速修复
  • 新建项目向导、项目导入以及从 IntelliJ IDEA 运行测试和应用程序

在 IntelliJ IDEA 2024.1 中,K2 模式支持: 

  • Kotlin Multiplatform 项目 (KMP)
  • Android 项目
  • Extract Function(提取函数)重构
  • 嵌入提示
  • Java 到 Kotlin 的转换
  • Methods(方法)和 Calls Hierarchy(调用层次结构)
  • Smart Step Into(智能步入) 
  • 用于调试协程的工具
  • .gradle.kts 文件中的代码分析
  • 其他次要功能
  • 依赖于 Kotlin 插件的第三方 IntelliJ IDEA 插件将被禁用。 我们将尽快为第三方插件作者提供迁移指导! 

接下来的版本中将添加对缺失功能的支持。

如何试用 K2 Kotlin 编译器模式?

转到 Settings | Languages & Frameworks | Kotlin(设置 | 语言和框架 | Kotlin),点击 Enable the K2-based Kotlin plugin(启用基于 K2 的 Kotlin 插件)复选框启用新模式。

如何在 IntelliJ IDEA 中启用 Kotlin K2 模式

启用 K2 模式后,您需要重新启动 IDE。

反馈

我们欢迎您提供反馈,也希望了解您对 IntelliJ IDEA 的 K2 Kotlin 模式的体验、您想让我们为此模式添加的功能以及您对其性能的看法。

请在下方发表评论、在我们的公共 Slack 频道中向我们发送消息或在 YouTrack 中创建问题,与我们分享您的体验。 

我们正在积极改进此功能,我们期待您的反馈! 

祝您开发愉快!

本博文英文原作者:

Sue

Anton Yalyshev

image description

Discover more