IntelliJ IDEA 2022.1 最新变化

IntelliJ IDEA 2022.1 引入了 Dependency Analyzer,用于管理依赖项和解决冲突;更新了 New Project(新建项目)向导,旨在优化新项目启动;添加了 Notifications(通知)工具窗口,更简洁地展现来自 IDE 的通知。 它还包括多项其他重要改进,这些改进将在下面详细介绍。

主要更新

Dependency Analyzer

Dependency Analyzer

新引入的 Dependency Analyzer 提供了关于您的项目和子项目中使用的所有 Maven 和 Gradle 依赖项的大量信息。 它可以帮助您检测并解决冲突的依赖项、筛选出相同的依赖项并检查它们是否存在于不同库中,以及轻松地在依赖项之间导航以更正构建配置。

增强了 New Project(新建项目)向导

我们重新设计了 New Project(新建项目)向导界面,以简化创建新项目的操作。 您可以快速启动一个空项目;为 Java、Kotlin、Groovy 和 JavaScript 使用预配置选项;或者如果您拥有更复杂的项目,可以使用生成器

新的 Notifications(通知)工具窗口

新的 Notifications(通知)工具窗口

Event Log(事件日志)实例被一个新的 Notifications(通知)工具窗口替换。 它可以更清楚地高亮显示重要的和实用的建议和通知,并将它们集中在一个专门的工具窗口中。 有关详情,请参阅博文

用户体验

New Project(新建项目)向导中的 Maven Archetype

New Project(新建项目)向导中更新的 Maven Archetype 项目生成器引入了浏览 Archetype 时边输入边搜索的功能、在模块创建期间管理 Archetype 目录的功能以及按 Archetype 输入所需属性的功能。

改进的嵌入提示

我们实现了改进的 Code Vision 嵌入提示,让您可以直接在编辑器中即时获取代码洞察。 显示的指标列表现在包括继承者用法代码作者相关问题。 指标现在默认全部启用,可以在 Inlay Hints(嵌入提示)设置中修改。 这些设置也已更新并获得了新的配置 UI。

平均拆分标签页

您可以在编辑器标签页之间均匀分配工作空间,使其具有相同的宽度。 为此,请转到 Settings / Preferences | Advanced Settings | Editor Tabs | Equalize proportions in nested splits(设置 / 偏好设置 | 高级设置 | 编辑器标签页 | 在嵌套拆分中平衡比例)。

将 UML 图表导出为其他格式

将 UML 图表导出为其他格式
Ultimate

UML 图表现在可以导出为 yEd .graphml、JGraph .drawio、Graphviz .dot、带有位置的 Graphviz .dot、Mermaid .md、Plantuml 和 IntelliJ IDEA .uml 文件,从而与第三方工具兼容。

新的 Structural Search and Replace(结构化搜索和替换)对话框

Structural Search and Replace(结构化搜索和替换)对话框现在包含所有模板的列表,可以实现更轻松的导航。 该对话框还具有 Pin Dialog(固定对话框)图标和重新排列的 Injected code(注入的代码)和 Match case(区分大小写)复选框。

安全性

Package Checker 插件
Ultimate

IntelliJ IDEA 2022.1 can now detect vulnerabilities in Maven and Gradle dependencies used in your projects by checking across the Checkmarx SCA Database and the National Vulnerability Database, thanks to the Package Сhecker plugin that is bundled with IntelliJ IDEA Ultimate.

在这篇博文中了解详情。

编辑器

从 Markdown 文件运行命令

从 Markdown 文件运行命令

如果 Markdown 文件包含需要执行的命令的指令,您可以使用装订区域中的运行图标直接从文件运行这些命令。

Markdown 文件的 Copy code snippet(复制代码段)

Markdown 文件的 Copy code snippet(复制代码段)

使用 Markdown 块中新增的 Copy code snippet(复制代码段),您可以轻松地将内容一键复制到剪贴板。

更新了 Markdown 编辑器浮动工具栏

重新设计的 Markdown 编辑器浮动工具栏现在将提供列表创建功能和允许您选择标题样式的下拉菜单。 您可以使用所需选项自定义此工具栏。

LightEdit 下的代码重新格式化

LightEdit 下的代码重新格式化

我们增强了 LightEdit 模式,让您无需创建或打开专用项目即可完成更多工作。 现在,您可以在无项目模式下执行代码重新格式化。

新的 Incorrect formatting(格式设置不正确)检查

新的 Incorrect formatting(格式设置不正确)检查

我们实现了 Incorrect formatting(格式设置不正确)检查,当文件的当前格式格式设置与代码样式设置不匹配时,它会发出通知。

格式设置改进

为了实现一致的代码格式设置,Add a space at line comment start(在行注释开始处添加空格)选项已增加自动启用的 Enforce on reformat(强制重新格式化)复选框。 它默认可用于 Java、Kotlin 和 Groovy,并且仅修改以字母数字符号开头的行注释。

命令行格式化程序中的 dry run 模式支持

命令行格式化程序支持以 dry run 模式验证项目文件。 如果文件需要格式化,它将以非零状态退出。

Java

Java 18 支持

IntelliJ IDEA 2022.1 支持 2022 年 3 月发布的 Java 18 的新功能。 IDE 现已支持代码段、switch 表达式的模式匹配更改等。 有关详情,请参阅此博文

Java 反编译器

Java 反编译器现在与 Java 17 版本更兼容。 它支持 sealed 类型和模式匹配等现代语言构造函数,具有更好的字符串反编译切换功能,提供类型注解并且可以检测公共常量。

更好的 JUnit 5 支持

我们添加了对 JUnit 5.7 中引入的新功能的支持,包括对 @EnabledIf/DisabledIf@NullSource/EmptySource@TempDir 注解的支持。

更新的 Surround with try/catch(使用 try/catch 包围)模板

更新的 Surround with try/catch(使用 try/catch 包围)模板

更新的 Surround with try/catch(使用 try/catch 包围)模板现在会重新抛出包装到 RuntimeException 中的异常,而不是将其吞下。

Kotlin

Kotlin 1.6.20 支持

IntelliJ IDEA 2022.1 支持 Kotlin 1.6.20,对并行编译的支持、上下文接收器原型以及跨所有 Kotlin 目标的更好的代码共享等最新语言功能现在都可以在 IDE 中使用。 在这篇博文中详细了解新 Kotlin 更新。

针对 Kotlin 改进了 IDE 性能

在执行代码补全、高亮显示和引用搜索相关操作时,优化的软件包索引显著提高了 IDE 速度。 代码更改后发生的重新索引的数量和范围也有所减少。

调试器改进

针对调试 Kotlin 项目,我们为 Smart Step Into(智能步入)功能引入了一些实用改进和更新。 我们还解决了一些与断点有关的问题。

Kover 插件集成

To ensure better Kotlin code coverage, the Kover plugin has been integrated with IntelliJ IDEA.

Groovy

Package Checker 插件

对 Groovy 的后缀模板支持

Groovy 的代码补全现已支持大多数类 Java 后缀模板,例如 argcastforiternnnotnullnullnotthrowtryvarparsoutserrwhilenewreqnonnullreturn

框架与技术

Go 微服务支持
Ultimate

IntelliJ IDEA Ultimate 现在支持 Go 微服务,提供 URL 路径引用、端点、Search Everywhere(随处搜索)和装订区域图标等功能。 这些功能在安装 Go 插件后可用,目前仅适用于标准库函数。 在此处了解详情。

Spring Data Mongo 的代码洞察改进
Ultimate

使用 Spring Data MongoDB 时,IntelliJ IDEA 现在将高亮显示 JSON 查询、补全运算符和文档字段,并提供从映射实体到 Database(数据库)工具窗口的导航。

对 .proto 文件更好的支持

对 .proto 文件更好的支持
Ultimate

.proto 文件有了新的意图操作,该操作会为未解析的消息引用添加缺失的 import 语句。 添加缺失的 import 语句后,IDE 会为消息引用提供补全建议。

gRPC 反射支持

gRPC 反射支持
Ultimate

使用 IntelliJ IDEA Ultimate,您可以直接从正在运行的服务器实例运行请求并获得服务和方法名称补全。 The project does not need to contain .proto files, but the server should support gRPC reflection.

Thymeleaf 支持改进

Thymeleaf 支持改进
Ultimate

IntelliJ IDEA Ultimate 为 Thymeleaf 提供了更好的支持,包括更少的误报检查、编辑 Thymeleaf 模板时增强的 IDE 性能,以及为改善通知显示而微调的检查和高亮显示级别。

Helidon 配置文件中的补全
Ultimate

IntelliJ IDEA Ultimate 现在能更好地支持 Helidon 框架。 IDE 现在可以在属性文件和 .yaml 文件中提供配置键补全,并支持 Go to Declaration(转到声明)和 Quick Doc(快速文档)操作。

构建工具

更新了 Gradle 的进度条

更新了 Gradle 的进度条

我们为 Gradle 流程(例如下载依赖项和导入工件)引入了进度条。 这可用于跟踪文件的确切情况和估计完成时间。

Maven 编译器插件中对单独测试模块的支持

Maven 编译器插件中对单独测试模块的支持

我们向 Maven 编译器插件添加了实验性功能。 它现在允许您为生产和测试源分别设置特定语言级别。 您可以在 Preferences/Settings | Build, Execution, Deployment | Build Tools | Maven | Importing(偏好设置/设置 | 构建、执行、部署 | 构建工具 | Maven | 导入)中启用此选项。

VCS

Inlay Hints(嵌入提示)提供的代码作者信息

通过嵌入提示提供的 Code Author(代码作者)信息

我们更新了 Code Vision 功能,IntelliJ IDEA 现在可以根据 VCS 历史立即提供代码作者身份信息。 Code Author(代码作者)嵌入提示在 Preferences / Settings | Editor | General | Inlay Hints | Code Vision(偏好设置 / 设置 | 编辑器 | 常规 | 嵌入提示 | Code Vision)中默认启用。

更新的 Annotate with Git Blame(使用 Git 追溯注解)

更新了 Annotate with Git Blame(使用 Git 追溯注解)

我们改进了 Annotate with Git Blame(使用 Git 追溯注解)功能,使引入的更改更易于调查。 将鼠标悬停在注解上时,IDE 会在编辑器中高亮显示行中的差异,点击后,它会打开 Git Log(Git 日志)工具窗口。

更新了 Git 工具窗口中的 Commit Details(提交详细信息)

更新了 Git 工具窗口中的 Commit Details(提交详细信息)

Commit Details(提交详细信息)现在包含有关 GPG 签名和构建状态的信息。 此前,此数据仅在 Git 日志中显示为一列。

Git File History(Git 文件历史记录):没有索引的新 UI

Git File History(Git 文件历史记录):没有索引的新 UI

Git File History(Git 文件历史记录)工具窗口的新 UI 现在独立于索引进程。 即使 Log(日志)索引关闭,数据也会在新界面中表示。

拉取请求评论中的建议更改

拉取请求注释中的建议更改

现在您可以在 IntelliJ IDEA 中本地应用或提交更改,更轻松地处理建议的更改。

按文件媒体类型定义外部差异与合并工具

按文件媒体类型定义外部差异与合并工具

IntelliJ IDEA 2022.1 现在允许根据文件类型指定不同的外部差异与合并工具。 要进行配置,请转到 Settings / Preferences | Tools | Diff & Merge | External Diff Tools(设置 / 偏好设置 | 工具 | 差异与合并 | 外部差异工具)。

分析器

基于 Async Profiler 的单一分析器配置
Ultimate

新的分析器配置 IntelliJ Profiler 现已实现。 它结合了 Async ProfilerJava Flight Recorder 的强大功能,让我们距离为所有平台实现多合一分析工具的目标更近了一步。

调试器

Reset Frame(重置帧)

Reset Frame(重置帧)

Debugger(调试器)工具窗口的 Frames(帧)视图中,我们从工具栏移除了 Drop Frame(丢帧)操作,换为内联 Reset Frame(重置帧)图标。

隐藏了标签页标签

隐藏了标签页标签

为了最大化 Debugger(调试器)工具窗口中的可用空间,我们默认隐藏了标签页标签。 要使其再次可见或自定义它们的位置,请使用 Layout Settings(布局设置)中的 Show Tab Labels(显示标签页标签)选项。

QA 工具

Page Object Editor 改进

Selenium UI Testing 插件对其 Page Object Editor 做出了巨大改进。 我们优化了工作流并重新设计了 UI,以确保减少干扰的元素的出现。 您可以将网页元素从网页实时添加到代码,然后在 Page Object Editor 中继续编辑。 您还可以选择将新页面元素添加到代码时使用的选择器类型。

新的 Page Object(页面对象)向导

新的 Page Object(页面对象)向导允许您在创建新页面对象类时选择语言和测试自动化框架。 我们还使向导在代码中具有 Selenium 库依赖项的所有位置都可用。 如果您想在不创建新文件的情况下尝试使用不同框架和自定义模板自动生成页面对象,可以通过 Tools | Open Selenium Page Object Playground(工具 | 打开 Selenium 页面对象 Playground)使用特殊的 Playground 模式。

Kubernetes

编辑集群上的资源

编辑集群上的资源
Ultimate

现在可从编辑器标签页修改加载自集群的资源。

kubectl 的自定义路径

kubectl 的自定义路径
Ultimate

如果 kubectl 不在标准位置,您现在可以手动配置路径。 要设置自定义路径,请转到 Settings/Preferences | Build, Execution, Deployment | Kubernetes | Path to kubectl executable(设置/偏好设置 | 构建、执行、部署 | Kubernetes | kubectl 可执行文件路径)。

Services(服务)视图中的端口转发操作

Services(服务)视图中的端口转发操作
Ultimate

pod 的端口转发功能现已推出。 要转发端口,可以使用工具栏上的图标或选择上下文菜单项。

Services(服务)视图中的 Describe Resource(描述资源)操作

Services(服务)视图中的 Describe Resource(描述资源)操作
Ultimate

Services(服务)视图中的所有资源都具有一个新的 Describe Resource(描述资源)操作。 您可以从上下文菜单调用,或使用工具栏按钮。

支持集群中的 Events(事件)
Ultimate

集群事件现在显示在 Services(服务)视图的单独节点中,提供有关系统中最近事件的数据。 要查看特定 pod 的事件,请在它上面调用 Describe Resource(描述资源)并在操作结果中查找 Events(事件)部分。

Werf 支持
Ultimate

我们为 werf.yaml 和相关 Helm 模板文件引入了有限的编辑器支持,包括代码补全功能、检查、快速修复建议、对 .Values.werf.image.* 的重构 / 重命名,以及对 booleanint 等字段的验证。

对 Helm 的导入子值支持

对 Helm 的导入子值支持
Ultimate

IntelliJ IDEA Ultimate 现在支持通过 import-values 设置导入子值,这会影响模板中内置对象的补全/导航。

Docker

新的 Services(服务)视图 UI

新的 Services(服务)视图 UI

对于 IntelliJ IDEA 2022.1,我们在 Services(服务)工具窗口中重做了 Docker UI。 重做已经覆盖容器、镜像、网络和卷。

对 Docker Compose 目标的支持

对 Docker Compose 目标的支持现已推出。 例如,要在 Compose 目标上运行 Spring Boot 应用程序,请转到运行配置,通过 Manage targets(管理目标)创建一个 Compose 目标,然后运行该应用程序。

Docker Registry V2 支持

Docker Registry V2 支持

我们添加了对 Docker Registry HTTP API V2 的支持,配合 Docker 1.6+。 您可以创建简单的或受密码保护的 Docker V2 注册表并执行查看、推送和拉取镜像等常规操作。

远程开发

远程服务器的更多设置
Ultimate

远程开发现在具有一个 Backend Control Center(后端控制中心)微件,它可以显示 CPU 负载、内存、磁盘容量和监控后端状态可能需要的其他参数。

现在,您可以通过新的安全设置使用 SSH 密钥转发验证远程机器对 git 仓库的访问。 您也可以使用 SSH 代理助手执行此操作。

您可以在远程机器上为 IDE 后端指定下载路径和确切位置。

本地瘦客户端增加新功能

本地瘦客户端增加新功能
Ultimate

JetBrains Client 现在支持更多文件编辑器,既可以处理基于文本的文件,也可以处理 PNG 图像、UML 图表、Jupyter Notebook 文件和 Android 布局资源。

Run with coverage(使用覆盖率运行)和 Profiler(分析器)窗口已被添加到装订区域菜单。 上下文菜单现在包括 Maven 和 Gradle 工具窗口,并添加了更多实用的子菜单项。

我们还改进了调试功能并提供了多个操作,让您可以在远程开发时轻松检查代码。

数据库工具

复制多个对象

复制多个对象
Ultimate

您现在可以选择多个表并将其复制到另一个架构。 选择表,然后按 F5 打开导出对话框。 与导出单个表一样,您可以映射列以及查看和更改新表的 DDL。

IDE 支持跨 DBMS 导出,这意味着目标架构可以属于您项目中的任何数据库。 在这篇博文中了解详情。

MongoDB:编辑结果中的字段

MongoDB:编辑结果中的字段
Ultimate

现在,您可以像在关系数据库中一样在 MongoDB 集合中轻松编辑结果。 您还可以编辑通过 .find() 获得的结果集。 即使在 .find() 后执行了修改结果的光标方法(如 sort()limit()),这也可以运行。

取消正在运行的语句

取消正在运行的语句
Ultimate

取消正在运行的语句的逻辑已经更新。 现在,请求被取消这一点更加明确,我们不会在没有警告的情况下停用数据源。 有关详情,请参阅此博文

取消连接而不停用数据源

取消连接而不停用数据源
Ultimate

您现在可以在不停用数据源的情况下停止连接创建过程。 如果您在创建连接时点击 Cancel(取消)按钮,创建将被停止并显示 Connection canceled(连接已取消)消息。 在这篇博文中详情了解此更新。

Web 开发

更好的 Next.js 支持

更好的 Next.js 支持
Ultimate

得益于针对 React 的内置支持,所有关键功能都应该已经可以在 Next.js 项目中运行。 IntelliJ IDEA 2022.1 添加了对页面等特定于框架的对象的支持。 IDE 将解析 Link 组件的 href 属性以及 form 和其他标记中使用的路径。 代码补全、导航和重构也将可以运行。

对 Volta 的支持

对 Volta 的支持
Ultimate

在此版本中,我们添加了与 JavaScript 工具管理器 Volta 的集成。 IntelliJ IDEA 2022.1 将自动识别使用 Volta 安装的 Yarn 和 npm。

Scala

Scala 3 支持改进

Scala 3 支持改进

现在 extension 方法可以自动补全。 此外,编辑器还将自动建议导入 extension 方法和 given 实例。 针对 infix 修饰符和 @targetName 注解的新检查可以帮助您保持一致的代码风格。 我们显著提高了 .tasty 阅读器的性能,Scala 3 库的索引编制速度现在提高了两倍。

新 Scala 项目向导

新 Scala 项目向导

新的 Scala 项目更加易于配置。 使用更新的 New Project(新建项目)向导,您可以一步选择项目 JDK、所需构建系统和 Scala 版本。

别名导出

别名导出

Scala 中的大多数内容都是别名,包括 StringSeqListSetMap。 这会影响语法高亮显示、GoToQuick Documentation(快速文档)、Quick Definition(快速定义)、Find Usages(查找用法)、Optimize Imports(优化 import) 和其他 IDE 功能,因为它们作用于别名而不是实际定义。 为了改善用户体验,编辑器现在将标准库中的别名视为透明导出,例如,List 表示 scala.collection.immutable.List 而不是 scala.List

Unused declaration(未使用的声明)检查

Unused declaration(未使用的声明)检查

此前,未使用声明的检测仅限于 private 绑定。 现在,Unused declaration(未使用的声明)检查支持由类、方法、变量、形参等引入的公共绑定。

范围的嵌入提示

Scala 调试器升级

在此版本中,我们改进和简化了 Scala 调试器。 我们升级了 objects、主构造函数形参、值 classArraylazy val 和集合的处理,并改进了表达式评估。

Space 集成

代码审查评论:Post Now(立即发布)或 Save as Draft(另存为草稿)

代码审查评论:Post Now(立即发布)或 Save as Draft(另存为草稿)

在 IDE 中审查代码更改时,您现在可以选择何时发布代码审查评论。

  • Post Now(立即发布)会立即在代码审查中发布评论,并立即通知作者和其他代码审查参与者。
  • Save as Draft(另存为草稿)会批量处理所有评论,并在您批准更改或等待回复时一次性发送。

For more details, check out this blog post.

代码审查的键盘快捷键

代码审查的键盘快捷键

改进的代码审查用户界面将显示适用键盘快捷键。 发布代码审查评论时,您可以使用 Enter 添加新行。 按 Ctrl+Enter 将保存或发布评论。