IntelliJ IDEA 2018.3 Beta 重大更新:支持 CPU 火焰圖,新增酷炫主題

本文轉(zhuǎn)載自公眾號(hào):閃電俠的博客
JetBrain 是一家偉大的公司,一直致力于為開發(fā)者開發(fā)世界上最好用的集成開發(fā)環(huán)境

就在上周,JetBrain 公司發(fā)布了 Java 集成開發(fā)環(huán)境 IntelliJ IDEA 最新版本 2018.3 Beta,本篇文章,我將根據(jù)官方博客以及自己的理解來(lái)為大家解讀一下這次更新有哪些重磅的功能。

1. 重構(gòu)類、文件、符號(hào),Action 搜索

IntelliJ IDEA(以下簡(jiǎn)稱 IDEA) 中的搜索可以分為以下幾類

  1. 類搜索,比如 Java,Groovy,Scala 等類文件

  2. 文件搜索,類文件之外的所有文件

  3. 符號(hào)搜索,包括接口名,類名,函數(shù)名,成員變量等

  4. Action 搜索,找到你的操作

  5. 字符串搜索及替換

在 IDEA 的世界里,搜索無(wú)處不在,你幾乎可以瞬間找到你想要找到的任何一行代碼甚至任何一個(gè)字。新版中,IDEA 更是將類、文件、符號(hào)、Action 搜索與雙 Shift 鍵調(diào)出來(lái)的 SearchEverywhere 無(wú)縫地結(jié)合在一起。

在老的版本中,類、文件、符號(hào)、Action 搜索是獨(dú)立的快捷鍵,在新版中,任意一種類型的搜索行為被觸發(fā),將彈出來(lái)以下窗口

重構(gòu)類、文件、符號(hào),Action 搜索

從以上演示可以看到,我們調(diào)出搜索類的窗口,該窗口將首先會(huì)展示基于類名搜索的結(jié)果,如果你想復(fù)用當(dāng)前輸入的字符基于其他的語(yǔ)義(比如文件或者符號(hào))進(jìn)行搜索,只需要按 Tab 鍵,結(jié)果瞬間就出來(lái)了。

2. 重新設(shè)計(jì)的結(jié)構(gòu)搜索/替換對(duì)話框

其實(shí),IDEA 里面除了以上五種類型的搜索,還有一種非常強(qiáng)大的搜索叫做 結(jié)構(gòu)化搜索,你可以基于一定的代碼結(jié)構(gòu)搜到你所需要的結(jié)果。

舉個(gè)栗子:如果我們想搜索所有的 try catch 語(yǔ)句塊,在調(diào)出結(jié)構(gòu)化搜索框之后,可以輸入以下文本

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

然后,IDEA 就會(huì)把所有的 try catch 語(yǔ)句塊搜索出來(lái),而新版更是強(qiáng)化了這個(gè)功能,下面我用兩張動(dòng)圖演示一下這次更新的兩個(gè)功能

結(jié)構(gòu)化搜索由于輸入的文本比較長(zhǎng),所以一般我們會(huì)自己預(yù)置一些模板,然后給模板命名,然后結(jié)構(gòu)化搜索的時(shí)候呢,我們就可以直接基于這個(gè)模板名來(lái)搜索,新版更新的第一個(gè)功能就是,在文本輸入框里,按下智能補(bǔ)全鍵,可以迅速調(diào)出模板,按照最近的搜索歷史排序,然后再按下回車,文本就自動(dòng)給你填充上了,你還可以點(diǎn)擊左上角的搜索 icon,也會(huì)展示你最近的搜索記錄,這些記錄是以文本的方式展示的

重新設(shè)計(jì)的結(jié)構(gòu)搜索

上面的文本就是系統(tǒng)內(nèi)置的結(jié)構(gòu)化模板 try's,點(diǎn)擊完 Find 按鈕之后,所有的 try catch 都會(huì)展示出來(lái),我們還可以進(jìn)一步過(guò)濾,比如,我們想要找出 catch 到的 exception 的名字為 flash,給對(duì)應(yīng)的模板變量加上一個(gè) Text 類型的 filter 即可迅速定位

替換對(duì)話框

3. 運(yùn)行一切

你可以雙擊 ctrl 鍵,調(diào)出 RunAnything 窗口,你可以輸入點(diǎn)什么來(lái)運(yùn)行任意可以運(yùn)行的東西,比如起 tomcat 容器,單元測(cè)試,甚至可以運(yùn)行終端指令,gradle、maven 構(gòu)建命令

運(yùn)行一切

另外,你還可以按住 shift 鍵,那么所有支持 debug 的運(yùn)行將秒變 debug 模式

4. 重構(gòu)插件中心

IDEA 中很多強(qiáng)大的功能都是通過(guò)插件來(lái)實(shí)現(xiàn)的,隨便舉個(gè)栗子,裝個(gè)語(yǔ)言插件,IDEA 搖身一變?yōu)?nodejs IDE、php IDE、python IDE、scala IDE、go IDE,我自己就安裝了 30+ 非常好用的插件。

而在新版的 IDEA 中,JetBrain 更是對(duì)插件中心進(jìn)行全面改版,如下圖

重構(gòu)插件中心

調(diào)出插件配置之后,頁(yè)面分為三大部分

  1. Marketplace: 插件市場(chǎng),你可以搜索到你想要的插件

  2. Installed: 當(dāng)前安裝的所有的插件,你還可以點(diǎn)擊左上角搜索小 icon,按類別查看當(dāng)前已安裝的插件,其中的 custom 選項(xiàng)便是自己下載安裝的插件

  3. Updates:當(dāng)前安裝過(guò)的插件如果有更新,都會(huì)在這里顯示出來(lái)

  4. 最后一個(gè)是配置項(xiàng),你可以自定義你的插件倉(cāng)庫(kù),你可以給配置插件下載的 http 代理(尤其是國(guó)外網(wǎng)絡(luò)訪問(wèn)差的時(shí)候),你還可以從本地硬盤中安裝插件

5. 不斷改進(jìn)的版本控制系統(tǒng)

我個(gè)人對(duì)于版本控制,是不太喜歡用圖形界面的,但是 IDEA 對(duì)于版本控制的設(shè)計(jì)真是太好用了,只能淪陷了,嘿嘿~

5.1 GitHub Pull Requests

新版中,加入了對(duì) GitHub Pull Requests 的支持,現(xiàn)在你可以直接在電腦上創(chuàng)建或者查看某個(gè)項(xiàng)目的 Pull Request 了

你還可以基于某個(gè) Pull Requests 直接創(chuàng)建一個(gè)分支,或者直接在 Github 上查看當(dāng)前的 Pull Request,這個(gè)功能對(duì)于開源工作者來(lái)說(shuō)是一件非常幸福的事。

GitHub Pull Requests

5.2 Git 子模塊支持

此外,新本 IDEA 對(duì)于 Git 子模塊的支持也更加友好了。如果你的 Git 項(xiàng)目中包含 Git 子模塊,在 clone 代碼的時(shí)候,也會(huì)一并 clone 到本地,另外,項(xiàng)目中任何文件有變更,提交 commit,IDEA 也會(huì)智能匹配到外層模塊或者子模塊,一并提交 commit,進(jìn)而同時(shí) push 到多個(gè)倉(cāng)庫(kù)。

5.3 Improved Annotate support

我們有時(shí)候會(huì)不經(jīng)意地格式化自己或者別人寫過(guò)的代碼,這就導(dǎo)致了每次提交代碼的時(shí)候,即使只更新了一兩處代碼,最后 diff 出來(lái)也會(huì)顯得很亂,然而其中大部分亂的地方是因?yàn)榭崭駥?dǎo)致的。

在新版 IDEA 中,我們?cè)趯?duì)比文件的時(shí)候,可以選擇忽略空格

Improved Annotate support

注意:這個(gè)選項(xiàng)默認(rèn)是打開的

另外,在合并代碼的時(shí)候,你也可以選擇忽略空格

Improved Annotate support

這樣在解決沖突的時(shí)候,你也不會(huì)看到空格相關(guān)的改動(dòng),省下的很多寶貴的注意力。

6. 全新主題

IDEA 終于在這一版新增了一款默認(rèn)主題,該主題為一款高對(duì)比度主題,應(yīng)該會(huì)有很多人會(huì)喜歡吧

全新主題

預(yù)計(jì)在不久的將來(lái),IDEA 會(huì)在主題這方面下功夫,畢竟筆者覺得 VS Code 的主題還是蠻好看的,IDEA 可以吸收過(guò)來(lái)。

7. 編輯器改進(jìn)

7.1 多行 TODO 注釋

在 IDEA 中,只要你在注釋中添加了 todo 關(guān)鍵詞,在邊條欄中的 todo 選項(xiàng)卡中就可以看到當(dāng)前所有待未完成的功能,如下圖

多行 TODO 注釋

老版本中,是不支持 多行 todo 注釋的顯示的,而在新版本中,如果 todo 注釋有多行,你只需要在下面幾行前面再添加一個(gè)空格即可

多行 TODO 注釋

7.2 縮進(jìn)狀態(tài)欄

IDEA 現(xiàn)在可以在狀態(tài)欄中顯示當(dāng)前文件的縮進(jìn)是幾個(gè)空格,你可以點(diǎn)擊這個(gè)狀態(tài)欄,控制當(dāng)前文件的縮進(jìn)風(fēng)格。

縮進(jìn)狀態(tài)欄

比如,你的項(xiàng)目縮進(jìn)風(fēng)格是4個(gè)空格,然后某個(gè)新人寫了個(gè) tab 風(fēng)格的源文件提交了,你可以直接點(diǎn)擊彈出菜單的 ConfigureIndentsForJava...,然后做一些修改即可

7.3 TAB 快速切換源文件

TAB 快速切換源文件

你現(xiàn)在可以使用 Tab+數(shù)字,迅速切換到你想要的文件,這比鼠標(biāo)點(diǎn)擊要快一些

7.4 多行字符串搜索

在新版 IDEA 中,不僅僅能夠搜索字符串,而且能夠搜索整個(gè)段落

多行字符串搜索

8. JVM 調(diào)試器

8.1 attach 到任意 Java 進(jìn)程

IDEA 的 debug 功能無(wú)論是對(duì)于調(diào)試找錯(cuò)還是閱讀源碼,都發(fā)揮了非常重要的作用,新版 IDEA 對(duì) debug 功能進(jìn)一步加強(qiáng),現(xiàn)在不僅僅能 debug 當(dāng)前的應(yīng)用,而且能夠 attach 到任意的 Java 進(jìn)程,attach 之后,你就可以看到該進(jìn)程的線程狀態(tài),并且使用強(qiáng)大的 Memory View 功能可以看到當(dāng)前內(nèi)存的狀態(tài)。

attach 到任意 Java 進(jìn)程

8.2 遠(yuǎn)程調(diào)試支持異步棧追蹤

IDEA 支持遠(yuǎn)程 debug 幾乎和本地 debug 一樣,只需要遠(yuǎn)程端口開啟即可。

遠(yuǎn)程調(diào)試支持異步棧追蹤

IDEA 也支持異步線程的調(diào)試,斷點(diǎn)打在某一行,你不僅可以看到這行對(duì)應(yīng)線程的調(diào)用棧,還能看到啟動(dòng)對(duì)應(yīng)線程的外部線程的調(diào)用棧。

遠(yuǎn)程調(diào)試支持異步棧追蹤

新版中,對(duì)遠(yuǎn)程調(diào)試也加入了異步棧的支持,采用以下兩個(gè)步驟即可

  1. 拷貝 /lib/rt/debugger-agent.jar 到遠(yuǎn)程機(jī)器

  2. 添加啟動(dòng)參數(shù) -javaagent:debugger-agent.jar 到遠(yuǎn)程機(jī)器

9. 運(yùn)行配置

9.1 配置宏

我們?cè)谶\(yùn)行應(yīng)用程序的時(shí)候,有的時(shí)候需要設(shè)定不同的啟動(dòng)參數(shù)來(lái)查看不同的效果,在以前,這些參數(shù)都需要你手動(dòng)敲進(jìn)去,并且經(jīng)常會(huì)忘記當(dāng)前啟動(dòng)參數(shù)的測(cè)試目的,非常麻煩。

現(xiàn)在,你可以提前將參數(shù)通過(guò)宏的方式輸入,調(diào)試的時(shí)候,通過(guò)調(diào)整宏,你不用反復(fù)修改啟動(dòng)參數(shù)文本,通過(guò)宏文本還可以一目了然看到當(dāng)前的啟動(dòng)參數(shù)的測(cè)試目的是什么。

配置宏

9.2 使用文本作為控制臺(tái)輸入

有的時(shí)候需要在控制臺(tái)輸入一些文本,然后再運(yùn)行程序,這個(gè)對(duì)于調(diào)試來(lái)說(shuō)非常不便,新版 IDEA 支持指定一個(gè)文本文件作為控制臺(tái)輸入,這樣,你就可以預(yù)先定義好控制臺(tái)輸入,重復(fù)利用,提高效率

使用文本作為控制臺(tái)輸入

10. JVM Profiler

最后一個(gè)重磅功能,應(yīng)該可以說(shuō)是本次更新最大的亮點(diǎn),IDEA 現(xiàn)在可以分析 Java 程序的性能分析了,包括如下幾個(gè)方面

  1. 火焰圖分析 CPU 性能消耗,你可以分析 Java 進(jìn)程的所有線程的 CPU 消耗火焰圖,也可以只選擇一個(gè)線程來(lái)分析

  2. 方法調(diào)用圖,可以找到在某個(gè)線程中,消耗 cpu 最多的方法

  3. 方法列表,可以看到每個(gè)方法的調(diào)用次數(shù),點(diǎn)進(jìn)去還可以看到詳細(xì)的調(diào)用棧

下面用一章動(dòng)圖來(lái)展示一下,具體的細(xì)節(jié)讀者可自行探索

JVM Profiler

有了這個(gè)神器之后,你不需要額外的 profiler 工具,就可以直接在 IDEA 里面完成應(yīng)用程序的性能分析。預(yù)計(jì)不久的將來(lái),Eclipse MAT 相關(guān)的功能可能也會(huì)移植到 IDEA 中,屆時(shí),Java 應(yīng)用程序性能分析,堆分析,gc 分析將統(tǒng)統(tǒng)可以在 IDEA 里面運(yùn)行,真正的 All In One 時(shí)代即將到來(lái)!

11. More……

除此之外,本次更新還有大量的小功能的更新,在你使用新版 IDEA 的時(shí)候就會(huì)體驗(yàn)到,這里就不一一贅述了,趕緊下載體驗(yàn)吧,下載地址:https://www.jetbrains.com/idea/nextversion/

這篇文章更多的是解析本次更新,其實(shí)上個(gè)版本的更新也有很多重磅的功能,如果你想了解這些,可以參考一下這篇文章 IntelliJ IDEA 2018.1正式發(fā)布,希望能夠幫助你

原文地址:IntelliJ IDEA 重大更新:支持CPU火焰圖,新增酷炫主題
歡迎關(guān)注我的個(gè)人公眾號(hào):超級(jí)碼里奧
如果這對(duì)您有幫助,歡迎點(diǎn)贊和分享,轉(zhuǎn)載請(qǐng)注明出處

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,001評(píng)論 25 709
  • 用兩張圖告訴你,為什么你的 App 會(huì)卡頓? - Android - 掘金 Cover 有什么料? 從這篇文章中你...
    hw1212閱讀 13,975評(píng)論 2 59
  • 去年,中級(jí)會(huì)計(jì)最后一門會(huì)計(jì)實(shí)務(wù)總算過(guò)了,考了78分,成績(jī)不算理想,感覺有點(diǎn)辜負(fù)網(wǎng)校老師的辛苦教學(xué)。 雖然我是會(huì)計(jì)專...
    悠悠地四月天閱讀 1,570評(píng)論 3 1
  • 我們每個(gè)人都是世界上獨(dú)一無(wú)二的,每個(gè)人的肌膚狀況也是世界上獨(dú)一無(wú)二的,很多別人交口稱贊的產(chǎn)品你用著卻效果一般,就是...
    f15d57595d1c閱讀 570評(píng)論 0 0
  • 一年前的愿望清單,反過(guò)頭來(lái)再看,感覺更像是目標(biāo)清單,那些大大小小的目標(biāo),都指向未來(lái),卻很少關(guān)注現(xiàn)在。突然記起很多年...
    沉默之沙_閱讀 333評(píng)論 0 1

友情鏈接更多精彩內(nèi)容