IDEA类和方法注释模板,配置方法注释@param时自动参数的问题,亲自实践总结有效。

文章有点长了,为了方便大家快速使用,直接把配好的方法放到最上面,有兴趣的可以继续向下看完。

添加注释模板方法:CTRL+ALT+S(或者File -> Setting) 打开设置,搜索Live Templates  如下图一所示:

图一

然后点击图二中所示“+”号,添加模板组,如图二所示:

图二

我自己创建的是mygroup,然后点击添加live Template 添加类注释和方法注释。如图三所示:

图三

类注释:

图中的1号位置是注释快捷键,例如我配的是“cc”,打注释时就是用“/**cc -> Enter”,方法注释同理就是"/**mc -> Enter"。

重点:右侧的"Reformat according to style" 会自动格式化注释,如果有缩进问题请勾选,对方法注释一样。

​

*
* @author ***
* @createDate $date$ $time$
*/

​

类注释我写的比较简单,可以参考IDEA 创建类注释模板和方法注释模板 - 简书

$date$和$time$都是变量 点击Edit variables,参考下图配置

方法注释:


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

增加了智能返回值。

方法注释和类注释的差别在于param字段是自己写的groovy脚本,如图所示,复制字符串到对应位置即可。

return对应的groovy脚本:

groovyScript("def params=\"${_1}\"; if(params=='void'){return '';} else {return '\\n\t * @return ' + params}", methodReturnType())

不需要return的这个的话可以选择自带函数就可以。

param对应的groovy脚本:

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


下面分割的都是臭屁,没什么用了。博主留着自己玩,有问题欢迎大家在评论区交流,本人不怎么上CSDN。


如题,使用idea的时候,因为它预定义的注释样式不尽人意,但还好的是支持自定义模板。

自定义模板

File->Settings

图一

然后搜索Live Templates ,之后添加一个自己的模板组,我的是myGroup,然后是添加自己的快速注释快捷键等等,关于如何添加这个的过程大家可以在网上搜到很多,我就不多说了。


2020-08-17 18:03 IDEA版本 2019.2.4

1. 最近利用javadoc 工具生成注释,发现原来注解中的 ":" 不能有。

2. 原本方法注释中返回值为空也有return,根据javadoc,无返回值不应该写return。

方法注释:


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

return对应的groovy脚本:

groovyScript("def params=\"${_1}\"; if(params=='void'){return '';} else {return '\\n\t * @return ' + params}", methodReturnType())

param对应的groovy脚本:

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


2020-05-15 14:30 最新更新

fix: 修复了空参方法注释的bug,一直没有修改,贴出最新的。

*** 还是,右面要勾选 reformat according to style 选项 *** 

快速粘贴方法注释:


* $param$
* @author: Kangxiaoan
* @createDate: $date$ $time$
* @return: $return$
*/

注意:第一行是有一个空行的,至于为什么,大家可以把空行去掉试一试。

param 对应的default value 如下

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

整体分割线,下面的内容是博主历史变更记录,博主比较怀旧。。错了也不想改。。。


2019年5月17日补充

看到说添加注释后,换行的时候会出现缩进问题,今天我重新安装idea后也出现了相同的问题。这里发下解决方法:

大家看看右侧第一个打勾的选项<Reformat according to style>,有相同问题的可以试试。


2019年12月25日补充

为了方便复制,把代码贴出来,注意,第一行都是有空行的,其他的大家可以根据自己的需求改的。


$param$
* @author: 
* @Date: $date$
* @return: $return$
*/

顺便吧网上找的类注释贴一下,我才用的是/**cc然后tab,可能每个人都不一样,可以参考一下IDEA 创建类注释模板和方法注释模板 - 简书


* @Description
* @author: Kangxiaoan
* @version
* @date: $date$
*/

敲黑板,重点来了,对于新手来说,如何配置下面这部分无疑很困难,

-- 这里我下面做了个修改

图二

注意$param$这里。这个就是自动生成参数,我之前在网上搜了很多配置自动参数的文章,发现大多数都差不多一样的,都是用的groovy脚本进行自定义,

定义模板方法:

选择上图中右上角的Edit variables,如下图所示

图三

这里需要把这段代码

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' : '')}; return result", methodParameters())

赋值到param 对应的Default value 列,有很多文章告诉复制到Expression???

*** 敲黑板***

但是问题来了,我至今看的文章脚本都是出奇的一致,也导致后面的问题,我生成的参数格式不正确,我试了很多次。。搜了很多次,都没有卵用。然后我生气了,我自己研究了一下.我把这段脚本放到了groovy环境,格式化研究了一下。

图四

这里是我格式化后的代码,然后for循环下的两个if是我根据自己需求加的,有些人应该会发现我图二中$param$的位置是紧跟着上一个参数的,其实这看groovy脚本那段代码就好,可以自己试试看最后的返回结果样式,我放到上一个参数后面,是为了能在没有参数时,不显示空行。大家可以多试试。

下面是经过我改良的脚本代码,才疏学浅,有错忘指正

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

总结:我发先好像很多文章,都是大家抄过来抄过去的,其实截图与内容不符,我只想说一句,你们发文章的时候自己试过了么,能不能不要坑菜鸟,哦,或许也可以理解为是为了激励我们么?但这似乎不是你不负责任的理由吧。我真的很气。。

有问题的可以留言交流一下,希望大家写文章都要亲自尝试,而不是想当然的结果,其实菜鸟们有时会因为操作结果和文章不一样而显得很迷茫。所以,大佬们行行好,别让我们把太多的时间浪费在迷茫上。

看很多小伙伴回复说模板有问题,啊,我贴一下现在用的配置

现在我使用的时候会/**mc然后 tab直接生成注释,一直用的,感觉还好吧。。其实我写这篇只是想把自己踩的坑说出来,希望和我一样的人能避免这个问题,主要还是要大家自己自己研究一下这个模板脚本的写法,然后写出适合自己的东西--

好的,以下是更新后的Katalon Studio Groovy脚本,用于比较两个文件夹中的文件,并将比较结果输出为HTML。该脚本使用了java-diff-utils库比较两个文件的内容,并将比较结果以HTML的形式输出。请注意,该脚本忽略了隔行数据,并将有差异的字段高亮显示出来,同也会输出在一个文件夹中存在但在另一个文件夹中不存在的文件信息。 ```groovy import difflib.* import java.nio.file.* import java.nio.charset.StandardCharsets // 两个文件夹的路径 def folder1 = "path/to/folder1" def folder2 = "path/to/folder2" // 创建一个HTML文件,用于存储比较结果 def htmlFilePath = "path/to/comparison.html" def htmlFile = new File(htmlFilePath) htmlFile.createNewFile() // 创建一个HTML StringBuilder def htmlBuilder = new StringBuilder() // 遍历文件夹1中的所有文件 Files.walk(Paths.get(folder1)).filter { Files.isRegularFile(it) }.forEach { file1Path -> // 获取文件在文件夹2中的路径 def file2Path = Paths.get(folder2, file1Path.toFile().getName()) // 如果文件在文件夹2中不存在,则输出文件不存在的信息 if (!Files.exists(file2Path)) { htmlBuilder.append("File ${file1Path.toFile().getName()} only exists in folder 1<br>") } else { // 读取文件1的内容,并去除空行 def file1Content = Files.readAllLines(file1Path, StandardCharsets.UTF_8).findAll { !it.trim().isEmpty() } // 读取文件2的内容,并去除空行 def file2Content = Files.readAllLines(file2Path, StandardCharsets.UTF_8).findAll { !it.trim().isEmpty() } // 使用java-diff-utils库比较两个文件的内容 def patch = DiffUtils.diff(file1Content, file2Content) // 如果文件内容相同,则输出文件相同的信息 if (patch.getDeltas().isEmpty()) { htmlBuilder.append("File ${file1Path.toFile().getName()} is the same in both folders<br>") } else { // 输出文件不同的信息 htmlBuilder.append("File ${file1Path.toFile().getName()} is different in both folders<br>") // 遍历文件差异数据 patch.getDeltas().forEach { delta -> // 获取差异的起始行和结束行 def chunk = delta.getRevised() def start = chunk.getPosition() def end = start + chunk.size() - 1 // 遍历差异的行 chunk.getLines().forEachWithIndex { line, index -> // 如果行中有差异,则将差异的部分高亮显示 if (delta.getType() == Delta.TYPE.CHANGE && line.startsWith("-")) { htmlBuilder.append("<span style=\"background-color: #FFB6C1;\">${line}</span><br>") } else if (delta.getType() == Delta.TYPE.CHANGE && line.startsWith("+")) { htmlBuilder.append("<span style=\"background-color: #98FB98;\">${line}</span><br>") } else { htmlBuilder.append(line + "<br>") } } // 输出差异的起始行和结束行 htmlBuilder.append("Different lines: ${start + 1} to ${end + 1}<br>") } } } } // 遍历文件夹2中的所有文件,查找只存在于文件夹2中的文件 Files.walk(Paths.get(folder2)).filter { Files.isRegularFile(it) }.forEach { file2Path -> def file1Path = Paths.get(folder1, file2Path.toFile().getName()) // 如果文件在文件夹1中不存在,则输出文件不存在的信息 if (!Files.exists(file1Path)) { htmlBuilder.append("File ${file2Path.toFile().getName()} only exists in folder 2<br>") } } // 将HTML写入文件 htmlFile.write(htmlBuilder.toString()) // 输出比较结果的路径 println "Comparison result is saved at ${htmlFilePath}" ``` 请将“path/to/folder1”和“path/to/folder2”替换为您要比较的两个文件夹的路径,并将“path/to/comparison.html”替换为您想要输出比较结果的HTML文件的路径。
评论 72
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值