浅谈idea live template高级知识_进阶(给方法,类,js方法添加注释)
为了解决用一个命令(宏)给方法,类,js方法添加注释,经过几天的研究.终于得到结果了。
实现的效果如下:
给Java中的method添加方法:
/** * *@Method:addMenu *@Description: *@parammenu: *@return:cn.yiyizuche.common.base.ResultMsg *@author:Rush.D.Xzj *@CreateDate:2017-06-12星期一18:17:42 * */publicResultMsgaddMenu(Menumenu){ ResultMsgresult=null; returnresult; }
给Javaclass添加注释:
/** * *@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:2017yizukejiInc.Allrightsreserved. *@Reviewed: *@UpateLog:NameDateReason/Contents *--------------------------------------- ************ * */ publicclassMenuController{ }
给js的方法添加注释
/** * *@Method:standardShowBatchCheckBox *@Description: *@return: *@author:Rush.D.Xzj *@CreateDate:2017-06-12星期一18:15:21 * */ functionstandardShowBatchCheckBox(jspElement,dataList,max,valueIdFunction,textFunction,selectedFunction){ }
现在把答案公布如下
Abbreviation:
cmj
Templatetext(注1):
** *$context$ */
Editvariables:
$context$的代码(主要代码)如下:
groovyScript("defmethodName=\"${_1}\";defjsMethodName=\"${_2}\";defoutputMethodName=\"${_3}\";defoutputDesc=\"${_4}\";defoutputParams=\"${_5}\";defoutputAuthor=\"${_6}\";defoutputReturnType=\"${_7}\";defoutputDateTime=\"${_8}\";defoutputPackage=\"${_9}\";defoutputClass=\"${_10}\";defoutputClassOtherInfo=\"${_11}\";defoutputProject=\"${_12}\";defoutputVersion=\"${_13}\";defoutputJsMethodName=\"${_14}\";defoutputJsReturnType=\"${_15}\";defresult='';if(methodName!='null'){result+='\\n';result+=outputMethodName;result+=outputDesc;result+=outputParams;result+=outputReturnType;result+=outputAuthor;result+=outputDateTime;result+='*';returnresult;}elseif(jsMethodName!='null'){result+='\\n';result+=outputJsMethodName;result+=outputDesc;result+=outputJsReturnType;result+=outputAuthor;result+=outputDateTime;result+='*';returnresult;}else{result+='\\n';result+=outputProject;result+=outputPackage;result+=outputClass;result+=outputDesc;result+=outputAuthor;result+=outputDateTime;result+=outputVersion;result+=outputClassOtherInfo;result+='*';returnresult;}",methodName(),jsMethodName(),groovyScript("defmethodName=\"${_1}\";defresult='*@Method:'+methodName+'\\n';returnresult;",methodName()),groovyScript("defresult='*@Description:'+'\\n';returnresult;"),groovyScript("if(\"${_1}\".length()==2){return'';}else{defresult='';defparams=\"${_1}\".replaceAll('[\\\\[|\\\\]|\\\\s]','').split(',').toList();for(i=0;i使用如下:
在xx.java或者xx.js中输出(注2):
/cmj后按tab键(此键是默认的,可以更改成其他的)
注1和注2
也可以换成第二种方法(网上大部分的方法):
Templatetext
* *$context$ */跟注1比较第一行少了一个*,
因此注2就是变成了:
/*cmj我感觉用我的方法比第二种方法好。
EditVariable中代码详解
首先我分解了如下的10几个函数(是小函数):
//输出方法名 groovyScript("defmethodName=\"${_1}\";defresult='*@Method:'+methodName+'\\n';returnresult;",methodName()) //输出描述 groovyScript("defresult='*@Description:'+'\\n';returnresult;") //输出参数列表的子函数 groovyScript("if(\"${_1}\".length()==2){return'';}else{defresult='';defparams=\"${_1}\".replaceAll('[\\\\[|\\\\]|\\\\s]','').split(',').toList();for(i=0;i然后在主要代码中,需要把上述的10几个函数当做参数供给主要代码使用.
判断是函数,类,js函数主要是通过如下的2个内置变量来实现的;
methodName() jsMethodName()当methodName()不为空的时候,生成方法的注释
当jsMethodName()不为空的时候,生成js方法的注释
否则生成类的注释
所以上述的代码可以简单的做如下的归类了:
获取相关参数:
defmethodName=\"${_1}\"; defjsMethodName=\"${_2}\"; defoutputMethodName=\"${_3}\"; defoutputDesc=\"${_4}\"; defoutputParams=\"${_5}\"; defoutputAuthor=\"${_6}\"; defoutputReturnType=\"${_7}\"; defoutputDateTime=\"${_8}\"; defoutputPackage=\"${_9}\"; defoutputClass=\"${_10}\"; defoutputClassOtherInfo=\"${_11}\"; defoutputProject=\"${_12}\"; defoutputVersion=\"${_13}\"; defoutputJsMethodName=\"${_14}\"; defoutputJsReturnType=\"${_15}\"; defresult='';判断是哪一种类型的注释(代码片段2):
if(methodName!='null'){ result+='\\n'; result+=outputMethodName; result+=outputDesc; result+=outputParams; result+=outputReturnType; result+=outputAuthor; result+=outputDateTime; result+='*'; returnresult; }elseif(jsMethodName!='null'){ result+='\\n'; result+=outputJsMethodName; result+=outputDesc; result+=outputJsReturnType; result+=outputAuthor; result+=outputDateTime; result+='*'; returnresult; }else{ result+='\\n'; result+=outputProject; result+=outputPackage; result+=outputClass; result+=outputDesc; result+=outputAuthor; result+=outputDateTime; result+=outputVersion; result+=outputClassOtherInfo; result+='*'; returnresult; }这下就可以了.就把整个这么难看(groopscript搞的?)代码整理的比较清晰了.
我还有如下的几个疑惑/问题需要解决,如果有朋友能给我答案那就好了.
问题1.不知道可以通过什么方法获取js方法中的参数列表 问题2.代码片段2中如果我改成了:
result+='\\n'; if(methodName!='null'){ result+=outputMethodName; result+=outputDesc; result+=outputParams; result+=outputReturnType; result+=outputAuthor; result+=outputDateTime; }elseif(jsMethodName!='null'){ result+='\\n'; result+=outputJsMethodName; result+=outputDesc; result+=outputJsReturnType; result+=outputAuthor; result+=outputDateTime; }else{ result+='\\n'; result+=outputProject; result+=outputPackage; result+=outputClass; result+=outputDesc; result+=outputAuthor; result+=outputDateTime; result+=outputVersion; result+=outputClassOtherInfo; } result+='*'; returnresult;会出现如下的错误:
startupfailed: Script1.groovy:1:expectingEOF,found'result'@line1,column1036. lt+=outputClassOtherInfo;}result+= ^ error问题3:不知道怎么获取Override方法对应的接口方法(父类方法)
关于问题3:实际上给这种方法加注释是没有意义的,具体可以参考:https://stackoverflow.com/questions/4310858/comments-on-overridden-method-in-java
但是如果非要加该怎么去判断.
以上这篇浅谈idealivetemplate高级知识_进阶(给方法,类,js方法添加注释)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。