浅談idea live template高級知識_ステップ(メソッド、クラス、jsメソッドにコメントを追加)
一つの命令(マクロ)で方法、クラス、js方法に注釈を付けるために、数日間の研究を経て、やっと結果を得ました。
実現した効果は以下の通りです。
Javaにおけるmethodの追加方法:
Abreviation:
$context$のコード(主要コード)は以下の通りです。
xx.javaまたはxx.jsで出力(注2):
注1と注2
第二の方法にも変えられます。
Template text
したがって、注2は以下のようになります。
Edit Varableのコードの詳細
まず、以下の10の関数を分解しました。
判断は関数、クラス、js関数は主に以下の2つの内蔵変数によって達成されます。
js MethodName()が空でない場合、jsメソッドのコメントが生成されます。
クラスのコメントを生成します。
上記のコードは簡単に下記の分類ができます。
関連パラメータを取得:
私はまだ次のようないくつかの疑問があります。
問題1.jsメソッドのパラメータリストはどのような方法で入手できますか?
問題2.コードの断片2を変更したら、
問題3:実際にこのような方法に注釈を付けるのは意味がないので、具体的には参照できます。
しかし、どうしても追加したいなら、どうやって判断すればいいですか?
以上、この浅談idea live template高級知識_ステップ(方法、クラス、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方法にコメントを付ける)は、小編集が皆さんに提供した内容の全てを共有します。参考にしていただければと思います。よろしくお願いします。