idea 使用 groovyScript 获取方法参数列表生成方法注释模板遇到的问题。

news/2024/7/4 23:32:44

1、网上好多使用groovyScript来设置获取方法列表生成注释模板的代码,我这篇文章的是想讨论下这种方式存在的一个问题,希望有大佬能提供一个解决方案。

2、设置步骤什么的就省略了直接描述问题。

3、groovyScript代码段如下:

groovyScript( 
   "def result='';      
	def params=\"${_1}\";
	def params1=params.replaceAll('[\\\\[|\\\\]|\\\\s]', '');
	if(params1.equals('')){
		result='';
	}else{
	def array=params1.split(',');
		for (int i = 0; i < array.size(); i++) {
			if(i==0)result+= '* '; 	
			if(i!=0)result+= ' * ';  
			result+='@param ' + array[i] +' 参数说明'+ ((i < (array.size() - 1)) ? '\\n' : '');    
		};
	};
return result", methodParameters())

4、上面代码已经是我优化之后的了,网上大部分的代码都存在一个问题,就是这个方法参数为空的情况下也会再参数列表生成一个 @param 参数说明;很多代码都是再正则替换之后直接使用split(',')这个方法生成array,或者后面用toList()生成list,这块有个问题就是,如果参数为空,用正则replaceAll之后,params1是一个空字符串,如果对空字符串进行split(','),就生成一个有一个空字符串的数组,所以导致虽然参数为空,但是还是会进入循环生成字符串。

这块有个点就是,如果对空字符串进行split(','),正则无法匹配到结果,会直接return String[]{this},所以返回的数组是长度为1的数组,里面的元素就是当前空字符串。

以上的代码可以解决当参数列表为空的时候不生成字符串,但是返回的空,会再注释模板中占一行,如下

虽然格式化一下代码,可以把注释中的空行格式掉,但是我想让他生成时候并不占用一行,我尝试过 返回 null,不可以,返回null会让鼠标光标定在空行哪个位置,直接return也不行。返回 undefined也不行,尝试返回\b退格,也不行。哪位大佬可以指点一下,怎样可以再参数为空的情况下,去掉这个空行。我的想法是,返回一个退格到上一行,但是没生效。谢谢了。


http://lihuaxi.xjx100.cn/news/1555929.html

相关文章

在windows上执行ssh-keygen报错Bad permissions

在windows上执行ssh-keygen报错Bad permissions&#xff1a;如下 C:\Users\xiaoming>ssh-keygen -p -m PEM -f C:\mywork\id_rsa Bad permissions. Try removing permissions for user: BUILTIN\\Users (S-1-6-92-143) on file C:/mywork/id_rsa.WARNING: UNPROTECTED PRIV…

vue模板语法上集->插值,指令,过滤器,计算属性监听属性,vue购物车

插值指令过滤器计算属性&监听属性vue购物车 1.插值 <!DOCTYPE html> <html><head><meta charset"utf-8"><script src"https://cdn.bootcdn.net/ajax/libs/jquery/3.7.1/jquery.js"></script><script src&quo…

掷骰子的多线程应用程序2基于互斥量的线程同步(复现《Qt C++6.0》)

说明&#xff1a;在复现过程中出现两点问题&#xff08;1&#xff09;run()函数中对m_diceValued的赋值&#xff08;2&#xff09;do_timeOut()函数中没有对m_seq、m_diceValued进行定义。修改后的复现程序如下所示&#xff1a; 主线程&#xff1a; .h #pragma once#include…

电脑提示找不到msvcr120.dll无法继续执行代码,哪个修复方法更简单

电脑报错“找不到msvcr120.dll无法继续执行代码”。我相信&#xff0c;对于许多使用电脑的朋友来说&#xff0c;这个问题并不陌生。我们在使用电脑的过程中&#xff0c;可能会遇到各种各样的问题&#xff0c;其中就包括了找不到msvcr120.dll这个文件的问题。那么&#xff0c;这…

分界线-积木游戏 demo

目录 匿名信 题目描述: 输入描述 输出描述: 示例: Java实现 (期待看官能够修复一下, 害): 二、积木游戏 题目描述: 输入描述 输出描述 补充说明 示例 Java代码实现 匿名信 题目描述: 电视剧《分界线》里面有一个片段&#xff0c;男主为了向警察透露案件细节&…

echarts散点图的圆点设置成不同的自定义图片且使用本地静态资源图片的写法

现在要实现的功能是&#xff1a; 散点图的每个点都不再是小圆点而是一张图片&#xff01;&#xff01;&#xff01;&#xff01;&#xff01; 即&#xff1a; 散点图的圆点设置成不同的自定义图片、且使用本地静态资源图片的写法 首先举个栗子&#xff0c;假设有个echarts散点…

C++跳坑记:位移超出范围的处理

在C编程中&#xff0c;数据类型的选择不仅影响内存占用和性能&#xff0c;还可以对某些操作的结果产生意想不到的影响。今天&#xff0c;我将分享一个关于C在不同变量类型下位移操作结果的发现。 位移操作是C中常见的对整数的高效操作之一。然而&#xff0c;我们可能会忽视一个…

【Linux旅行记】探究操作系统是如何进行管理的!

文章目录 什么是操作系统&#xff1f;操作系统概念操作系统的目的底层硬件驱动程序操作系统理解系统调用接口 操作系统是如何进行管理的&#xff1f;什么是管理&#xff1f;操作系统是如何管理硬件信息呢&#xff1f; &#x1f340;小结&#x1f340; &#x1f389;博客主页&am…