1. 程式人生 > >IDEA 外掛集錦(史上最全系列)

IDEA 外掛集錦(史上最全系列)

工欲善其事必先利其器,一款好的開發工具不但能大大縮減我們編碼的時間,而且能使我們規範開發,還能秀出操作。本文將簡單介紹一些本人見識過的開發工具。

寫在前面:外掛查詢選單 >>>>> File->Settings->Plugins,並按照下文中的外掛名稱進行搜尋
官網外掛庫:https://plugins.jetbrains.com/

一、程式碼規範檢測類

1.Alibaba Java Coding Guidelines ✔

為了讓開發者更加方便、快速將規範推動並實行起來,阿里巴巴基於手冊內容,研發了一套自動化的IDE檢測外掛(IDEA、Eclipse)。該外掛在掃描程式碼後,將不符合規約的程式碼按Blocker/Critical/Major三個等級顯示在下方,甚至在IDEA上,我們還基於Inspection機制提供了實時檢測功能,編寫程式碼的同時也能快速發現問題所在。

1.在Tools->阿里編碼規範中未開啟實時監測功能,可通過在java檔案中直接右擊選擇“編碼規則掃描”,可在Inspection Results中檢視不規範資訊。

2.在Tools->阿里編碼規範中開啟實時監測功能,在不規範的程式碼中,外掛將會用波浪線提示。這時可直接將滑鼠座標處於在波浪線上的程式碼處,通過快捷鍵ALT+ENTER,進行快速修復。

2.CheckStyle-IDEA ✔

checkstyle官網地址http://checkstyle.sourceforge.net/
當然每家公司可能會有自己的程式碼規範,這時候不妨考慮下CheckStyle。
1.在File->Setting->Editor->CheckStyle

中選擇是否進行實時檢查。
(1) 實時檢查,實時地對不規範的書寫進行提示 ,並在編輯頁面中進行顏色標識。
(2) 取消實時檢查後,可在開啟的檔案中右擊選擇Check Current File對當前頁面進行檢查,此時可在** CheckStyle Scan** 面板中檢視不規範內容,點選條目可檢視對應出錯語句。

2.在File->Setting->Other Setting->checkStyle中配置自定義的程式碼規範

程式碼規範檔案示例:

<?xml version="1.0"?>
<!DOCTYPE module PUBLIC
        "-//Puppy Crawl//DTD Check Configuration 1.3//EN"
        "http://www.puppycrawl.com/dtds/configuration_1_3.dtd">
<module name="Checker"> <!-- If you set the basedir property below, then all reported file names will be relative to the specified directory. See http://checkstyle.sourceforge.net/5.x/config.html#Checker <property name="basedir" value="${basedir}"/> --> <!-- 檢查每個包中是否有java註釋檔案,預設有package-info.java --> <!-- <module name="JavadocPackage"/> --> <!-- 檢查檔案是否以一個空行結束 --> <module name="NewlineAtEndOfFile"/> <!-- 檢查property檔案中是否有相同的key --> <module name="Translation"/> <!-- 檔案長度不超過1500行 --> <module name="FileLength"> <property name="max" value="1500"/> </module> <!-- 檢查檔案中是否含有'\t' --> <module name="FileTabCharacter"/> <!-- Miscellaneous other checks. --> <module name="RegexpSingleline"> <property name="format" value="\s+$"/> <property name="minimum" value="0"/> <property name="maximum" value="0"/> <property name="message" value="Line has trailing spaces."/> </module> <!-- 每個java檔案一個語法樹 --> <module name="TreeWalker"> <!-- 註釋檢查 --> <!-- 檢查方法和建構函式的javadoc --> <module name="JavadocMethod"> <property name="tokens" value="METHOD_DEF" /> </module> <!-- 檢查類和介面的javadoc。預設不檢查author和version tags --> <module name="JavadocType"/> <!-- 檢查變數的javadoc --> <module name="JavadocVariable"/> <!-- 檢查javadoc的格式 --> <module name="JavadocStyle"> <property name="checkFirstSentence" value="false"/> </module> <!-- 檢查TODO:註釋 --> <module name="TodoComment"/> <!-- 命名檢查 --> <!-- 區域性的final變數,包括catch中的引數的檢查 --> <module name="LocalFinalVariableName" /> <!-- 區域性的非final型的變數,包括catch中的引數的檢查 --> <module name="LocalVariableName" /> <!-- 包名的檢查(只允許小寫字母),預設^[a-z]+(\.[a-zA-Z_][a-zA-Z_0-9_]*)*$ --> <module name="PackageName"> <property name="format" value="^[a-z]+(\.[a-z][a-z0-9]*)*$" /> <message key="name.invalidPattern" value="包名 ''{0}'' 要符合 ''{1}''格式."/> </module> <!-- 僅僅是static型的變數(不包括static final型)的檢查 --> <module name="StaticVariableName" /> <!-- Class或Interface名檢查,預設^[A-Z][a-zA-Z0-9]*$--> <module name="TypeName"> <property name="severity" value="warning"/> <message key="name.invalidPattern" value="名稱 ''{0}'' 要符合 ''{1}''格式."/> </module> <!-- 非static型變數的檢查 --> <module name="MemberName" /> <!-- 方法名的檢查 --> <module name="MethodName" /> <!-- 方法的引數名 --> <module name="ParameterName " /> <!-- 常量名的檢查(只允許大寫),預設^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$ --> <module name="ConstantName" /> <!-- 定義檢查 --> <!-- 檢查陣列型別定義的樣式 --> <module name="ArrayTypeStyle"/> <!-- 檢查方法名、建構函式、catch塊的引數是否是final的 --> <!-- <module name="FinalParameters"/> --> <!-- 檢查long型定義是否有大寫的“L” --> <module name="UpperEll"/> <!-- Checks for Headers --> <!-- See http://checkstyle.sf.net/config_header.html --> <!-- <module name="Header"> --> <!-- The follow property value demonstrates the ability --> <!-- to have access to ANT properties. In this case it uses --> <!-- the ${basedir} property to allow Checkstyle to be run --> <!-- from any directory within a project. See property --> <!-- expansion, --> <!-- http://checkstyle.sf.net/config.html#properties --> <!-- <property --> <!-- name="headerFile" --> <!-- value="${basedir}/java.header"/> --> <!-- </module> --> <!-- Following interprets the header file as regular expressions. --> <!-- <module name="RegexpHeader"/> --> <!-- import檢查--> <!-- 避免使用* --> <module name="AvoidStarImport"/> <!-- 檢查是否從非法的包中匯入了類 --> <module name="IllegalImport"/> <!-- 檢查是否匯入了多餘的包 --> <module name="RedundantImport"/> <!-- 沒用的import檢查,比如:1.沒有被用到2.重複的3.import java.lang的4.import 與該類在同一個package的 --> <module name="UnusedImports" /> <!-- 長度檢查 --> <!-- 每行不超過150個字元 --> <module name="LineLength"> <property name="max" value="150" /> </module> <!-- 方法不超過150行 --> <module name="MethodLength"> <property name="tokens" value="METHOD_DEF" /> <property name="max" value="150" /> </module> <!-- 方法的引數個數不超過5個。 並且不對構造方法進行檢查--> <module name="ParameterNumber"> <property name="max" value="10" /> <property name="ignoreOverriddenMethods" value="true"/> <property name="tokens" value="METHOD_DEF" /> </module> <!-- 空格檢查--> <!-- 方法名後跟左圓括號"(" --> <module name="MethodParamPad" /> <!-- 在型別轉換時,不允許左圓括號右邊有空格,也不允許與右圓括號左邊有空格 --> <module name="TypecastParenPad" /> <!-- Iterator --> <!-- <module name="EmptyForIteratorPad"/> --> <!-- 檢查尖括號 --> <!-- <module name="GenericWhitespace"/> --> <!-- 檢查在某個特定關鍵字之後應保留空格 --> <module name="NoWhitespaceAfter"/> <!-- 檢查在某個特定關鍵字之前應保留空格 --> <module name="NoWhitespaceBefore"/> <!-- 操作符換行策略檢查 --> <module name="OperatorWrap"/> <!-- 圓括號空白 --> <module name="ParenPad"/> <!-- 檢查分隔符是否在空白之後 --> <module name="WhitespaceAfter"/> <!-- 檢查分隔符周圍是否有空白 --> <module name="WhitespaceAround"/> <!-- 修飾符檢查 --> <!-- 檢查修飾符的順序是否遵照java語言規範,預設public、protected、private、abstract、static、final、transient、volatile、synchronized、native、strictfp --> <module name="ModifierOrder"/> <!-- 檢查介面和annotation中是否有多餘修飾符,如介面方法不必使用public --> <module name="RedundantModifier"/> <!-- 程式碼塊檢查 --> <!-- 檢查是否有巢狀程式碼塊 --> <module name="AvoidNestedBlocks"/> <!-- 檢查是否有空程式碼塊 --> <module name="EmptyBlock"/> <!-- 檢查左大括號位置 --> <module name="LeftCurly"/> <!-- 檢查程式碼塊是否缺失{} --> <module name="NeedBraces"/> <!-- 檢查右大括號位置 --> <module name="RightCurly"/> <!-- 程式碼檢查 --> <!-- 檢查是否在同一行初始化 --> <!-- <module name="AvoidInlineConditionals"/> --> <!-- 檢查空的程式碼段 --> <module name="EmptyStatement"/> <!-- 檢查在重寫了equals方法後是否重寫了hashCode方法 --> <module name="EqualsHashCode"/> <!-- 檢查區域性變數或引數是否隱藏了類中的變數 --> <module name="HiddenField"> <property name="tokens" value="VARIABLE_DEF"/> </module> <!-- 檢查是否使用工廠方法例項化 --> <module name="IllegalInstantiation"/> <!-- 檢查子表示式中是否有賦值操作 --> <module name="InnerAssignment"/> <!-- 檢查是否有"魔術"數字 --> <module name="MagicNumber"> <property name="ignoreNumbers" value="0, 1"/> <property name="ignoreAnnotation" value="true"/> </module> <!-- 檢查switch語句是否有default --> <module name="MissingSwitchDefault"/> <!-- 檢查是否有過度複雜的布林表示式 --> <module name="SimplifyBooleanExpression"/> <!-- 檢查是否有過於複雜的布林返回程式碼段 --> <module name="SimplifyBooleanReturn"/> <!-- 類設計檢查 --> <!-- 檢查類是否為擴充套件設計l --> <!-- <module name="DesignForExtension"/> --> <!-- 檢查只有private建構函式的類是否宣告為final --> <module name="FinalClass"/> <!-- 檢查工具類是否有putblic的構造器 --> <module name="HideUtilityClassConstructor"/> <!-- 檢查介面是否僅定義型別 --> <module name="InterfaceIsType"/> <!-- 檢查類成員的可見度 --> <module name="VisibilityModifier"/> <!-- 其他檢查 --> <!-- 檔案中使用了System.out.print等 <module name="GenericIllegalRegexp"> <property name="format" value="System\.out\.print"/> </module> <module name="GenericIllegalRegexp"> <property name="format" value="System\.exit"/> </module> <module name="GenericIllegalRegexp"> <property name="format" value="printStackTrace"/> </module>--> <!-- 程式碼質量 --> <!-- 圈複雜度 <module name="CyclomaticComplexity"> <property name="max" value="2"/> </module> --> </module> </module>

3.在java檔案中 右鍵選擇Check Current File,進行程式碼檢測。

程式碼規範外掛當然還有很多,例如PMD,FindBugs,Jtest等在這讀者有興趣,請自行安裝使用。

二、程式碼編寫類

1.Lombok plugin ✔

lombok可以簡化你的實體類,讓你i不再寫get/set方法,還能快速的實現builder模式,以及鏈式呼叫方法
官網 https://projectlombok.org/features/index.html
在idea安裝了Lombok外掛,並在專案中依賴這個Lombok jar,以maven為例:

        <dependency>
			<groupId>org.projectlombok</groupId>
			<artifactId>lombok</artifactId>
			<optional>true</optional>
		</dependency>

@Getter / @Setter
  可以作用在類上和屬性上,放在類上,會對所有的非靜態(non-static)屬性生成Getter/Setter方法,放在屬性上,會對該屬性生成Getter/Setter方法。並可以指定Getter/Setter方法的訪問級別。

@EqualsAndHashCode
  預設情況下,會使用所有非瞬態(non-transient)和非靜態(non-static)欄位來生成equals和hascode方法,也可以指定具體使用哪些屬性。

@ToString
  生成toString方法,預設情況下,會輸出類名、所有屬性,屬性會按照順序輸出,以逗號分割。

@NoArgsConstructor, @RequiredArgsConstructor and @AllArgsConstructor
  無參構造器、部分引數構造器、全參構造器,當我們需要過載多個構造器的時候,Lombok就無能為力了。

@Data
  @ToString, @EqualsAndHashCode, 所有屬性的@Getter, 所有non-final屬性的@Setter和@RequiredArgsConstructor的組合,通常情況下,我們使用這個註解就足夠了。

@Slf4j
提供了日誌操作,在程式碼中直接使用log這個引用即可,例如log.info(…),log.error(…)等等

用法示例如圖:

注:idea中快捷鍵 ALT+7 檢視類的欄位、屬性、方法,是否繼承等

當然該工具還提供了通過註解轉換對應程式碼,示例如圖:

2.CamelCase

將不是駝峰格式的名稱,快速轉成駝峰格式。選中要修改的名稱,按快捷鍵shift+alt+u。也可以通過不斷的快捷鍵進行你想要的名稱進行切換。

3.Mybatis plugin

可以在mapper介面中和mapper的xml檔案中來回跳轉,就想介面跳到實現類那樣簡單。但該外掛並非免費,故推薦使用Free Mybatis plugin
Mybatis Plugin外掛安裝破解及使用:https://blog.csdn.net/u011410529/article/details/54098067

4.Free Mybatis plugin ✔

Free Mybatis plugin,讓你的mybatis.xml像java程式碼一樣編輯。我們開發中使用mybatis時時長需要通過mapper介面查詢對應的xml中的sql語句,該外掛方便了我們的操作。

5.codehelper.generator ✔

可以讓你在建立一個物件並賦值的時候,快速的生成程式碼,不需要一個一個屬性的向裡面set,根據new關鍵字,自動生成掉用set方法的程式碼,還可以一鍵填入預設值。

GenAllSetter 特性

  • 在Java方法中, 根據 new 關鍵詞, 為Java Bean 生成所有Setter方法。

  • 按GenAllSetter鍵兩次, 會為Setter方法生成預設值。

  • 可在Intellij Idea中為GenAllSetter設定快捷鍵。

  • 如何使用:

    • 將游標移動到 new 語句的下一行。
    • 點選主選單Tools-> Codehelper-> GenAllSetter, 或者按下GenAllSetter快捷鍵。

    GenDaoCode 特性

    • 根據Pojo 檔案一鍵生成 Dao,Service,Xml,Sql檔案。

    • Pojo檔案更新後一鍵更新對應的Sql和mybatis xml檔案。

    • 提供insert,insertList,update,select,delete五種方法。

    • 能夠批量生成多個Pojo的對應的檔案。

    • 自動將pojo的註釋新增到對應的Sql檔案的註釋中。

    • 豐富的配置,如果沒有配置檔案,則會使用預設配置。

    • 可以在Intellij Idea中快捷鍵配置中配置快捷鍵。

    • 目前支援MySQL + Java,後續會支援更多的DB。

    • 如果喜歡我們的外掛,非常感謝您的分享。

    GenDaoCode 使用方法

    • 主選單Tools-> Codehelper-> GenDaoCode 按鍵便可生成程式碼。
    • 方法一:點選GenDaoCode,然後根據提示框輸入Pojo名字,多個Pojo以 | 分隔。
    • Codehelper Generator會根據預設配置為您生成程式碼。
    • 方法二:在工程目錄下新增檔名為codehelper.properties的檔案。
    • 點選GenDaoCode,Codehelper Generator會根據您的配置檔案為您生成程式碼

6.String Manipulation

強大的字串轉換工具。使用快捷鍵,Alt+m

  • 切換樣式(camelCase, hyphen-lowercase, HYPHEN-UPPERCASE, snake_case, SCREAMING_SNAKE_CASE, dot.case, words lowercase, Words Capitalized, PascalCase)
  • 轉換為SCREAMING_SNAKE_CASE (或轉換為camelCase)
  • 轉換為 snake_case (或轉換為camelCase)
  • 轉換為dot.case (或轉換為camelCase)
  • 轉換為hyphen-case (或轉換為camelCase)
  • 轉換為hyphen-case (或轉換為snake_case)
  • 轉換為camelCase (或轉換為Words)
  • 轉換為camelCase (或轉換為lowercase words)
  • 轉換為PascalCase (或轉換為camelCase)
  • 選定文字大寫
  • 樣式反轉

7.GsonFormat ✔

一鍵根據json文字生成java類 。在類的內部,使用快捷鍵 alt+s

三、美觀類

1.Background image Plus

1.在View->Set Background Image進行設定

選擇背景圖:

2.Material Theme UI

這是一款主題外掛,可以讓你的ide的圖示變漂亮,配色搭配的很到位,還可以切換不同的顏色,甚至可以自定義顏色。預設的配色就很漂亮了,如果需要修改配色,可以在工具欄中Tools->Material Theme然後修改配色等。

3.Nyan progress bar

這是一個將你idea中的所有的進度條都變成萌新動畫的小外掛。

4.Rainbow Brackets ✔

彩虹顏色的括號 看著很舒服 敲程式碼效率變高

5.CodeGlance

在編輯程式碼最右側,顯示一塊程式碼小地圖,右側面板有這個地圖,拖動起來更加方便一點

6.Grep Console ✔

Grep Console 允許您定義一系列的正則表示式,利用它們來對控制檯的輸出或檔案進行測試。每一個表示式匹配的行都會被整行的應用某個樣式,或者播放聲音。例如,你可以將錯誤訊息設定為以紅色的背景來顯示。

7.activate-power-mode

純粹為了秀而存在的外掛
個人推薦設定:Window–>activate-power-mode–>去掉combo/shake,其他三個全勾上

工具類

1.JRebel for Intellij ✔

JRebel是一個提升生產力的工具,它可以幫助開發人員快速的重新載入更改的程式碼。 它跳過了Java開發中常見的重新構建,重啟以及重新部署的迴圈操作。 JRebel使開發人員能夠在相同的時間內完成更多的工作,讓開發人員的編碼過程變得更加流暢。但該軟體是收費的,破解教程:https://my.oschina.net/bluell/blog/1796575
1.用自己下載的tomcat執行專案
在這裡插入圖片描述

2.springboot專案,採用springboot巢狀的tomcat
教程:https://www.jianshu.com/p/bdc88bef0af2

2.Translation ✔

翻譯外掛,支援google翻譯 百度翻譯 有道翻譯

3.stackOverflow

前提是需要網路能正常訪問到google。

會對所選擇的內容 進行google搜尋

3.Key promoter X ✔

Key Promoter X 是一個提示外掛,當你在IDEA裡面使用滑鼠的時候,如果這個滑鼠操作是能夠用快捷鍵替代的,那麼Key Promoter X會在右下角彈出一個提示框,告知你這個滑鼠操作可以用什麼快捷鍵替代。

4.MyBatis Log Plugin ✔

MyBatis Log Plugin主要作用是把mybatis生成的PreparedStatement語句恢復成原始完整的sql語句。
它將用真實的引數值替換PreparedStatement語句的問號佔位符。
通過 “Tools -> MyBatis Log Plugin” 這個選單可以實時輸出sql日誌。
點選視窗左邊的 “Filter” 按鈕,可以過濾不想要輸出的sql語句。
點選視窗左邊的 “Format Sql” 按鈕,可以格式化輸出的sql語句
左邊幾個按鈕的作用:

  • Filter: 過濾語句配置
  • Rerun: 重新啟動
  • Stop: 停止輸出
  • Format Sql: 格式化後續輸出的Sql語句
  • Close: 關閉該視窗

5.Markdown support

開啟.md檔案就可以通過一個支援md的檢視檢視和編輯內容。一般用於寫README.md檔案。

6.MetricsReloaded

所在位置Analyze->Calculate Metrics

MetricsReloaded是一個計算程式碼複雜度即圈複雜度的Jetbrain開源開發的第三方外掛。關於程式碼複雜度,有個維度的衡量,在這裡需要普及下軟體複雜度的相關知識:基本複雜度(Essential Complexity (ev(G))、模組設計複雜度(Module Design Complexity (iv(G)))、Cyclomatic Complexity (v(G))圈複雜度。
ev(G)基本複雜度是用來衡量程式非結構化程度的,非結構成分降低了程式的質量,增加了程式碼的維護難度,使程式難於理解。因此,基本複雜度高意味著非結構化程度高,難以模組化和維護。實際上,消除了一個錯誤有時會引起其他的錯誤。
Iv(G)模組設計複雜度是用來衡量模組判定結構,即模組和其他模組的呼叫關係。軟體模組設計複雜度高意味模組耦合度高,這將導致模組難於隔離、維護和複用。模組設計複雜度是從模組流程圖中移去那些不包含呼叫子模組