美文网首页工具癖程序员Git
利用gradle plugin和git hook进行自动化代码格

利用gradle plugin和git hook进行自动化代码格

作者: 大神带我来搬砖 | 来源:发表于2018-12-29 17:00 被阅读26次

    俗话说,非我族类其心必异。在软件项目的开发过程中,整个团队万万不可同床异梦离心离德,因此统一代码规范也就至关重要了。

    良好的代码规范可以增加代码的可读性从而提高代码的可维护性。同时,统一的代码规范更可以减少不必要的麻烦,比如一个人习惯两个空格缩进,另一个人设置了四个空格,如果第二个人仅仅修改了第一个人的部分代码但此时IDE进行了格式化,版本控制的diff工具会认为整个代码文件都进行了修改,可谓牵一发而动全身,不免打草惊蛇,弄得风声鹤唳草木皆兵。

    统一代码规范,我们最早采用的方法是使用Checkstyle插件,如果代码不符合规范,持续集成中maven或者gradle的构建过程就会失败。

    但是己所不欲勿施于人,增加了对代码的格式要求,就必须提供对应的代码格式化工具,否则人工格式化代码会增大工作量,比如每次按control+shift+f也是需要三次按键的。想要自动格式化代码,eclipse中可以设置save actions,idea也可以安装save actions插件,在保存文件时进行自动format。

    优秀代码的设计原则包括了中心化配置和问题及时发现,但是上面的方案两个缺点:

    1. 要求每个团队成员都要设置自己的IDE,不能在一个地方统一管理。
    2. 未经格式化的代码也会被提交,只有下一次持续集成的时候才会被发现。

    现在找到了spotlessApply插件,结合git的hook解决了这两个问题。在gradle中设置如下

    plugins {
        id 'java'
        id "com.diffplug.gradle.spotless" version "3.16.0"
    }
    
    group 'test'
    version '1.0-SNAPSHOT'
    
    sourceCompatibility = 1.8
    
    spotless {
        java {     
            googleJavaFormat()
            indentWithTabs(2)
            indentWithSpaces(4)
        }
    }
    def hook = new File("$rootProject.projectDir/.git/hooks/pre-commit")
    hook.text = """#!/bin/bash
    echo "will run nova code format"
    ./gradlew spotlessApply
    """
    
    

    首先借助gradle强大的代码能力,自动在项目的git目录中创建hook,然后该hook在git的commit之前,会执行gradlew spotlessApply,进行代码的自动格式化。既不需要每个人设置IDE,也可以避免未经格式化的代码提交。

    相关文章

      网友评论

        本文标题:利用gradle plugin和git hook进行自动化代码格

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