IntelliJ IDEA 2018.3 重大升级(转)

时间:2022-06-16
本文章向大家介绍IntelliJ IDEA 2018.3 重大升级(转),主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

|0前言

2018.11.28 IntelliJ IDEA 2018.3 正式版发布。对于一个忠实爱好者,迫不及待的我下载了最新版本来体验下。而且 IDEA 今年的第三次重大更新提供了不容错过的显著功能!你可以访问详细概述的新内容 What's New,或直接访问网站并立即下载 IntelliJ IDEA的全新版本

具体的安装步骤就不在赘述了,可以参考之前的 系列教程 | IntelliJ IDEA(一) :安装与破解

安装完成之后,启动IntelliJ IDEA 2018.3,期待的等待加载过程,首先可以看到,加载界面已经发生变化了,IntelliJ IDEA 2018.2的时候是大红色的,现在改成了如下的背景:

加载完成之后,还是一如既往的先让你设置操作习惯,当然你也可以默认设置然后直接跳过,之后进入功能界面,发现操作界面好像没有什么大的变化

对于如下的弹框我还是保持让它每次启动自动弹出,因为它可以提示我一些快捷键的使用,毕竟快捷键那么多,每次能了解多一点能更高效率的开发。

既然操作界面上看不出什么大的改变,那说明新的功能升级并非是在工具的界面上而是一些功能使用上,我们将根据官方博客以及自己的理解来为大家解读一下这次更新有哪些全新的功能。

2|0针对 Java

虽然Java 12尚未发布,而且我们市场上现在普遍的还是在使用JDK 8,但是我们可以先提前了解一点。

2|1Java 12

IntelliJ IDEA 2018.3最新支持 Java 12,您可以在IDE中预览Raw String Literals(JEP 326),并利用大量有用的检查和快速修复。例如,将多行字符串文字转换为原始字符串文字,反之亦然,检测冗余的前导或尾部反引号(`)等。

何为 Raw String Literals 原始字符串文字可以跨越多行源代码,不会解释n表单的转义序列,例如Unicode转义符uXXXX。简单来说就是,它不会对反斜杠''进行特殊的转义处理。

转换为原始字符串文字

减少反引号的数量

分割原始字符串文字

2|2检测更多重复项

即使在更复杂的情况下,IntelliJ IDEA现在也可以快速发现重复,例如变量名称不同。IDEA 将在差异查看器中显示重复项,因此您可以将它们彼此并排比较。

2|3Java Stream API的改进

IDEA 检测在后续最小 Call 之前进行不必要的已排序 Call 的情况。还提供了用于删除冗余排序 Call 的快速修复程序。

2|4数据流增强功能

我们已经创建了一个新的基于数据流的检查,称为 Condition is covered by further condition。当第一个条件被第二个条件覆盖时,它会检测到第一个条件是不必要的情况。IDE提供了一个快速修复程序来消除这些冗余条件。

2|5禁止检查的冗余使用

IntelliJ IDEA现在可以检测到@SuppressWarning注释、// noinspection行注释或/** noinspection */ JavaDoc注释的冗余用法。当被抑制的检查不再处理相关方法体、类或语句中的任何警告时,IDEA 不仅会给您一个警告,而且还会提供一个快速修复程序来删除这些不必要的注释和注释。

3|0编辑器改进

编辑器也是我们开发中常用的一些功能,新版本中 IDEA 又为我们推出了一些实用又便捷的操作。

3|1多行TODO评论

IntelliJ IDEA 2018.3现在支持多行 TODO 注释,现在第一个和所有后续的 TODO 注释行在编辑器中突出显示并列在TODO工具窗口中。只需从多行 TODO 注释的第二行开始添加缩进,IDEA 就会将其与普通注释区分开来。

老版本中,是不支持多行 TODO 注释的显示的,而在新版本中,如果 todo 注释有多行,你只需要在下面几行前面再添加一个空格即可。

3|2禁用对特殊文件和文件夹的代码格式化

我们已经可以从格式化、导入优化和代码重排中锁定某些文件——实际上是从任何涉及格式化的操作中锁定,无论是显式的还是隐式的。只需创建一个范围,并将任何不能格式化的文件添加到其中!

3|3新的缩进状态栏

IntelliJ IDEA在一个新的缩进状态栏中显示当前文件中的缩进大小。如果文件的缩进与项目的当前设置不匹配,将在缩进视图中添加星号。现在可以选择控制状态栏中当前缩进的操作。

3|4EditorConfig支持的改进

IDE现在为EditorConfig文件提供语法突出显示和代码完成。您还可以使用新的缩进状态栏弹出窗口轻松导航到正在使用的EditorConfig文件。

4|0版本控制

IDEA 中的版本控制一直是我比较热爱的一个功能,对于代码分支管理,代码拉取提交都比较友好,特别是 Merge 冲突的时候,本地代码和远程分支代码的冲突 Diff Code 分界面展示,清晰一目了然,减少了合并代码的痛苦。在新版本中 IDEA 又对版本控制做了哪些优化呢?

4|1GitHub拉请求

IntelliJ IDEA最新支持GitHub Pull请求。从全新的GitHub pull requests工具窗口预览GitHub储存库中的所有拉请求。使用diff预览更改,或者通过上下文菜单从Pull请求创建一个本地分支,然后将其合并为常规分支。

4|2“History up to Here” 可以展示完整的历史

以前,History up to Here 只显示所选提交之前文件的历史记录,但是现在它可以通过切换到工具栏上显示所有分支来显示文件之后发生的事情。如果文件后来被删除了,这可能特别有用,因为要查明这种情况并非易事。

4|3VCS日志中的高级导航

您现在可以在VCS日志中从提交散列导航到VCS日志选项卡中的提交之后,或者在使用Go to hash/branch/tag操作之后,使用前进和后退导航操作。使用左右箭头键导航到子或父提交。

4|4忽略空格

用 IDEA合并代码时,发现有时候只是两个开发者提交的代码是因为格式化,导致一些空格的差异,我们可能也需要一个个检查下。

现在,在新版本中,IDEA 可以在合并时忽略空白更改。在“ 合并修订版本”对话框中,有一个新的“ 忽略” 下拉菜单,其中包含用于在合并时隐藏或修剪空白更改的选项。

4|5将文件从一个Git分支复制到另一个分支

IntelliJ IDEA 2018.3允许您通过方便的新的Get from Branch操作轻松地将文件从一个Git分支复制到另一个Git分支,该操作可从Compare branches对话框的Files选项卡中获得。

4|6提交对话框中的分支名称

IDE将在“ 提交”对话框中显示您要提交文件的分支名称。目前 IDEA 已经为Git,Mercurial 和 SVN 实现了这个功能。

4|7预览文件历史记录选项卡中的差异

Diff Preview现在可在Version Control工具窗口的File History选项卡中找到。

5|0搜索和替换

5|1新搜索无处不在

IntelliJ IDEA 2018.3引入了一种更好的方法来浏览项目和IDEA。请热烈欢迎重新设计Search Everywhere!实际上,它不仅仅是Search Everywhere,因为它包含了所有其他导航对话框:Search Everywhere, Find Action,Go to class,Go to file和Go to symbol。请注意,所有这些导航对话框仍可通过自己的键盘快捷方式访问,如前所述。

IDEA 中的搜索可以分为以下几类:

  • 类搜索,比如 Java,Groovy,Scala 等类文件
  • 文件搜索,类文件之外的所有文件
  • 符号搜索,包括接口名,类名,函数名,成员变量等
  • Action 搜索,找到你的操作
  • 字符串搜索及替换

在 IDEA 的世界里,搜索无处不在,你几乎可以瞬间找到你想要找到的任何一行代码甚至任何一个字。新版中,IDEA 更是将类、文件、符号、Action 搜索与双 Shift 键调出来的 SearchEverywhere 无缝地结合在一起。

5|2在“Find in Path”中搜索多行片段

现在,可以在路径中的查找/路径替换对话框中执行多行片段的搜索/替换 。您不再需要使用正则表达式来执行多行搜索。

5|3新结构搜索和替换对话框

IntelliJ IDEA 2018.3提供了一个更新的、流线型的结构化搜索和替换对话框。自动完成功能可在搜索字段的预定义模板中使用。您可以在搜索图标下方的下拉菜单中查看搜索历史记录。范围配置现在也更容易,更灵活。复杂的“ 编辑变量”表单已替换为过滤器面板,您可以在更新的对话框中找到该面板。

举个栗子:如果我们想搜索所有的 try catch 语句块,在调出结构化搜索框之后,可以输入以下文本:

try {
  $TryStatement$;
} catch($ExceptionType$ $Exception$){
  $CatchStatement$;
}

然后,IDEA 就会把所有的 try catch 语句块搜索出来,而新版更是强化了这个功能,下面我用两张动图演示一下这次更新的两个功能

结构化搜索由于输入的文本比较长,所以一般我们会自己预置一些模板,然后给模板命名,然后结构化搜索的时候呢,我们就可以直接基于这个模板名来搜索,新版更新的第一个功能就是,在文本输入框里,按下智能补全键,可以迅速调出模板,按照最近的搜索历史排序,然后再按下回车,文本就自动给你填充上了,你还可以点击左上角的搜索 icon,也会展示你最近的搜索记录,这些记录是以文本的方式展示的。

上面的文本就是系统内置的结构化模板 try's,点击完 Find 按钮之后,所有的 try catch 都会展示出来,我们还可以进一步过滤,比如,我们想要找出 catch 到的 exception 的名字为 flash,给对应的模板变量加上一个 Text 类型的 filter 即可迅速定位。

6|0插件首选项页面

2018.3版本中更新了“首选项(设置)” 中的“ 插件”页面,以便更轻松地管理,安装,卸载和更新插件。现在,您不仅可以按名称搜索插件,还可以按标签搜索插件。它变得更好,因为您现在还可以通过下载,名称,评级,功能或更新对结果进行排序。

调出插件配置之后,页面分为三大部分:

  • Marketplace: 插件市场,你可以搜索到你想要的插件
  • Installed: 当前安装的所有的插件,你还可以点击左上角搜索小 icon,按类别查看当前已安装的插件,其中的 custom 选项便是自己下载安装的插件
  • Updates:当前安装过的插件如果有更新,都会在这里显示出来

最后一个是配置项,你可以自定义你的插件仓库,你可以给配置插件下载的 http 代理(尤其是国外网络访问差的时候),你还可以从本地硬盘中安装插件

7|0运行一切

IntelliJ IDEA 2018.3带有一种新的集中式方法,可通过新的Run Anything操作(双击 Ctrl 调出窗口)在IDEA 中运行命令。使用新操作启动运行配置,可以运行包括 Maven 、Gradle 等其他终端命令。

在菜单栏中如下的图标按钮即可打开,亦可通过快捷键双击 Ctrl

另外,只需按Shift键即可将Run Anything对话框切换到Debug Anything模式。

8|0全新的高对比度主题

IDEA 这次又推出了一款新主题 High constrast,但是我感觉不是特别好看 我还是喜欢原来的 Darcula,根据每个人的口味吧,自己选择。主题预览如下:

9|0Spring & Spring Boot

IntelliJ IDEA 2018.3完全支持最近发布的Spring Boot 2.1。现在,当您使用Spring Initializr创建项目时,IDE将建议安装或启用适当的插件,以确保支持所有选定的技术。

10|0JVM调试器

10|1attach 到 java进程

IDEA 的 debug 功能无论是对于调试找错还是阅读源码,都发挥了非常重要的作用,新版 IDEA 对 debug 功能进一步加强,现在不仅仅能 debug 当前的应用,而且能够 attach 到任意的 Java 进程,attach 之后,你就可以看到该进程的线程状态,并且使用强大的 Memory View 功能可以看到当前内存的状态。

10|2自动重启侦听远程连接

现在,在调试远程进程时,IDE可以自动重新启动配置。只需 为远程调试配置启用新的自动重启选项。

10|3远程JVM中的异步堆栈跟踪

IntelliJ IDEA 2018.3现在支持远程JVM中的异步堆栈跟踪。要远程开始使用代理:

  • 将/lib/rt/debugger-agent.jar复制到远程计算机。
  • 将-javaagent:debugger-agent.jar添加到远程JVM选项。

现在,您可以在“ 异步注释配置”对话框中定义自己的异步注释。

10|4删除所有断点的操作

IntelliJ IDEA 2018.3提供了一些方便的新操作,可以删除项目中的所有断点或文件中的所有断点。您可以在“首选项(设置)”中为这些快捷方式分配自己的快捷方式 键图| 调试器操作。

11|0JVM Profiler

在网上看到一篇文章说 IDEA 2018.3 支持 CPU 的火焰图了,但是我看官网上没有介绍,所以也不确定,但是如果真有这功能我感觉满酷炫的。这里引用一下他的内容做个介绍。

IDEA 分析 Java 程序的性能分析了,主要包括如下几个方面:

  • 火焰图分析 CPU 性能消耗,你可以分析 Java 进程的所有线程的 CPU 消耗火焰图,也可以只选择一个线程来分析
  • 方法调用图,可以找到在某个线程中,消耗 cpu 最多的方法
  • 方法列表,可以看到每个方法的调用次数,点进去还可以看到详细的调用栈

下面用一章动图来展示一下,具体的细节读者可自行探索

有了这个神器之后,你不需要额外的 profiler 工具,就可以直接在 IDEA 里面完成应用程序的性能分析。预计不久的将来,Eclipse MAT 相关的功能可能也会移植到 IDEA 中,届时,Java 应用程序性能分析,堆分析,gc 分析将统统可以在 IDEA 里面运行,真正的 All In One 时代即将到来!

12|0结尾

当然本次的更新不止这些,篇幅有限,而且很多我目前也用不上,例如:关于Kubernetes的支持Helm资源文件,在Helm资源文件中导航,关于数据库的SQL代码完成的改进等等。

如果你感兴趣的话可以前往 IDEA 的官网阅读下他们更新的日志,或下载他们最新的版本体验下。IDEA 现在发展的越来越好,用户肯定也会越来越多,还没有加入体验的现在可以试着使用下。