idea 代码模板 live templates 快速生成log打印方法名 方法参数

官方文档:  介绍内置函数 Live template variables | IntelliJ IDEA

场景:  想实现 快速的用log 打印某个方法的全部参数

比如 有个test方法: 
void test (User user, String  orderId){
      ...
}

想要生成的java代码如下
log.info("test.params... user:{}, orderId:{}", JSON.toJSONString(user), JSON.toJSONString(orderId));

为什么要用groovy脚本?
答: 因为内置表达式  methodParameters() 输出的是字符串   [user, orderId]  这种格式
所以还需要groovy脚本来达到想要的效果

步骤1:
添加模板组,  模板, 设置模板文本

 template text格式

log.info("$methodName$.params... $argsLog$", $argsJson$);

 步骤2:
添加 自定义变量

变量methodName:    methodName()

变量argsLog

groovyScript( 
"def result=''; 
def params=\"${_1}\".replaceAll('[\\\\[|\\\\]|\\\\s]', '').split(',').toList(); 
for(i = 0; i < params.size(); i++) {
	result+= params[i] + ((i < params.size() - 1) ? ':{}, ' : ':{}')
};
 return result" , methodParameters())

变量argsJson, (会对所有参数进行, json转换处理, 但基本类型没必要这么做)

groovyScript( 
"def result=''; 
def params=\"${_1}\".replaceAll('[\\\\[|\\\\]|\\\\s]', '').split(',').toList(); 
for(i = 0; i < params.size(); i++) {
	result+='JSON.toJSONString(' + params[i] + ((i < params.size() - 1) ? '), ' : ')')
};
 return result" , methodParameters())

======================================

变量argsJson升级版,  可以对指定的 参数类型 不做 json处理, 直接打印
因为利用到了内置函数 methodParameterTypes(), 需要升级idea的版本, 当前版本 2021.3.2

groovyScript("
def result='';
  def types = 'String,int,Integer,long,Long,float,Float,double,Double,byte,Byte,short,Short,char,Char,boolean,Boolean';
  def params=\"${_1}\".replaceAll('[\\\\[|\\\\]|\\\\s]','').split(',').toList();
  def paramTypes=\"${_2}\".replaceAll('[\\\\[|\\\\]|\\\\s]','').split(',').toList();
  for(i = 0; i < params.size(); i++) {
	  if(types.contains(paramTypes[i].replace('java.lang.',''))){
		result+=params[i] + ((i < params.size() - 1) ? ', ' : '');
	  }else{
		result+='JSON.toJSONString(' + params[i] + ((i < params.size() - 1) ? '), ' : ')');
	  }
  };
  return result;
" , methodParameters(), methodParameterTypes())

如: log.info("test.params... user:{}, orderId:{}", JSON.toJSONString(user), orderId);

orderId因为是String类型, 就不需要 JSON.toJSONString(xxx) 这样的格式

======================================

步骤3:

在要打印入参的方法里面,  输入  logmethod,  出现提示, 选中后, 按回车即可

最终效果
 

如果觉得logmethod, 要输入较多字符才能出现提示,  可以改成别的关键词,
或 前缀用特殊字符

  ======================================

其他

$SELECTION$ 选中的文字

$END$  模板执行完成后,  鼠标光标的位置

举例: JSON.toString($SELECTION$)$END$

======================================

其他内置表达式 可参考

IDEA Live Template Edit Variables参数意义_Su_Levi_Wei的博客-CSDN博客

  • 9
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值