如何配置Intellj idea(Android Studio)的注释模板

在日常项目开发过程中,项目组都会有自己的一套默认的注释模板。这里,我们介绍下如何在Intellj idea(由于Android Studio是基于idea的,配置是一样的)中,修改默认的注释模板,以获得我们想要的效果。文中将分别介绍

  • 文件头(File Header)的配置:在创建代码文件时在文件头生成
  • 类的配置:在新建类文件时自动生成,其模板中会解析File Header文件中的内容
  • 方法的配置:配置好模板,根据快捷键生成

一、配置File Header注释模板

在打开的idea工程中,选择File->Setting->Editor->File and Code Templates,在打开的右侧窗口中选取Includes页签下的File Header子项(若不存在该项,则新建一个),如下所示:




看下idea给出的描述信息吧
这是一个内建的模板。它包含了一个通过#parse指令,可被文件模板包含的代码片段。该模板是可编辑的。与静态文本,代码和注释一起,你也可以使用预定义变量,然后它们将像宏一样展开为相应的值。

  • ${PACKAGE_NAME} 被创建新文件的包名。
  • ${USER} 当前用户系统登陆名,这个名字可以在计算机->管理里面做修改。
  • ${DATE} 当前系统日期
  • ${TIME}当前系统时间
  • ${YEAR}当前年份
  • ${MONTH} 当前月份
  • ${MONTH_NAME_SHORT}当前月份名的前三个字母,比如,Jan,Feb等
  • ${MONTH_NAME_FULL} 当前月份名的完整名称,比如,January, February等
  • ${DAY} 月份的当前天
  • ${DAY_NAME_SHORT} 当前天名的前三个字母,比如,Mon,Tue等
  • ${DAY_NAME_FULL} 当前天名的前三个字母,比如,Monday,Tuesday等
  • ${HOUR} 当前小时
  • ${MINUTE} 当前分钟
  • ${PROJECT_NAME} 当前工程名
    通过以上,我们可以知道,该文件会是其它模板文件的内建模板,我们通常可以使用其预定义的变量。下面给出一个模板:
/**
 *  
 * @author: ${USER}
 * @description please add a description here
 * @date: Create in ${TIME} ${DATE}
 */

将以上内容贴到编辑框中,然后点击ApplyOk按钮。接着,新建一个文件后,可以看到如下的结果。

/**
 * @author: killua
 * @description please add a description here
 * @date: Create in 20:20 2018/7/14
 */
public class Demo
{
}

这样子,我们就完成了文件头的配置。

二、配置类注释模板

类模板的配置与文件头大饿配置有点重复的感觉。如果已经配置了文件头后,就不需要再配置该模板了。该模板只针对所有的Class类。如果要为接口添加注释,需要修改相应的模板。
通过File->Setting->Editor->File and Code Templates,打开右侧Files页签下的Class子项,进行配置。


稍微看下说明吧:
这是一个内建的模板,用于在每次你通过选择New->Java Class->Class菜单来创建一个新的Java类的时候。它也可以指定任意数量的自定义变量,格式为${<VARIABLE_NAME>},这种情况下,在你创建新文件前,你将收到一个对话框提示,你可以在里面为所有的自定义变量的特定值。使用#parse指令,可将include tab页汇总的模板包含进来,通过指定期望的模板名作为参数。如#parse("File Header.java")
这里,因为我们以及在include中配置了File Header.java,所以可以不做修改。

三、配置方法模板

idea自带了一个方法模板,但只有param和return字段,不够实用,如下所示:

    /**
     *
     * @param param
     * @return
     */
    private boolean isShow(String param)
    {
        return true;
    }

通过在方法定义上一行中敲击/** + Enter触发模板。
接着,我们来实现我们的自定义模板,通过File-->Settings-->Editor-->Live Templates,然后点击右上角的+,选择Template Group来创建一个新的组,取名为CustomGroup,如图所示。


然后,选择新创建的CustomGroup,然后再次选择+,这次选择Live Templates,新建一个模板到模板组中,如下所示:

这里Abbreviation中填入*(触发条件为/* + 模板名+快捷键),这是触发条件的缩写。第二个框中填入模板的描述,然后,点击底下的define按钮,在弹出框中,选择相应的语言场景。

填入模板内容,如下:

*
 *
 * @author $user$
 * @param $param$
 * @return $return$
 * @date $time$ $date$
 **/

设置参数名时必须用${参数名}$的方式,为了获取param和return的参数,idea提供了内置的几个方法:

  • param通过methodParameters()来获取
  • return 通过methodReturnType()来获取
  • time 通过time()来获取
  • date 通过date()来获取
  • user 通过user()来获取
    通过点击Edit Variables来设置相应的参数值,如下所示:


    最后,修改idea默认的快捷键,将tab改为Enter,如下图所示。

    这样子就完成了方法注释模板的编辑,新建方法后,敲击* + Enter后,效果如下。
    /**
     *
     * @author killua
     * @param [`param1`, parm2]
     * @return
     * @date 12:24 2018/7/15
     **/

但代码检测工具会对参数以红色告警方式显示,这是因为它找不到[param1, parm2]参数。
如果要显示参数列表单独显示那种方式(自带那种方式),只能在方法内部实现,这时候需要将配置的methodParameters()替换为以下脚本:

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

方法内和外的效果对比,方法外无法获取参数列表

/**
     *
     * @author killua
     * @param null
     * @return 
     * @date 12:22 2018/7/15
     **/
    private boolean isShow(String param1, String parm2)
    {
        /**
         *
         * @author killua
         * @param param1
         * @param parm2
         * @return 
         * @date 12:22 2018/7/15
         **/
        return true;
    }

这几种方式都不算好,因为Intellj idea的/** + Enter不算一个Live Template。这里有个折中的方案,就是同时利用了自带的/** + Enter和新建的Live Template。并在新建模板中添加你额外的属性,如下所示:


注意空格:

@author $USER$ 
    * @since  $DATE$;

然后,先敲击自带的功能/** + Enter,然后继续在注释中敲击auth+Enter获取完整的信息,如下:

  /**
     * 
     * @param param1
     * @param parm2
     * @author killua
     * @since 2018/7/15;
     * @return
     */
    private boolean isShow(String param1, String parm2)
    {
        return true;
    }

推荐阅读更多精彩内容