浅談idea live template高級知識_ステップ(メソッド、クラス、jsメソッドにコメントを追加)


一つの命令(マクロ)で方法、クラス、js方法に注釈を付けるために、数日間の研究を経て、やっと結果を得ました。
実現した効果は以下の通りです。
Javaにおけるmethodの追加方法:

/**
   *
   * @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){
    ResultMsg result = null;
    return result;
  }
Java classにコメントを追加します。

/**
 *
 * @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 {
}
jsの方法にコメントを追加します。

/**
 *
 * @Method : standardShowBatchCheckBox
 * @Description :
 * @return :
 * @author : Rush.D.Xzj
 * @CreateDate : 2017-06-12     18:15:21
 *
 */
function standardShowBatchCheckBox(jspElement, dataList, max, valueIdFunction, textFunction, selectedFunction) {
}
今答えを次のように発表します。
Abreviation:

cmj
Template text(注1):

**
 *$context$ 
 */
Edit variables:
$context$のコード(主要コード)は以下の通りです。

groovyScript("def methodName = \"${_1}\"; def jsMethodName = \"${_2}\"; def outputMethodName = \"${_3}\"; def outputDesc = \"${_4}\"; def outputParams = \"${_5}\"; def outputAuthor = \"${_6}\"; def outputReturnType = \"${_7}\"; def outputDateTime = \"${_8}\"; def outputPackage = \"${_9}\"; def outputClass = \"${_10}\"; def outputClassOtherInfo = \"${_11}\"; def outputProject = \"${_12}\"; def outputVersion = \"${_13}\"; def outputJsMethodName = \"${_14}\"; def outputJsReturnType = \"${_15}\"; def result = ''; if (methodName != 'null') { result += '\
'; result += outputMethodName; result += outputDesc; result += outputParams; result += outputReturnType; result += outputAuthor; result += outputDateTime; result += ' *'; return result;} else if (jsMethodName != 'null') { result += '\
'; result += outputJsMethodName; result += outputDesc; result += outputJsReturnType; result += outputAuthor; result += outputDateTime; result += ' *'; return result;} else { result += '\
'; result += outputProject; result += outputPackage; result += outputClass; result += outputDesc; result += outputAuthor; result += outputDateTime; result += outputVersion; result += outputClassOtherInfo; result += ' *'; return result;} ", methodName(), jsMethodName(), groovyScript("def methodName = \"${_1}\"; def result = ' * @Method : ' + methodName + '\
'; return result;", methodName()), groovyScript("def result = ' * @Description : ' + '\
'; return result;"), groovyScript("if(\"${_1}\".length() == 2) {return '';} else {def result=''; def params=\"${_1}\".replaceAll('[\\\\[|\\\\]|\\\\s]', '').split(',').toList(); for(i = 0; i < params.size(); i++) {result+=' * @param ' + params[i] + ' : ' + '\
'}; return result;}", methodParameters()), groovyScript("def author = 'Rush.D.Xzj'; def result = ' * @author : ' + author + '\
'; return result;"), groovyScript("def returnType = \"${_1}\"; def result = ' * @return : ' + returnType + '\
'; return result;", methodReturnType()), groovyScript("def date = \"${_1}\"; def time = \"${_2}\"; def result = ' * @CreateDate : ' + date + ' ' + time + '\
'; return result;", date("yyyy-MM-dd E"), time("HH:mm:ss")), groovyScript("def currentPackage = \"${_1}\"; def result = ' * @Package : ' + currentPackage + '\
'; return result;", currentPackage()), groovyScript("def className = \"${_1}\"; def result = ' * @Class : ' + className + '\
'; return result;", className()), groovyScript("def result = ' * @Copyright : 2017 yizukeji Inc. All rights reserved.' + '\
'; result += ' * @Reviewed : ' + '\
'; result += ' * @UpateLog : Name Date Reason/Contents' + '\
'; result += ' * ---------------------------------------' + '\
'; result += ' * *** **** **** ' + '\
'; return result;"), groovyScript("def result = ' * @Project : OA' + '\
'; return result;"), groovyScript("def result = ' * @version : V1.0.0' + '\
'; return result;"), groovyScript("def jsMethodName = \"${_1}\"; def result = ' * @Method : ' + jsMethodName + '\
'; return result;", jsMethodName()), groovyScript("def result = ' * @return : ' + '\
'; return result;"))
以下のように使います
xx.javaまたはxx.jsで出力(注2):

/cmj
後にtabキーを押します。(このキーはデフォルトです。他のものに変更できます。)
注1と注2
第二の方法にも変えられます。
Template text

*
 *$context$ 
 */
注1と比較して最初の行は*が一つ足りません。
したがって、注2は以下のようになります。

/*cmj
私の方法は第二の方法よりいいと思います。
Edit Varableのコードの詳細
まず、以下の10の関数を分解しました。

//      
  groovyScript("def methodName = \"${_1}\"; def result = ' * @Method : ' + methodName + '\
'; return result;", methodName()) // groovyScript("def result = ' * @Description : ' + '\
'; return result;") // groovyScript("if(\"${_1}\".length() == 2) {return '';} else {def result=''; def params=\"${_1}\".replaceAll('[\\\\[|\\\\]|\\\\s]', '').split(',').toList(); for(i = 0; i < params.size(); i++) {result+=' * @param ' + params[i] + ' : ' + '\
'}; return result;}", methodParameters()) // groovyScript("def author = 'Rush.D.Xzj'; def result = ' * @author : ' + author + '\
'; return result;") // groovyScript("def returnType = \"${_1}\"; def result = ' * @return : ' + returnType + '\
'; return result;", methodReturnType()) // , groovyScript("def date = \"${_1}\"; def time = \"${_2}\"; def result = ' * @CreateDate : ' + date + ' ' + time + '\
'; return result;", date("yyyy-MM-dd E"), time("HH:mm:ss")) // Project groovyScript("def result = ' * @Project : OA' + '\
'; return result;") // package groovyScript("def currentPackage = \"${_1}\"; def result = ' * @Package : ' + currentPackage + '\
'; return result;", currentPackage()) // class groovyScript("def className = \"${_1}\"; def result = ' * @Class : ' + className + '\
'; return result;", className()) // copyright/reviewd/updatelog groovyScript("def result = ' * @Copyright : 2017 yizukeji Inc. All rights reserved.' + '\
'; result += ' * @Reviewed : ' + '\
'; result += ' * @UpateLog : Name Date Reason/Contents' + '\
'; result += ' * ---------------------------------------' + '\
'; result += ' * *** **** **** ' + '\
'; return result;") // version groovyScript("def result = ' * @version : V1.0.0' + '\
'; return result;") // jsMethodName groovyScript("def jsMethodName = \"${_1}\"; def result = ' * @Method : ' + jsMethodName + '\
'; return result;", jsMethodName()) // js return groovyScript("def result = ' * @return : ' + '\
'; return result;")
そして、メインコードでは、上記の10の関数をパラメータとして主要コードを供給する必要があります。
判断は関数、クラス、js関数は主に以下の2つの内蔵変数によって達成されます。

methodName()
jsMethodName()
methodNameが空でない場合は、メソッドのコメントを生成します。
js MethodName()が空でない場合、jsメソッドのコメントが生成されます。
クラスのコメントを生成します。
上記のコードは簡単に下記の分類ができます。
関連パラメータを取得:

def methodName = \"${_1}\"; 
  def jsMethodName = \"${_2}\"; 
  def outputMethodName = \"${_3}\"; 
  def outputDesc = \"${_4}\"; 
  def outputParams = \"${_5}\"; 
  def outputAuthor = \"${_6}\"; 
  def outputReturnType = \"${_7}\"; 
  def outputDateTime = \"${_8}\"; 
  def outputPackage = \"${_9}\"; 
  def outputClass = \"${_10}\"; 
  def outputClassOtherInfo = \"${_11}\"; 
  def outputProject = \"${_12}\"; 
  def outputVersion = \"${_13}\"; 
  def outputJsMethodName = \"${_14}\"; 
  def outputJsReturnType = \"${_15}\"; 
  def result = '';
どのタイプの注釈かを判断する(コードセグメント2):

if (methodName != 'null') {
    result += '\
'; result += outputMethodName; result += outputDesc; result += outputParams; result += outputReturnType; result += outputAuthor; result += outputDateTime; result += ' *'; return result; } else if (jsMethodName != 'null') { result += '\
'; result += outputJsMethodName; result += outputDesc; result += outputJsReturnType; result += outputAuthor; result += outputDateTime; result += ' *'; return result; } else { result += '\
'; result += outputProject; result += outputPackage; result += outputClass; result += outputDesc; result += outputAuthor; result += outputDateTime; result += outputVersion; result += outputClassOtherInfo; result += ' *'; return result; }
これでいいです。こんなに汚いのです。コードの整理がはっきりしました。
私はまだ次のようないくつかの疑問があります。
問題1.jsメソッドのパラメータリストはどのような方法で入手できますか?
問題2.コードの断片2を変更したら、

result += '\
'; if (methodName != 'null') { result += outputMethodName; result += outputDesc; result += outputParams; result += outputReturnType; result += outputAuthor; result += outputDateTime; } else if (jsMethodName != 'null') { result += '\
'; result += outputJsMethodName; result += outputDesc; result += outputJsReturnType; result += outputAuthor; result += outputDateTime; } else { result += '\
'; result += outputProject; result += outputPackage; result += outputClass; result += outputDesc; result += outputAuthor; result += outputDateTime; result += outputVersion; result += outputClassOtherInfo; } result += ' *'; return result;
次のようなエラーが発生します。

startup failed:
Script1.groovy: 1: expecting EOF, found 'result' @ line 1, column 1036.
  lt += outputClassOtherInfo; } result += 
                 ^
error
問題3:Overrideメソッドに対応するインターフェースメソッドをどうやって取得しますか?
問題3:実際にこのような方法に注釈を付けるのは意味がないので、具体的には参照できます。
しかし、どうしても追加したいなら、どうやって判断すればいいですか?
以上、この浅談idea live template高級知識_ステップ(方法、クラス、js方法にコメントを付ける)は、小編集が皆さんに提供した内容の全てを共有します。参考にしていただければと思います。よろしくお願いします。