IntelliJ IDEA 2018.3 创建自定义类/方法注释模版和 Live Template

2019年08月07日 10:13 · 阅读(1550) ·

[目录]

参考

idea生成类注释和方法注释的正确方法

开发环境

名称 版本
操作系统 Windows 10 X64
JDK JDK1.8(jdk-8u151-windows-x64)
IntelliJ IDEA IntelliJ IDEA 2018.3

自定义类注释

文件-设置-编辑器-文件和代码模版

图中黄色圈部分是我加上去的,其他部分是原有的

  1. /**
  2. * @author:
  3. * @version:
  4. * @description: ${description}
  5. * @date: ${YEAR}-${MONTH}-${DAY} ${HOUR}:${MINUTE}
  6. **/

新建一个类

  1. package com.test.invoice.data;
  2. /**
  3. * @author:
  4. * @version:
  5. * @description: 测试数据类
  6. * @date: 2019-08-07 09:53
  7. **/
  8. public class TRbtTestData {
  9. }

或者简单点

  1. #if (${PACKAGE_NAME} && ${PACKAGE_NAME} != "")package ${PACKAGE_NAME};#end
  2. #parse("File Header.java")
  3. /**
  4. * ${description}
  5. * - luoma - ${YEAR}年${MONTH}月${DAY}日${HOUR}:${MINUTE}
  6. */
  7. public class ${NAME} {
  8. }

自定义方法注释

文件-设置-编辑器-代码模版-添加 Template Group

命名为 luoma group

添加成功

选中 luoma group,添加 Live Template

输入快键键

缩写: a
描述: 给方法添加注释
模板文本:

  1. **
  2. * @author: $author$
  3. * @description: $description$
  4. * @param: $params$
  5. * @return: $returns$
  6. * @date: $date$
  7. **/

设置起作用的语言,这里我们选中 Java

编辑变量,注意这里需要在模板文本设置为 $名称$ 才会出现,表达式可以通过下拉框选取

名称 表达式 含义
author user() 获取系统用户
description
params methodParameters() 获取方法参数
return methodReturnType() 获取方法返回类型
date date() 获取系统当前时间

确定,测试结果,编写一个方法,在方法先使用 /a + Tab,就会出现下面的注释

  1. package com.test.invoice.data;
  2. /**
  3. * @author:
  4. * @version:
  5. * @description: 测试数据类
  6. * @date: 2019-08-07 09:53
  7. **/
  8. public class TRbtTestData {
  9. /**
  10. * @author: v_hwhao
  11. * @description:
  12. * @param: [a, b]
  13. * @return: int
  14. * @date: 2019/8/7
  15. **/
  16. public int Add(int a,int b)
  17. {
  18. return a+b;
  19. }
  20. }

显示类定义,方法定义注释提示

比如我们调用一个类,把鼠标放到类上显示类的注释,把鼠标放到方法上显示方法注释

比如下面的代码

  1. package com.test.invoice.data;
  2. /**
  3. * @author:
  4. * @version:
  5. * @description: 测试数据类
  6. * @date: 2019-08-07 09:53
  7. **/
  8. public class TRbtTestData {
  9. /**
  10. * @author: v_hwhao
  11. * @description: 得到两个数相加值
  12. * @param: [a, b]
  13. * @return: int
  14. * @date: 2019/8/7
  15. **/
  16. public int Add(int a,int b)
  17. {
  18. return a+b;
  19. }
  20. public void Test()
  21. {
  22. TRbtTestData test = new TRbtTestData();
  23. test.Add(1,2);
  24. }
  25. }

在 Test() 方法中,我们把光标放到 TRbtTestData,显示类注释 测试数据类,把光标放到 Add 上,显示 得到两个数相加值

设置方法,文件-设置-常规

勾选Show quick documentation on mouse move

结果

但并不是我想要的效果,于是我尝试使用系统的自带的注释功能试试。

使用系统自带的注释功能

在类或方法使用 /**+回车就会出现系统自定义注释功能

测试类,这个类的注释使用 /**+回车 生成

  1. /**
  2. * 测试数据类-1
  3. */
  4. public class TRbtTestData1
  5. {
  6. /**
  7. * 得到两个数相加值-1
  8. * @param a 变量a
  9. * @param b 变量b
  10. * @return a+b
  11. */
  12. public int Add(int a,int b)
  13. {
  14. return a+b;
  15. }
  16. }

调用

是我想要的效果,但是注释模板不是我自定义

我想用自定义的模版也达到这个效果?

这里尝试修改类模版,方法模版类达到这个效果

修改类注释模版,方法注释模版

结合系统生成的模板,我们修改之前的设置的模版

类注释模版

  1. /**
  2. * ${description}
  3. * @author:
  4. * @version:
  5. * @date: ${YEAR}-${MONTH}-${DAY} ${HOUR}:${MINUTE}
  6. */

方法注释模版

  1. **
  2. * $description$
  3. * @param $params$
  4. * @return $return$
  5. * @author: $author$
  6. * @date: $date$
  7. */

新建一个类,使用自定义注释

  1. package com.test.invoice.data;
  2. /**
  3. * 测试数据类-2
  4. *
  5. * @author:
  6. * @version:
  7. * @date: 2019-08-07 11:55
  8. */
  9. public class TRbtTestData2 {
  10. /**
  11. * 得到两个数相加值-2
  12. * @param [a, b]
  13. * @return int
  14. * @author: v_hwhao
  15. * @date: 2019/8/7
  16. */
  17. public int Add(int a,int b)
  18. {
  19. return a+b;
  20. }
  21. }

调用

已达到我想要的效果,还有一个问题,方法参数显示不出来

这个需要手动调整了

  1. @param [a, b]

调整

  1. @param a 变量a
  2. @param b 变量b

常用 Live Template

try catch 代码块

  1. try {
  2. } catch (Exception e) {
  3. }

短注释

  1. //------------------------

长注释

  1. //------------------------------------------------

region

  1. //------------------------------------------------region
  2. //------------------------------------------------endregion

日志相关

参考:代码快速补全,live template 打日志

方法入口日志

  • 缩写:logm

  • 模板文本:log.info($content$,$params$);

  • 编辑变量

    • 名称:content
    • 表达式:

      1. groovyScript("def params = _2.collect {'入参:【'+it+' = {}】'}.join(', '); return '\"' + _1 + '() 开始调用 => ' + (params.empty ? '' : params) + '\"'", methodName(), methodParameters())
    • 名称:params

    • 表达式:
      1. groovyScript("def params = _1.collect {it}.join(', '); return (params.empty ? '' : params) ", methodParameters())

方法异常日志

  • 缩写:loge

  • 模板文本:log.error($content$,$params$);

  • 编辑变量

    • 名称:content
    • 表达式:

      1. groovyScript("def params = _2.collect {'入参:【'+it+' = {}】,e:'}.join(', '); return '\"' + _1 + '() 调用异常 => ' + (params.empty ? '' : params) + '\"'", methodName(), methodParameters())
    • 名称:params

    • 表达式:
      1. groovyScript("def params = _1.collect {it}.join(', '); return (params.empty ? '' : params) + ',e' ", methodParameters())

方法返回日志

  • 缩写:logr

  • 模板文本:log.info("$METHOD_NAME$() 结束调用,返回结果: " + $result$);

  • 编辑变量

    • 名称:METHOD_NAME
    • 表达式:

      1. methodName()
    • 名称:result

    • 表达式:
      1. variableOfType(methodReturnType())

效果

  1. public String edit(@RequestParam(name = "id", defaultValue = "0") Long id) {
  2. String title;
  3. try {
  4. //logm
  5. log.info("edit() 开始调用 => 入参:【id = {}】",id);
  6. //logr
  7. log.info("edit() 结束调用,返回结果: " + title);
  8. return title;
  9. } catch (Exception e) {
  10. //loge
  11. log.error("edit() 调用异常 => 入参:【id = {}】,e:",id,e);
  12. return "";
  13. }
  14. }

日志相关-统一方法名

方法名称变量

  • 缩写:mt

  • 模板文本:String methodName = "$METHOD_NAME$() >> ";

  • 编辑变量

    • 名称:METHOD_NAME
    • 表达式:
      1. methodName()

方法入口日志

  • 缩写:logm

  • 模板文本:log.info($content$, $params$);

  • 编辑变量

    • 名称:content
    • 表达式:

      1. groovyScript("def params = _2.collect {'入参:【'+it+' = {}】'}.join(', '); return 'methodName + \"开始调用 >> ' + (params.empty ? '' : params) + '\"'", methodName(), methodParameters())
    • 名称:params

    • 表达式:
      1. groovyScript("def params = _1.collect {it}.join(', '); return (params.empty ? '' : params) ", methodParameters())

或者

  • 缩写:logbegin

  • 模板文本:log.info($content$, $params$);

  • 编辑变量

    • 名称:content
    • 表达式:

      1. groovyScript("def params = _2.collect {'入参:【'+it+' = {}】'}.join(', '); return '\"{}开始调用 >> ' + (params.empty ? '' : params) + '\"'", methodName(), methodParameters())
    • 名称:params

    • 表达式:
      1. groovyScript("def params = _1.collect {it}.join(', '); return 'methodName, ' + (params.empty ? '' : params) ", methodParameters())

方法异常日志

  • 缩写:loge

  • 模板文本:log.error($content$, $params$);

  • 编辑变量

    • 名称:content
    • 表达式:

      1. groovyScript("def params = _2.collect {'入参:【'+it+' = {}】,e:'}.join(', '); return 'methodName + \"调用异常 >> ' + (params.empty ? '' : params) + '\"'", methodName(), methodParameters())
    • 名称:params

    • 表达式:
      1. groovyScript("def params = _1.collect {it}.join(', '); return (params.empty ? '' : params) + ', e' ", methodParameters())

或者

  • 缩写:logerror

  • 模板文本:log.error($content$, $params$);

  • 编辑变量

    • 名称:content
    • 表达式:

      1. groovyScript("def params = _2.collect {'入参:【'+it+' = {}】,e:'}.join(', '); return '\"{}调用异常 >> ' + (params.empty ? '' : params) + '\"'", methodName(), methodParameters())
    • 名称:params

    • 表达式:
      1. groovyScript("def params = _1.collect {it}.join(', '); return 'methodName, ' + (params.empty ? '' : params) + ', e' ", methodParameters())

方法返回日志

  • 缩写:logr

  • 模板文本:log.info(methodName + "结束调用,返回结果:{}", $result$);

  • 编辑变量

    • 名称:METHOD_NAME
    • 表达式:

      1. methodName()
    • 名称:result

    • 表达式:
      1. variableOfType(methodReturnType())

或者

  • 缩写:logend

  • 模板文本:log.info("{}结束调用,返回结果:{}", methodName, $result$);

方法日志

方法返回日志

  • 缩写:logi

  • 模板文本:log.info(methodName + "");

或者

  • 缩写:loginfo

  • 模板文本:log.info("{}", methodName);

效果

  1. public String edit(@RequestParam(name = "id", defaultValue = "0") Long id) {
  2. String title;
  3. //mt
  4. String methodName = "edit() >> ";
  5. try {
  6. //logm
  7. log.info(methodName + "开始调用 >> 入参:【id = {}】", id);
  8. //logr
  9. log.info(methodName + "结束调用,返回结果:{}", title);
  10. //logi
  11. log.info(methodName + "");
  12. return title;
  13. } catch (Exception e) {
  14. //loge
  15. log.error(methodName + "调用异常 >> 入参:【id = {}】,e:", id, e);
  16. return "";
  17. }
  18. }