首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

IntelliJ IDEA Live Templates 進階實戰:一鍵生成 Java/JS 方法與類註釋模板

     編輯:Java 相關知識

IntelliJ IDEA Live Templates 高階配置:統一 Java、JavaScript 代碼註釋生成方案

IDE 內建的 Live Templates 功能極其強大,配合 Groovy 腳本可實現上下文感知的智能代碼片段生成。本文分享一套經實戰驗證的配置方案,通過單一縮寫 cmj 實現 Java 方法、Java 類、JavaScript 方法三種場景的差異化註釋自動生成。

實現效果預覽

Java 方法註釋

/**
 * @Method : addMenu
 * @Description : 
 * @param menu : 
 * @return : cn.yiyizuche.common.base.ResultMsg
 * @author : Rush.D.Xzj
 * @CreateDate : 2017-06-12 星期一 18:17:42
 */
public ResultMsg addMenu(Menu menu) { ... }

Java 類註釋

/**
 * @Project : 壹壹OA
 * @Package : cn.yiyizuche.common.ou.menu.controller
 * @Class : MenuController
 * @Description : 
 * @author : Rush.D.Xzj
 * @CreateDate : 2017-06-12 星期一 18:15:32
 * @version : V1.0.0
 * @Copyright : 2017 yizukeji Inc. All rights reserved.
 * @Reviewed : 
 * @UpateLog : Name Date Reason/Contents
 * ---------------------------------------
 * *** **** **** 
 */
public class MenuController { }

JavaScript 方法註釋

/**
 * @Method : standardShowBatchCheckBox
 * @Description : 
 * @return : 
 * @author : Rush.D.Xzj
 * @CreateDate : 2017-06-12 星期一 18:15:21
 */
function standardShowBatchCheckBox(...) { }

Live Template 核心配置

基本設置

  • Abbreviation:cmj
  • Template text:/** *$context$ */
  • Applicable contexts:Java Declaration、JavaScript

Edit Variables:核心 Groovy 腳本邏輯

變量 $context$ 綁定複雜 Groovy 腳本,核心邏輯分三層:

  1. 子函數定義:提取 14 個原子功能函數(方法名、參數列表、返回類型、作者、日期、包名、類名、版權信息、項目名、版本號、JS 方法名等)
  2. 參數收集:調用 IDEA 內置變量函數(methodName()、methodParameters()、methodReturnType()、className()、currentPackage()、jsMethodName()、date()、time() 等)
  3. 上下文判斷與組裝:
if (methodName != 'null') {
    // Java 方法註釋組裝
} else if (jsMethodName != 'null') {
    // JS 方法註釋組裝
} else {
    // Java 類註釋組裝
}

關鍵技術細節解析

參數列表智能解析

groovyScript("
    if ('${_1}'.length() == 2) { return ''; }  // 無參數時 '[]' 長度為2
    def params = '${_1}'.replaceAll('[\\[|\\]|\\s]', '').split(',').toList();
    def result = '';
    for (i = 0; i < params.size(); i++) {
        result += ' * @param ' + params[i] + ' : \\n';
    }
    return result;
", methodParameters())

日期時間格式化

groovyScript("
    def date = '${_1}'; def time = '${_2}';
    return ' * @CreateDate : ' + date + ' ' + time + '\\n';
", date("yyyy-MM-dd E"), time("HH:mm:ss"))

上下文判斷核心變量

  • methodName():Java 方法上下文非空
  • jsMethodName():JavaScript 函數上下文非空
  • 兩者均空 → 類級上下文

使用方式

  1. 在 Java 類、方法體或 JS 函數內輸入 /cmj
  2. 按 Tab 鍵(或自定義展開鍵)觸發
  3. 自動生成對應場景完整註釋模板

進階優化方向(待解決問題)

  1. JS 參數列表獲取:IDEA 內置變量無 jsMethodParameters(),需探索 PSI API 方案
  2. 代碼結構優化:將公共 result += '\n' 提取至條件塊外導致 Groovy 語法錯誤,需調整字符串拼接邏輯
  3. Override 方法識別:檢測 @Override 註解並自動繼承父類/接口文檔(參考 社區討論)

模板文本替代寫法

若偏好 /*cmj 觸發方式,Template text 改為 * *$context$ */(首行少一個 *)。

總結

通過模塊化 Groovy 腳本設計,實現了單一 Live Template 覆蓋多語言、多上下文的智能註釋生成。這一方案展示了 IDEA Live Templates 結合 Groovy 的強大擴展性,能顯著提升團隊代碼文檔規範執行效率。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved