IntelliJ IDEA 新版釋出:支援CPU火焰圖,新增酷炫主題

閃電俠發表於2019-03-04

JetBrain 是一家偉大的公司,一直致力於為開發者開發世界上最好用的整合開發環境

就在上週,JetBrain 公司釋出了 Java 整合開發環境 IntelliJ IDEA 最新版本 2018.3 Beta,本篇文章,我將根據官方部落格以及自己的理解來為大家解讀一下這次更新有哪些重磅的功能。

1. 重構類、檔案、符號,Action 搜尋

IntelliJ IDEA(以下簡稱 IDEA) 中的搜尋可以分為以下幾類

  1. 類搜尋,比如 Java,Groovy,Scala 等類檔案
  2. 檔案搜尋,類檔案之外的所有檔案
  3. 符號搜尋,包括介面名,類名,函式名,成員變數等
  4. Action 搜尋,找到你的操作
  5. 字串搜尋及替換

在 IDEA 的世界裡,搜尋無處不在,你幾乎可以瞬間找到你想要找到的任何一行程式碼甚至任何一個字。新版中,IDEA 更是將類、檔案、符號、Action 搜尋與雙 Shift 鍵調出來的 Search Everywhere 無縫地結合在一起。

在老的版本中,類、檔案、符號、Action 搜尋是獨立的快捷鍵,在新版中,任意一種型別的搜尋行為被觸發,將彈出來以下視窗

搜尋.gif

從以上演示可以看到,我們調出搜尋類的視窗,該視窗將首先會展示基於類名搜尋的結果,如果你想複用當前輸入的字元基於其他的語義(比如檔案或者符號)進行搜尋,只需要按 Tab 鍵,結果瞬間就出來了。

2. 重新設計的結構搜尋/替換對話方塊

其實,IDEA 裡面除了以上五種型別的搜尋,還有一種非常強大的搜尋叫做結構化搜尋,你可以基於一定的程式碼結構搜到你所需要的結果。

舉個栗子:如果我們想搜尋所有的 try catch 語句塊,在調出結構化搜尋框之後,可以輸入以下文字

try {
  $TryStatement$;
} catch($ExceptionType$ $Exception$) {
  $CatchStatement$;
}
複製程式碼

然後,IDEA 就會把所有的 try catch 語句塊搜尋出來,而新版更是強化了這個功能,下面我用兩張動圖演示一下這次更新的兩個功能

結構化搜尋由於輸入的文字比較長,所以一般我們會自己預置一些模板,然後給模板命名,然後結構化搜尋的時候呢,我們就可以直接基於這個模板名來搜尋,新版更新的第一個功能就是,在文字輸入框裡,按下智慧補全鍵,可以迅速調出模板,按照最近的搜尋歷史排序,然後再按下回車,文字就自動給你填充上了,你還可以點選左上角的搜尋 icon,也會展示你最近的搜尋記錄,這些記錄是以文字的方式展示的

結構搜尋1.gif

上面的文字就是系統內建的結構化模板 try's,點選完 Find 按鈕之後,所有的 try catch 都會展示出來,我們還可以進一步過濾,比如,我們想要找出 catch 到的 exception 的名字為 flash,給對應的模板變數加上一個 Text 型別的 filter 即可迅速定位

結構搜尋2.gif

更多技巧在關注"閃電俠的部落格"公眾號之後,回覆 idea 即可獲取。

3. 執行一切

你可以雙擊 ctrl 鍵,調出 Run Anything 視窗,你可以輸入點什麼來執行任意可以執行的東西,比如起 tomcat 容器,單元測試,甚至可以執行終端指令,gradle、maven 構建命令

執行一切.gif

另外,你還可以按住 shift 鍵,那麼所有支援 debug 的執行將秒變 debug 模式

4. 重構外掛中心

IDEA 中很多強大的功能都是通過外掛來實現的,隨便舉個栗子,裝個語言外掛,IDEA 搖身一變為 nodejs IDE、php IDE、python IDE、scala IDE、go IDE,我自己就安裝了 30+ 非常好用的外掛。

而在新版的 IDEA 中,JetBrain 更是對外掛中心進行全面改版,如下圖

外掛中心.gif

調出外掛配置之後,頁面分為三大部分

  1. Marketplace: 外掛市場,你可以搜尋到你想要的外掛
  2. Installed: 當前安裝的所有的外掛,你還可以點選左上角搜尋小 icon,按類別檢視當前已安裝的外掛,其中的 custom 選項便是自己下載安裝的外掛
  3. Updates:當前安裝過的外掛如果有更新,都會在這裡顯示出來
  4. 最後一個是配置項,你可以自定義你的外掛倉庫,你可以給配置外掛下載的 http 代理(尤其是國外網路訪問差的時候),你還可以從本地硬碟中安裝外掛

5. 不斷改進的版本控制系統

我個人對於版本控制,是不太喜歡用圖形介面的,但是 IDEA 對於版本控制的設計真是太好用了,只能淪陷了,嘿嘿~

5.1 GitHub Pull Requests

新版中,加入了對 GitHub Pull Requests 的支援,現在你可以直接在電腦上建立或者檢視某個專案的 Pull Request 了

image.png

你還可以基於某個 Pull Requests 直接建立一個分支,或者直接在 Github 上檢視當前的 Pull Request,這個功能對於開源工作者來說是一件非常幸福的事。

5.2 Git 子模組支援

此外,新本 IDEA 對於 Git 子模組的支援也更加友好了。如果你的 Git 專案中包含 Git 子模組,在 clone 程式碼的時候,也會一併 clone 到本地,另外,專案中任何檔案有變更,提交 commit,IDEA 也會智慧匹配到外層模組或者子模組,一併提交 commit,進而同時 push 到多個倉庫。

5.3 Improved Annotate support

我們有時候會不經意地格式化自己或者別人寫過的程式碼,這就導致了每次提交程式碼的時候,即使只更新了一兩處程式碼,最後 diff 出來也會顯得很亂,然而其中大部分亂的地方是因為空格導致的。

在新版 IDEA 中,我們在對比檔案的時候,可以選擇忽略空格

image.png

注意:這個選項預設是開啟的

另外,在合併程式碼的時候,你也可以選擇忽略空格

image.png

這樣在解決衝突的時候,你也不會看到空格相關的改動,省下的很多寶貴的注意力。

IDEA 對於版本控制的支援實在是太強大了,更多版本控制神技在關注"閃電俠的部落格"公眾號之後,回覆 idea 即可獲取。

6. 全新主題

IDEA 終於在這一版新增了一款預設主題,該主題為一款高對比度主題,應該會有很多人會喜歡吧

image.png

預計在不久的將來,IDEA 會在主題這方面下功夫,畢竟筆者覺得 VS Code 的主題還是蠻好看的,IDEA 可以吸收過來。

7. 編輯器改進

7.1 多行 TODO 註釋

在 IDEA 中,只要你在註釋中新增了 todo 關鍵詞,在邊條欄中的 todo 選項卡中就可以看到當前所有待未完成的功能,如下圖

image.png

老版本中,是不支援 多行 todo 註釋的顯示的,而在新版本中,如果 todo 註釋有多行,你只需要在下面幾行前面再新增一個空格即可

todo動圖.gif

7.2 縮排狀態列

IDEA 現在可以在狀態列中顯示當前檔案的縮排是幾個空格,你可以點選這個狀態列,控制當前檔案的縮排風格。

image.png

比如,你的專案縮排風格是4個空格,然後某個新人寫了個 tab 風格的原始檔提交了,你可以直接點選彈出選單的 Configure Indents For Java...,然後做一些修改即可

7.3 TAB 快速切換原始檔

tab快速切換.gif

你現在可以使用 Tab+數字,迅速切換到你想要的檔案,這比滑鼠點選要快一些

7.4 多行字串搜尋

在新版 IDEA 中,不僅僅能夠搜尋字串,而且能夠搜尋整個段落

image.png

8. JVM 偵錯程式

8.1 attach 到任意 Java 程式

IDEA 的 debug 功能無論是對於除錯找錯還是閱讀原始碼,都發揮了非常重要的作用,新版 IDEA 對 debug 功能進一步加強,現在不僅僅能 debug 當前的應用,而且能夠 attach 到任意的 Java 程式,attach 之後,你就可以看到該程式的執行緒狀態,並且使用強大的 Memory View 功能可以看到當前記憶體的狀態。

image.png

8.2 遠端除錯支援非同步棧追蹤

IDEA 支援遠端 debug 幾乎和本地 debug 一樣,只需要遠端埠開啟即可。

image.png

IDEA 也支援非同步執行緒的除錯,斷點打在某一行,你不僅可以看到這行對應執行緒的呼叫棧,還能看到啟動對應執行緒的外部執行緒的呼叫棧。

非同步除錯.gif

新版中,對遠端除錯也加入了非同步棧的支援,採用以下兩個步驟即可

  1. 拷貝 /lib/rt/debugger-agent.jar 到遠端機器
  2. 新增啟動引數 -javaagent:debugger-agent.jar 到遠端機器

如何使用 debug 功能來迅速找錯,如何通過 debug 閃電般地閱讀原始碼,在關注"閃電俠的部落格"公眾號之後,回覆 idea 即可獲取酷炫神技。

9. 執行配置

9.1 配置巨集

我們在執行應用程式的時候,有的時候需要設定不同的啟動引數來檢視不同的效果,在以前,這些引數都需要你手動敲進去,並且經常會忘記當前啟動引數的測試目的,非常麻煩。

現在,你可以提前將引數通過巨集的方式輸入,除錯的時候,通過調整巨集,你不用反覆修改啟動引數文字,通過巨集文字還可以一目瞭然看到當前的啟動引數的測試目的是什麼。

image.png

9.2 使用文字作為控制檯輸入

有的時候需要在控制檯輸入一些文字,然後再執行程式,這個對於除錯來說非常不便,新版 IDEA 支援指定一個文字檔案作為控制檯輸入,這樣,你就可以預先定義好控制檯輸入,重複利用,提高效率

image.png

10. JVM Profiler

最後一個重磅功能,應該可以說是本次更新最大的亮點,IDEA 現在可以分析 Java 程式的效能分析了,包括如下幾個方面

  1. 火焰圖分析 CPU 效能消耗,你可以分析 Java 程式的所有執行緒的 CPU 消耗火焰圖,也可以只選擇一個執行緒來分析
  2. 方法呼叫圖,可以找到在某個執行緒中,消耗 cpu 最多的方法
  3. 方法列表,可以看到每個方法的呼叫次數,點進去還可以看到詳細的呼叫棧

下面用一章動圖來展示一下,具體的細節讀者可自行探索

jvm profiler.gif

有了這個神器之後,你不需要額外的 profiler 工具,就可以直接在 IDEA 裡面完成應用程式的效能分析。預計不久的將來,Eclipse MAT 相關的功能可能也會移植到 IDEA 中,屆時,Java 應用程式效能分析,堆分析,gc 分析將統統可以在 IDEA 裡面執行,真正的 All In One 時代即將到來!

11. More……

除此之外,本次更新還有大量的小功能的更新,在你使用新版 IDEA 的時候就會體驗到,這裡就不一一贅述了,趕緊下載體驗吧,下載地址:www.jetbrains.com/idea/nextve…

這篇文章更多的是解析本次更新,其實上個版本的更新也有很多重磅的功能,如果你不瞭解這些,可以參考一下這篇文章:IntelliJ IDEA 2018.1正式釋出 ,希望能夠幫助你

喜歡本文的朋友們,歡迎長按下圖關注訂閱號閃電俠的部落格,回覆 “idea” 立即獲取 IntelliJ IDEA 酷炫神技

image

相關文章