在日常项目开发过程中,项目组都会有自己的一套默认的注释模板。这里,我们介绍下如何在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}
*/
将以上内容贴到编辑框中,然后点击Apply
或Ok
按钮。接着,新建一个文件后,可以看到如下的结果。
/**
* @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;
}