1. 程式人生 > >IntelliJ IDEA 2018.3 重大升級,哪些功能打動了你?

IntelliJ IDEA 2018.3 重大升級,哪些功能打動了你?

前言

2018.11.28 IntelliJ IDEA 2018.3 正式版釋出。對於一個忠實愛好者,迫不及待的我下載了最新版本來體驗下。而且 IDEA 今年的第三次重大更新提供了不容錯過的顯著功能!你可以訪問詳細概述的新內容 What's New,或直接訪問網站並立即下載 IntelliJ IDEA的全新版本

具體的安裝步驟就不在贅述了,可以參考之前的 系列教程 | IntelliJ IDEA(一) :安裝與破解

安裝完成之後,啟動IntelliJ IDEA 2018.3,期待的等待載入過程,首先可以看到,載入介面已經發生變化了,IntelliJ IDEA 2018.2的時候是大紅色的,現在改成了如下的背景:

載入完成之後,還是一如既往的先讓你設定操作習慣,當然你也可以預設設定然後直接跳過,之後進入功能介面,發現操作介面好像沒有什麼大的變化

對於如下的彈框我還是保持讓它每次啟動自動彈出,因為它可以提示我一些快捷鍵的使用,畢竟快捷鍵那麼多,每次能瞭解多一點能更高效率的開發。

既然操作介面上看不出什麼大的改變,那說明新的功能升級並非是在工具的介面上而是一些功能使用上,我們將根據官方部落格以及自己的理解來為大家解讀一下這次更新有哪些全新的功能。

針對 Java

雖然Java 12尚未釋出,而且我們市場上現在普遍的還是在使用JDK 8,但是我們可以先提前瞭解一點。

Java 12

IntelliJ IDEA 2018.3最新支援 Java 12,您可以在IDE中預覽Raw String Literals(

JEP 326),並利用大量有用的檢查和快速修復。例如,將多行字串文字轉換為原始字串文字,反之亦然,檢測冗餘的前導或尾部反引號(`)等。

何為 Raw String Literals

原始字串文字可以跨越多行原始碼,不會解釋\n表單的轉義序列,例如Unicode轉義符\uXXXX。簡單來說就是,它不會對反斜槓''進行特殊的轉義處理。

轉換為原始字串文字

減少反引號的數量

分割原始字串文字

檢測更多重複項

即使在更復雜的情況下,IntelliJ IDEA現在也可以快速發現重複,例如變數名稱不同。IDEA 將在差異檢視器中顯示重複項,因此您可以將它們彼此並排比較。

Java Stream API的改進

IDEA 檢測在後續最小 Call 之前進行不必要的已排序 Call 的情況。還提供了用於刪除冗餘排序 Call 的快速修復程式。

JavaRedundantMin

資料流增強功能

我們已經建立了一個新的基於資料流的檢查,稱為 Condition is covered by further condition。當第一個條件被第二個條件覆蓋時,它會檢測到第一個條件是不必要的情況。IDE提供了一個快速修復程式來消除這些冗餘條件。

JavaSimplifingCondition

禁止檢查的冗餘使用

IntelliJ IDEA現在可以檢測到@SuppressWarning註釋、// noinspection行註釋或/** noinspection */ JavaDoc註釋的冗餘用法。當被抑制的檢查不再處理相關方法體、類或語句中的任何警告時,IDEA 不僅會給您一個警告,而且還會提供一個快速修復程式來刪除這些不必要的註釋和註釋。

JavaRedundantSuppression

編輯器改進

編輯器也是我們開發中常用的一些功能,新版本中 IDEA 又為我們推出了一些實用又便捷的操作。

多行TODO評論

IntelliJ IDEA 2018.3現在支援多行 TODO 註釋,現在第一個和所有後續的 TODO 註釋行在編輯器中突出顯示並列在TODO工具視窗中。只需從多行 TODO 註釋的第二行開始新增縮排,IDEA 就會將其與普通註釋區分開來。

EditorMultipleTODOComments

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

禁用對特殊檔案和資料夾的程式碼格式化

我們已經可以從格式化、匯入優化和程式碼重排中鎖定某些檔案——實際上是從任何涉及格式化的操作中鎖定,無論是顯式的還是隱式的。只需建立一個範圍,並將任何不能格式化的檔案新增到其中!

EditorDisableFormating

新的縮排狀態列

IntelliJ IDEA在一個新的縮排狀態列中顯示當前檔案中的縮排大小。如果檔案的縮排與專案的當前設定不匹配,將在縮排檢視中新增星號。現在可以選擇控制狀態列中當前縮排的操作。

EditorIndent

EditorConfig支援的改進

IDE現在為EditorConfig檔案提供語法突出顯示和程式碼完成。您還可以使用新的縮排狀態列彈出視窗輕鬆導航到正在使用的EditorConfig檔案。

EditorConfig

版本控制

IDEA 中的版本控制一直是我比較熱愛的一個功能,對於程式碼分支管理,程式碼拉取提交都比較友好,特別是 Merge 衝突的時候,原生代碼和遠端分支程式碼的衝突 Diff Code 分介面展示,清晰一目瞭然,減少了合併程式碼的痛苦。在新版本中 IDEA 又對版本控制做了哪些優化呢?

GitHub拉請求

IntelliJ IDEA最新支援GitHub Pull請求。從全新的GitHub pull requests工具視窗預覽GitHub儲存庫中的所有拉請求。使用diff預覽更改,或者通過上下文選單從Pull請求建立一個本地分支,然後將其合併為常規分支。

“History up to Here” 可以展示完整的歷史

以前,History up to Here 只顯示所選提交之前檔案的歷史記錄,但是現在它可以通過切換到工具欄上顯示所有分支來顯示檔案之後發生的事情。如果檔案後來被刪除了,這可能特別有用,因為要查明這種情況並非易事。

VCSHistoryUpToHere

VCS日誌中的高階導航

您現在可以在VCS日誌中從提交雜湊導航到VCS日誌選項卡中的提交之後,或者在使用Go to hash/branch/tag操作之後,使用前進和後退導航操作。使用左右箭頭鍵導航到子或父提交。

忽略空格

用 IDEA合併程式碼時,發現有時候只是兩個開發者提交的程式碼是因為格式化,導致一些空格的差異,我們可能也需要一個個檢查下。

現在,在新版本中,IDEA 可以在合併時忽略空白更改。在“ 合併修訂版本”對話方塊中,有一個新的“ 忽略” 下拉選單,其中包含用於在合併時隱藏或修剪空白更改的選項。

將檔案從一個Git分支複製到另一個分支

IntelliJ IDEA 2018.3允許您通過方便的新的Get from Branch操作輕鬆地將檔案從一個Git分支複製到另一個Git分支,該操作可從Compare branches對話方塊的Files選項卡中獲得。

提交對話方塊中的分支名稱

IDE將在“ 提交”對話方塊中顯示您要提交檔案的分支名稱。目前 IDEA 已經為Git,Mercurial 和 SVN 實現了這個功能。

預覽檔案歷史記錄選項卡中的差異

Diff Preview現在可在Version Control工具視窗的File History選項卡中找到。

搜尋和替換

新搜尋無處不在

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 無縫地結合在一起。

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

現在,可以在路徑中的查詢/路徑替換對話方塊中執行多行片段的搜尋/替換 。您不再需要使用正則表示式來執行多行搜尋。

新結構搜尋和替換對話方塊

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 即可迅速定位。

外掛首選項頁面

2018.3版本中更新了“首選項(設定)” 中的“ 外掛”頁面,以便更輕鬆地管理,安裝,解除安裝和更新外掛。現在,您不僅可以按名稱搜尋外掛,還可以按標籤搜尋外掛。它變得更好,因為您現在還可以通過下載,名稱,評級,功能或更新對結果進行排序。

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

  • Marketplace: 外掛市場,你可以搜尋到你想要的外掛
  • Installed: 當前安裝的所有的外掛,你還可以點選左上角搜尋小 icon,按類別檢視當前已安裝的外掛,其中的 custom 選項便是自己下載安裝的外掛
  • Updates:當前安裝過的外掛如果有更新,都會在這裡顯示出來

最後一個是配置項,你可以自定義你的外掛倉庫,你可以給配置外掛下載的 http 代理(尤其是國外網路訪問差的時候),你還可以從本地硬碟中安裝外掛

執行一切

IntelliJ IDEA 2018.3帶有一種新的集中式方法,可通過新的Run Anything操作(雙擊 Ctrl 調出視窗)在IDEA 中執行命令。使用新操作啟動執行配置,可以執行包括 Maven 、Gradle 等其他終端命令。

在選單欄中如下的圖示按鈕即可開啟,亦可通過快捷鍵雙擊 Ctrl

另外,只需按Shift鍵即可將Run Anything對話方塊切換到Debug Anything模式。

全新的高對比度主題

IDEA 這次又推出了一款新主題 High constrast,但是我感覺不是特別好看 我還是喜歡原來的 Darcula,根據每個人的口味吧,自己選擇。主題預覽如下:

Spring & Spring Boot

IntelliJ IDEA 2018.3完全支援最近釋出的Spring Boot 2.1。現在,當您使用Spring Initializr建立專案時,IDE將建議安裝或啟用適當的外掛,以確保支援所有選定的技術。

JVM偵錯程式

attach 到 java程序

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

自動重啟偵聽遠端連線

現在,在除錯遠端程序時,IDE可以自動重新啟動配置。只需 為遠端除錯配置啟用新的自動重啟選項。

遠端JVM中的非同步堆疊跟蹤

IntelliJ IDEA 2018.3現在支援遠端JVM中的非同步堆疊跟蹤。要遠端開始使用代理:

  • 將/lib/rt/debugger-agent.jar複製到遠端計算機。
  • 將-javaagent:debugger-agent.jar新增到遠端JVM選項。

現在,您可以在“ 非同步註釋配置”對話方塊中定義自己的非同步註釋。

刪除所有斷點的操作

IntelliJ IDEA 2018.3提供了一些方便的新操作,可以刪除專案中的所有斷點或檔案中的所有斷點。您可以在“首選項(設定)”中為這些快捷方式分配自己的快捷方式 鍵圖| 偵錯程式操作。

JVM Profiler

在網上看到一篇文章說 IDEA 2018.3 支援 CPU 的火焰圖了,但是我看官網上沒有介紹,所以也不確定,但是如果真有這功能我感覺滿酷炫的。這裡引用一下他的內容做個介紹。

IDEA 分析 Java 程式的效能分析了,主要包括如下幾個方面:

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

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

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

結尾

當然本次的更新不止這些,篇幅有限,而且很多我目前也用不上,例如:關於Kubernetes的支援Helm資原始檔,在Helm資原始檔中導航,關於資料庫的SQL程式碼完成的改進等等。

如果你感興趣的話可以前往 IDEA 的官網閱讀下他們更新的日誌,或下載他們最新的版本體驗下。IDEA 現在發展的越來越好,使用者肯定也會越來越多,還沒有加入體驗的現在可以試著使用下。

參考:1. IDEA 的新功能 2. [微信公眾號] 閃電俠的部落格