IDEA注释模板使用Groovy脚本自动获取本地GIt分支版本号

IDEA当前最流行的一款开发神器,相信大家改变世界(搬砖)的时候都体会到这款ide的强大了吧。今天笔者就来介绍使用IDEA注释模板自动获取本地分支的版本号的功能。

要实现的功能就是注释模板中自动获取本地GIT分支版本:


image.png

开发过程中注释是必不可少的,IDEA也提供了强大的注释模板的功能,下面是笔者的初始注释模板,至于怎么新建注释模板这里笔者就不啰嗦的,度娘上面有很多。


image.png

模板里面的使用$$包起来的就是取的动态数据,例如时间,日期,包名,方法名等等,IDEA内置了很多很强大的函数,下面是笔者使用的函数模板。


image.png

这里对参数和返回值使用groovy脚本做了一些简单处理,比如一些格式换行之类的

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

简单介绍一下,脚本里面是使用了内置函数methodParameters() methodReturnType(), 通过groovy处理展示出我们想要的效果,感兴趣的可以格式化出来看一下,语法基本和java没什么区别

这个1.0版本的注释模板存在一个问题就是版本号必须手动替换, 每次拉新的分支版本开发需求总是存在忘记替换版本号,注释就有点混乱。笔者看了内置函数也没有找到和分支版本相关的版本,一次在定制jenkins构建的过程中,使用到了groovy脚本获取项目的git分支,笔者联想到这里是否也可以采用这种方式获取版本号。经过一个多小时的试错终于完成了。下面给大家介绍下结果:

注释模板2.0

image.png

image.png
// version
groovyScript("try{def path=\"${_1}\";def dir=path.substring(0,path.lastIndexOf(\"\\\\\"));def command = \"git branch\"; def result = command.execute(null, new File(dir)).getText(); def branchs = result.trim().split(\"\\\\n\", -1); for (int i = 0; i < branchs.size(); i++) { if (branchs[i].startsWith(\"*\")) { return branchs[i].substring(branchs[i].indexOf(\"*\") + 1).trim();}};} catch (Exception e){};return \"\";", filePath())

介绍一下,脚本分两部分。第一部分是笔者通过groovy脚本执行cmd命令获取git分支名称并取出当前分支的逻辑,第二部分是获取当前编辑文件路径的内置函数filePath()。下面是脚本的源码:

    static def String obtainBranch() {
//        try{def path="${_1}";def dir=path.substring(0,path.lastIndexOf("\\"));def command = "git branch"; def result = command.execute(null, new File(dir)).getText(); def branchs = result.trim().split("\\n", -1); for (int i = 0; i < branchs.size(); i++) { if (branchs[i].startsWith("*")) { return branchs[i].substring(branchs[i].indexOf("*") + 1).trim();}};} catch (Exception e){};return "";
        try {
            // 取外部传参filePath(),当前编辑文件全路径
            def path = "${_1}";
            // 获取文件目录,必须是git管理的目录
            def dir = path.substring(0, path.lastIndexOf("\\"));
            // git获取分支版本命令
            def command = "git branch";
            // 进入dir目录 执行git branch命令
            def result = command.execute(null, new File(dir)).getText();
            // 结果换行解析
            def branchs = result.trim().split("\\n", -1);
            for (int i = 0; i < branchs.size(); i++) {
                //    master
                // *  1.0.0
                // 当前分支会用*号标识
                if (branchs[i].startsWith("*")) {
                    // 获取当前分支
                    return branchs[i].substring(branchs[i].indexOf("*") + 1).trim();
                }
            };
        } catch (Exception e) {
        };
        // 兼容异常情况返回空
        return "";
    }

脚本中要执行git命令, 所以要把git 加到环境变量中 笔者使用的是gitbash 默认路径 C:\Program Files\Git\bin

最后效果就是: 输入 /** 按TAB键

image.png

可以看到已经自动获取到本地分支的版本号,大功告成! 不过因为执行了cmd命令,可能稍微有一点卡顿的感觉,不过还是不影响正常适应。

注意: 不同idea版本 内置函数可能不同, 笔者在朋友的idea上发现没有filePath()这个内置函数
笔者测试的是 idea-2019.3

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,132评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,802评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,566评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,858评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,867评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,695评论 1 282
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,064评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,705评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,915评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,677评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,796评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,432评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,041评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,992评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,223评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,185评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,535评论 2 343