利用gradle plugin和git hook进行自动化代码格式化
俗话说,非我族类其心必异。在软件项目的开发过程中,整个团队万万不可同床异梦离心离德,因此统一代码规范也就至关重要了。
良好的代码规范可以增加代码的可读性从而提高代码的可维护性。同时,统一的代码规范更可以减少不必要的麻烦,比如一个人习惯两个空格缩进,另一个人设置了四个空格,如果第二个人仅仅修改了第一个人的部分代码但此时IDE进行了格式化,版本控制的diff工具会认为整个代码文件都进行了修改,可谓牵一发而动全身,不免打草惊蛇,弄得风声鹤唳草木皆兵。
统一代码规范,我们最早采用的方法是使用Checkstyle插件,如果代码不符合规范,持续集成中maven或者gradle的构建过程就会失败。
但是己所不欲勿施于人,增加了对代码的格式要求,就必须提供对应的代码格式化工具,否则人工格式化代码会增大工作量,比如每次按control+shift+f也是需要三次按键的。想要自动格式化代码,eclipse中可以设置save actions,idea也可以安装save actions插件,在保存文件时进行自动format。
优秀代码的设计原则包括了中心化配置和问题及时发现,但是上面的方案两个缺点:
- 要求每个团队成员都要设置自己的IDE,不能在一个地方统一管理。
- 未经格式化的代码也会被提交,只有下一次持续集成的时候才会被发现。
现在找到了spotlessApply插件,结合git的hook解决了这两个问题。在gradle中设置如下
plugins {id 'java'id "com.diffplug.gradle.spotless" version "3.16.0"
}group 'test'
version '1.0-SNAPSHOT'sourceCompatibility = 1.8spotless {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进行自动化代码格式化相关推荐
- Android 热修复 Tinker Gradle Plugin解析
本文已在我的公众号hongyangAndroid原创首发. 转载请标明出处: http://blog.csdn.net/lmj623565791/article/details/72667669 本文 ...
- **使用 Git Hook 实现网站的自动部署
http://www.tuicool.com/articles/3QRB7jU 自动化能解放人类的双手,而且更重要的是,因为按照规定的流程来走,也减少了很多误操作的产生.不知道大家平时都是怎么样更新自 ...
- Jenkins构建之常用的触发器和Git Hook自动构建
Jenkins项目构建细节之常用的构建触发器 Jenkins内置4种构建触发器: 触发远程构建 其他工程构建后触发(Build after other projects are build) 定时构建 ...
- Android Gradle Plugin 源码阅读与编译
前言 为了解一些Andorid的构建流程,有时候需要阅读Android Gradle Plugin的相关源码的.自己阅读Android Gradle Plugin源码主要经历了三个时期: 1.AOSP ...
- [Gradle] 在 Eclipse 下利用 gradle 构建系统
构建系统时候常常要用到 Ant, Maven 等工具,对于初学者来说,它们还是过于复杂,上手还是需要时间的.本文将向读者介绍一种全新的构建项目的方式 gradle,它简单.上手快,能大大节省项目的时间 ...
- 【Android 修炼手册】Gradle 篇 -- Android Gradle Plugin 主要流程分析
预备知识 理解 gradle 的基本开发 了解 gradle task 和 plugin 使用及开发 了解 android gradle plugin 的使用 看完本文可以达到什么程度 了解 andr ...
- git maven 一键部署_Jenkins Git Maven搭建自动化部署项目环境 邮件通知
简介 折腾了两个晚上,趁着今晚比较有空,把jenkins+git+maven搭建自动化部署项目环境搭建的过程记录一下,这里我把github作为git的远程仓库(https://github.com/j ...
- AS 自定义 Gradle plugin 插件 案例 MD
Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...
- linux git hook,前端通过githook一键自动部署项目
git hook 自动部署 本文章教大家,使用git hook来实现本地开发代码一行命令自动上传到远程服务器. 第一步创建空git仓库 终端进入你需要放项目的文件夹,可以通过ssh root@host ...
最新文章
- !aspxpages(即!dumphttpcontext)命令输出的解释
- 通过BeanFactory获取bean的几种方法
- 微软人工智能平台开源:利用《我的世界》测试AI软件
- 【转载】windows mobile 上隐藏和关闭X以及OK的处理
- 合工大python期末复习知识点汇总
- Web如何应对流量劫持?
- php version.,PHP_VERSION指什么
- canvas笔记-非零环绕原则及剪纸实例
- django objects.filter().exists()
- SublimeText3快捷键简要总结
- silverlight(二)样式
- libgdx的菜单配置,以及json文件的结构
- 2019 CSP-S第二轮认证一等奖获奖名单
- 求方程ax^2+bx+c=0的根,用3个函数分别求当b^2-4ac大于0、等于0和小于0时的根,并输出结果。 从主函数输入a, b, c的值。
- 3dmax中如何解决镜头穿透模型?
- 常见男女英文名,来历、释义
- 劳务派遣人员是否有加班费
- MFC中窗口实现拖拽文件功能
- 使用Python将mat文件转换为npy文件
- java 什么是原子操作_java原子操作CAS
热门文章
- 电脑网页的上网记录怎么查
- 浅谈 大数据分析:市场分析、运营分析、用户行为分析
- [FROM LUOGU]P1600 【NOIP2016DAY1T2】天天爱跑步
- Linux 探索之旅 | 第一部分第二课:下载 Linux,免费的噢
- 表驱动法(更优雅的写if-else、switch-case)
- win Server 2008 服务器应用程序不可用
- 【菜鸟教程】Kafka消息队列入门下(IDEA操作Kafka)
- C#之清空FileStream内容
- Wakeup linux system from sleep mode
- 什么命令能把Linux搞死机,linux 死机相关