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

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

作者: liukeless | 来源:发表于2020-04-30 10:22 被阅读0次

    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

    相关文章

      网友评论

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

          本文链接:https://www.haomeiwen.com/subject/tvgawhtx.html