Gerrit代码Review入门实战

库 代码审核 Android Gerrit 经验分享
阅读23889 

代码审核(Code Review)是软件研发质量保障机制中非常重要的一环,但在实际项目执行过程中,却因为种种原因被Delay甚至是忽略。在实践中,给大家推荐一款免费、开放源代码的代码审查软件Gerrit。

1. Why Code Review

Code Review是什么?

Code Review最直观的解释即看代码。常规的做法为自己看,有时代码逻辑问题可能自己看不出来,需要找同事一起看,在大家知识体系相对平均的情况下可能需要花钱专门的公司帮助查看。

Code Review需要看哪些?对于刚入职场或者刚接触到Coding的新人来说,代码风格是比较重要的一块。除此之外,编码规范及代码结构写法,框架和工具的选型,具体项目的业务逻辑,安全隐患,性能问题等都可以通过review的方式发现。Code Review从前往后大致分为结对编程,提交代码后,测试之前,发版之前,发版之后等几个阶段,越往后,Code Review的效果越差,修复的成本也越来越高。

为什么一定要做入库前Code Review?

首先,代码审查的最大的功用是纯社会性的。如果你在编程,而且知道将会有同事检查你的代码,你编程态度就完全不一样了。你写出的代码将更加整洁,有更好的注释和程序结构。

其次,偷懒是人的天性,从节约成本的角度考虑,大家一般会选择在测试之前无限制的Delay Code Review。入库前做Code Review便是成本和效果之间最佳平衡点,它能及时发现问题,进行修改后确保代码质量。

最后,代码审查能传播知识。在很多开发团队里,经常每个人负责一个核心模块,每个人都只关注自己的模块。除非是同事的模块影响了自己的程序,他们从不相互交流。这种情况的后果是,每个模块只有一个人熟悉里面的代码。如果这个人休假或辞职了,其他人则束手无策。通过代码审查,至少会有两个人熟悉这些程序——作者,以及审查者。审查者并不能像程序的作者一样对程序十分了解,但至少他会熟悉程序的设计和架构,这是极其重要的。

2. Gerrit简介

Gerrit是Google为Android系统研发量身定制的一套免费开源的代码审核系统,它在传统的源码管理协作流程中强制性引入代码审核机制,通过人工代码审核和自动化代码验证过程,将不符合要求的代码屏蔽在代码库之外,确保核心代码多人校验、多人互备和自动化构建核验。

Gerrit之前的系统架构:

Gerrit之后的系统架构:

通过Gerrit机制将代码做分隔。

Gerrit适用性

几乎任何需要正式发布的项目都应当使用Gerrit来进行代码审查,如果Team中有新人,必须使用Gerrit确保代码质量。

Gerrit效果

整体上来说,个推使用的标准配置为Gerrit+Jenkins+Sonar,整个系统搭建完成后得到的效果为:100% Code Style问题避免入库,80% 设计问题避免入库,40% 逻辑错误避免入库,20% 安全隐患避免入库,100% 人员互备。

3. Gerrit入门实战

Gerrit部署和运行

JDK环境配置:

java -jar gerrit-2.12.war init -d review_site

Gerrit人员角色配置

使用OpenID登录,第一个登录的用户为admin,创建dev帐号、review帐号和verify帐号,创建dev、review和verify用户组并添加相应用户,注意设置Username,代码同步时需要用到。

创建第一个项目,配置权限管理

添加project,选择 Inherit From All-Projects,当然也可以自定义Parent Project。

添加Verified标签支持,这里修改All-Project 项目的project.config,所有继承自All-Project的项目自动添加Verified 标签,也可针对项目自定义是否verify。

创建用户组:

添加相关用户权限:

将代码库同步到本地(SSH/Http)

HTTP 方式:

HTTP Password 密码在 账户 - ->> Settings –>> HTTP Password 处获取。

SSH方式:

添加SSH Public Key。

Clone代码到本地

commit-msg,提供自动写入change-Id 至git log内功能。

提交第一个change

Gerrit上进行代码审查,确认入库

Verify:

工程里面接入了jenkins自动verify,结果可在上图红框内展示verify结果。

review代码,提交入库。

本地代码库更新,获取最新入库代码

代码submit后通过git pull - - rebase 更新代码。

Gerrit入门实战-初级修补

如果所有代码提交均被打回,可以进行暴力回滚:git reset ,接着重新提交Gerrit,再进行Gerrit审查入库。

Gerrit入门实战-高级修补

如果单个提交打回,则可交互式回滚:git rebase -i ,修改指定commit点:git commit –amend,完成所有commit点处理:git rebase –continue,然后重新提交Gerrit,最后Gerrit审查入库。

Rebase前:

Rebase后:

rebase在同一个点上修改,不会产生审核点,多个commit点同时存在是尤其有用。

Gerrit经验谈

第一,Git别名绑定,添加别名字段,通过git review master这样简单语法提交到master源端分支,可以省去很多工作。修改系统目录或者项目目下的.gitconfig 文件,添加

也可通过git config –global alias.review 命令修改:

第二,工具只是一部分,更重要的是人与人当面的沟通交流,大家讨论一个好的解决方案,才能更好的解决问题。没有交流,工具也就失去了意义。

最后,关于review积压问题,要避免提交积压,代码审核过程要及时完成,避免 Code Review流于形式。

技术公开课预告

今晚20:00,个推高级技术总监董霖将在CSDN直播分享《Gerrit代码Review高阶实战》,欢迎大家前来观看,共同学习。

学习要点

一、Gerrit高阶实战

  1. 一个change被打回,如何处理?
  2. 多个change被打回,如何处理?
  3. Gerrit+Jenkins集成
  4. Gerrit权限组管理

二、CR经验谈

  1. 避免一次性提交多功能性代码,减轻Reviewer压力
  2. 避免提交积压,导致CR流于形式
  3. format等非核心代码提交,可以请求Reviewer直接过
  4. 安排多位reviewer,一位负责最终+2入库
  5. Git别名设置

Gerrit代码Review入门实战

库 代码审核 Android Gerrit 经验分享
阅读23889 

代码审核(Code Review)是软件研发质量保障机制中非常重要的一环,但在实际项目执行过程中,却因为种种原因被Delay甚至是忽略。在实践中,给大家推荐一款免费、开放源代码的代码审查软件Gerrit。

1. Why Code Review

Code Review是什么?

Code Review最直观的解释即看代码。常规的做法为自己看,有时代码逻辑问题可能自己看不出来,需要找同事一起看,在大家知识体系相对平均的情况下可能需要花钱专门的公司帮助查看。

Code Review需要看哪些?对于刚入职场或者刚接触到Coding的新人来说,代码风格是比较重要的一块。除此之外,编码规范及代码结构写法,框架和工具的选型,具体项目的业务逻辑,安全隐患,性能问题等都可以通过review的方式发现。Code Review从前往后大致分为结对编程,提交代码后,测试之前,发版之前,发版之后等几个阶段,越往后,Code Review的效果越差,修复的成本也越来越高。

为什么一定要做入库前Code Review?

首先,代码审查的最大的功用是纯社会性的。如果你在编程,而且知道将会有同事检查你的代码,你编程态度就完全不一样了。你写出的代码将更加整洁,有更好的注释和程序结构。

其次,偷懒是人的天性,从节约成本的角度考虑,大家一般会选择在测试之前无限制的Delay Code Review。入库前做Code Review便是成本和效果之间最佳平衡点,它能及时发现问题,进行修改后确保代码质量。

最后,代码审查能传播知识。在很多开发团队里,经常每个人负责一个核心模块,每个人都只关注自己的模块。除非是同事的模块影响了自己的程序,他们从不相互交流。这种情况的后果是,每个模块只有一个人熟悉里面的代码。如果这个人休假或辞职了,其他人则束手无策。通过代码审查,至少会有两个人熟悉这些程序——作者,以及审查者。审查者并不能像程序的作者一样对程序十分了解,但至少他会熟悉程序的设计和架构,这是极其重要的。

2. Gerrit简介

Gerrit是Google为Android系统研发量身定制的一套免费开源的代码审核系统,它在传统的源码管理协作流程中强制性引入代码审核机制,通过人工代码审核和自动化代码验证过程,将不符合要求的代码屏蔽在代码库之外,确保核心代码多人校验、多人互备和自动化构建核验。

Gerrit之前的系统架构:

Gerrit之后的系统架构:

通过Gerrit机制将代码做分隔。

Gerrit适用性

几乎任何需要正式发布的项目都应当使用Gerrit来进行代码审查,如果Team中有新人,必须使用Gerrit确保代码质量。

Gerrit效果

整体上来说,个推使用的标准配置为Gerrit+Jenkins+Sonar,整个系统搭建完成后得到的效果为:100% Code Style问题避免入库,80% 设计问题避免入库,40% 逻辑错误避免入库,20% 安全隐患避免入库,100% 人员互备。

3. Gerrit入门实战

Gerrit部署和运行

JDK环境配置:

java -jar gerrit-2.12.war init -d review_site

Gerrit人员角色配置

使用OpenID登录,第一个登录的用户为admin,创建dev帐号、review帐号和verify帐号,创建dev、review和verify用户组并添加相应用户,注意设置Username,代码同步时需要用到。

创建第一个项目,配置权限管理

添加project,选择 Inherit From All-Projects,当然也可以自定义Parent Project。

添加Verified标签支持,这里修改All-Project 项目的project.config,所有继承自All-Project的项目自动添加Verified 标签,也可针对项目自定义是否verify。

创建用户组:

添加相关用户权限:

将代码库同步到本地(SSH/Http)

HTTP 方式:

HTTP Password 密码在 账户 - ->> Settings –>> HTTP Password 处获取。

SSH方式:

添加SSH Public Key。

Clone代码到本地

commit-msg,提供自动写入change-Id 至git log内功能。

提交第一个change

Gerrit上进行代码审查,确认入库

Verify:

工程里面接入了jenkins自动verify,结果可在上图红框内展示verify结果。

review代码,提交入库。

本地代码库更新,获取最新入库代码

代码submit后通过git pull - - rebase 更新代码。

Gerrit入门实战-初级修补

如果所有代码提交均被打回,可以进行暴力回滚:git reset ,接着重新提交Gerrit,再进行Gerrit审查入库。

Gerrit入门实战-高级修补

如果单个提交打回,则可交互式回滚:git rebase -i ,修改指定commit点:git commit –amend,完成所有commit点处理:git rebase –continue,然后重新提交Gerrit,最后Gerrit审查入库。

Rebase前:

Rebase后:

rebase在同一个点上修改,不会产生审核点,多个commit点同时存在是尤其有用。

Gerrit经验谈

第一,Git别名绑定,添加别名字段,通过git review master这样简单语法提交到master源端分支,可以省去很多工作。修改系统目录或者项目目下的.gitconfig 文件,添加

也可通过git config –global alias.review 命令修改:

第二,工具只是一部分,更重要的是人与人当面的沟通交流,大家讨论一个好的解决方案,才能更好的解决问题。没有交流,工具也就失去了意义。

最后,关于review积压问题,要避免提交积压,代码审核过程要及时完成,避免 Code Review流于形式。

技术公开课预告

今晚20:00,个推高级技术总监董霖将在CSDN直播分享《Gerrit代码Review高阶实战》,欢迎大家前来观看,共同学习。

学习要点

一、Gerrit高阶实战

  1. 一个change被打回,如何处理?
  2. 多个change被打回,如何处理?
  3. Gerrit+Jenkins集成
  4. Gerrit权限组管理

二、CR经验谈

  1. 避免一次性提交多功能性代码,减轻Reviewer压力
  2. 避免提交积压,导致CR流于形式
  3. format等非核心代码提交,可以请求Reviewer直接过
  4. 安排多位reviewer,一位负责最终+2入库
  5. Git别名设置

Gerrit代码Review入门实战 1相关推荐

  1. Gerrit代码Review入门实战

    代码审核(Code Review)是软件研发质量保障机制中非常重要的一环,但在实际项目执行过程中,却因为种种原因被Delay甚至是忽略.在实践中,给大家推荐一款免费.开放源代码的代码审查软件Gerri ...

  2. Gerrit代码Review入门

    代码审核(Code Review)是软件研发质量保障机制中非常重要的一环,但在实际项目执行过程中,却因为种种原因被Delay甚至是忽略.在实践中,给大家推荐一款免费.开放源代码的代码审查软件Gerri ...

  3. Gerrit代码Review高阶实战

    Gerrit代码Review高阶实战 Gerrit代码Review高阶实战 Gerrit 是一个免费.开放源代码的代码审查软件,使用网页界面.利用网页浏览器,同一团队的程序员,可以相互审阅彼此修改后的 ...

  4. Fastlane 入门实战教程从打包到上传iTunes connect

    有关神器 Fastlane 持续集成\部署的文章网上挺多,本文定位是入门教程,针对 iOS 应用的持续部署,只需一条命令就可实现从 Xcode 项目到 编译\打包\构建\提交审核 文章稍微有点长,涵盖 ...

  5. Gerrit 代码审核服务器的工作流和原理

    2019独角兽企业重金招聘Python工程师标准>>> Gerrit 代码审核服务器的工作流和原理 谷歌 Android 开源项目在 Git 的使用上有两个重要的创新,一个是为多版本 ...

  6. python入门新手项目-Python入门实战项目有哪些适合新手?

    Python入门实战项目有哪些适合新手?目前市面上有很多适合新手的Python入门练手项目,Python入门需要理论与实践相结合,前面夯实基础知识,后面通过实战项目帮助你更好的运用这些Python知识 ...

  7. 干货 | 架构师入门实战视频课程(一)

    2018-04-04 码农章为忠 <架构师入门实战视频课程> 废话不多说,直接上干货吧 这次先整理了比较初级的视频教程,后续视频会慢慢整理出来. 关注微信公众号,回复相关代码,即可获得相关 ...

  8. Docker Review - dockerfile 实战_使用dockerfile制作tomcat镜像

    文章目录 Pre Docker 官方镜像 Dockerfile dockerfile制作tomcat镜像 准备软件 编写Dockerfile文件 dockerfile构建镜像 启动镜像 测试访问tom ...

  9. Gerrit代码审核服务器搭建全过程

    Gerrit代码审核服务器搭建全过程 转载请标明出处:http://blog.csdn.net/ganshuyu/article/details/8978614 环境:Ubuntu12.xx 1.建立 ...

最新文章

  1. 428 Setup MySQL + - 改
  2. Mybatis的几点小结
  3. ASP截取字符 截取字符之间的字符
  4. Hadoop/Spark生态圈里的新气象
  5. TensorRT(2)-基本使用:mnist手写体识别
  6. 记一次更改了电脑名称后遇到的各种错误反思及感想
  7. SAP Cloud for Customer Extensibility的设计与实现
  8. Expected one result (or null) to be returned by selectOne(), but found: 2
  9. 可以用img做参数的成功例子
  10. .net导出Excel设置颜色font.ColorIndex 各颜色编号
  11. sql 去掉重复的数据
  12. 11款免费而强大的PCB设计软件 还用什么AD PADS?
  13. 如何区分前后端 BUG
  14. CSS学习05:文字段落排版
  15. linux定制欢迎界面motd,linux 界面 /etc/motd
  16. 孩子教育,不要只看重分数!
  17. JS-BFA算法及ui实现
  18. 诺奖背后的一位女性:伯莎·冯·苏特娜
  19. 提升产品创新能力,试试斯坦福大学设计思维模型
  20. JS Proxy (代理)

热门文章

  1. java混淆of_java – 是否有任何级别的混淆可以“欺骗”instanceof?
  2. mysql 8 强制修改密码_Mysql 8.0版本强制无密码进入+更改密码
  3. 贝叶斯网络+推理+近似推理+变分法
  4. 【LeetCode】【HOT】31. 下一个排列
  5. Centos/linux开放端口
  6. 《软件工程实践》第三次作业-原型设计(结对第一次)
  7. MPEG-4 压缩编码标准
  8. React Native Android原生模块开发实战|教程|心得|怎样创建React Native Android原生模块...
  9. zookeeper的集群配置
  10. vijos1325 桐桐的糖果计划