问题现象:
我在 review 同事代码时候,发现方法上有注释,但是注释上又没有方法参数和返回值,这不是IDEA 配置了方法模板就可以自动生成的嘛,我出于好奇去问了下该同事是怎么回事,该同事有点不好意思的说我配置的模板无法自动获取到参数名和返回值类型,在写代码的时候就没有刻意花时间去补充,我瞬间就明白怎么回事了。。。
问题原因:方法模板中使用了 / 开头,使用了 / 开头是无法自动获取到参数名和返回值类型的。
如下:
/**
* @description:
* @param:$param$
* @return: $return$
* @author: author
* @date: $date$ $time$
*/
这种模板是 / 开头,就没办法自动获取到参数名和返回值类型,不建议这样设置。
正确的模板:
*
* @description:
* @param:$param$
* @return: $return$
* @author: author
* @date: $date$ $time$
*/
设置方法模板路径:
File–>Setting–>Editor–>Live Templates
新建一个Template Group
新建一个Live Template
填写方法注释模板代码
设置模板应用场景
点击模板页面最下方的警告,来设置将模板应用于那些场景,一般选择EveryWhere 即可(如果曾经修改过,则显示为 change 而不是define)
编辑变量设置参数
点击 Edit variables 配置参数,这里就包含了配置自动获取参数和返回值类型。
最后一直点击 OK–>OK 即可。
methodParameters()、methodReturnType() 有使用脚本的方式,如下:
param参数脚本:
groovyScript("if(\"${_1}\".length() == 2) {return '';} else {def result=''; def params=\"${_1}\".replaceAll('[\\\\[|\\\\]|\\\\s]', '').split(',').toList();for(i = 0; i < params.size(); i++) {if(params[i]=='null'){return;}else{result+='\\n' + ' * @param ' + params[i] + ': '}}; return result;}", methodParameters());
return参数脚本:
groovyScript("def returnType = \"${_1}\"; def result ='';if(returnType=='null'||returnType=='void'){return;}else{result += '\\n * @return ' + returnType; return result;}", methodReturnType());
使用脚本配置的模板:
*$param$ $return$
* @author author
* @date $date$ $time$
* @description
*/
脚本配置如图所示:
脚本配置的方式,有多个入参的时候,入参会自动换行。
欢迎提出建议及对错误的地方指出纠正。