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

2020-04-30  本文已影响0人  liukeless

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

上一篇下一篇

猜你喜欢

热点阅读