背景
目前上线前review的流程存在许多问题:
1、如果需求较大,一次性需要review的代码量巨大,成本太高,review粒度也不够
2、大家对于代码被review没有压力感,并不能从代码被review中提升自己
3、如果在上线前review出较多问题,修改的时间不好把控,往往会带着问题上线
解决方案
考虑到上述情况,为了更加切实提高代码质量,减少线上问题,接下来准备引入codeReview流程,流程图如下:
一、review工具
1、phabricator:review.heisea.cn/ \服务端配置的地址。
2、arcanist需要本地安装,安装方式:
1)依赖php,所以需要先安装一个php环境(mac自带了php,所以无需安装,windows的同学自行下载一个php进行安装)
2)找个位置新建一个目录并进入该目录,执行如下命令:
mkdir demo
cd demo
git clone https://github.com/phacility/libphutil.git
git clone https://github.com/phacility/arcanist.git
3)将arcanist的命令写入系统路径中:
export PATH="$PATH:/users/qiuwentian/desktop/www/arcanist/bin"
4)配置arc
arc set-config default "http://review.heisea.cn/"
arc set-config editor "vim"
5)认证phabricator,执行下列命令,获取token,验证成功后即可
arc install-certificate
二、arcanist常用命令
arc diff // 创建review任务
arc diff --nolint // 平台会执行lint校验,可以使用当前忽略
arc diff --update revision ID // 如果提交的review任务不通过,修改完成以后,执行此命令
arc land // 如果review通过,执行此命令,可将代码push到origin
arc land --revision revision ID // 多个任务时关闭提交任务
arc help // 查看arc命令介绍,加上--full可获取更详细的使用介绍
arc list // 查看当前review任务列表
arc get-config // 查看arc配置
arc set-config <key> <value> //配置arc
三、arcanist实际执行过程
1、执行arc diff以后会弹出以下页面(这里配置的是vim编辑器,如果不习惯也可以自行配置):
这个页面是review的任务相关message,主要包含:
Summary: 分支变更介绍
Test Plan:测试计划,主要是用来执行代码检查以及单元测试,我们暂时未使用,填skip即可
Reviewers:指定review人员,如果有多个,可用逗号隔开
Subscribers:跟踪人员,如 qiuwt(vpn 账号)
四项填写完毕以后,执行wq!保存更改,可以看到如下图所示过程则说明review任务已经创建成功,可以通知对应人员进行review:
2、对应的review人员打开phabricator.guahao-inc.com/differentia…这个地址,在【Ready to Review】这一栏中可以看到等待review的任务,点进去进行review。
3、根据【前端review规范】| 【后端review规范】进行review
4、如果发现问题,点击行号进行点评,并最终将状态设置为
5、开发人员发现自己的代码未被review通过,进行代码修改,然后重新commit代码,执行arc diff --update
6、此处有个细节需要注意,执行完命令后,会提示你是否使用原来的配置,输入y即可,同时要记住git commit -m '这里不要为空',否则无法提交,进入vim界面后,直接q返回即可进入下一步
7、review人员再次进行review,一直到通过为止,选择accept commit
8、开发人员执行arc land将代码提交到远程仓库(tips:一定要保证远程存在该分支,否则此命令会默认将该分支推送到origin/master,一定要注意!!!)
9、over
四、已见问题
Q:执行arc install-certificate,提示缺少.arcconfig文件?
说明你没有对arc进行全局配置!!!执行下列代码:
arc set-config default "http://review.heisea.cn/"
arc set-config editor "vim"
Q:如果某个分支只想给部分修改文件提交revision怎么办?
方案:1、首先我们并不建议这样做,实际场景很少
2、如果一定要做,最简单的做法是先commit你想提交的内容,剩余的贮藏,然后arc diff即可,最后恢复贮藏
Q:填写完任务相关的message 提示 "You must resolve these errors to continue. Do you want to edit the message? " review生成失败怎么办
方案: 只保留Summary、Test Plan、Reviewers、Subscribers填空项,下面全部删除
Q: export PATH="$PATH:/新建的目录/arcanist/bin" 后每次打开编辑器对都要执行一次?
A:~/.bash_profile 路径添到这里--mac
window 添加到环境变量中
Q:安装了php运行cmd php 确找不到 --win
A:这是由于未配置配置环境变量的原因
1. 首先到php官网下载
2. 将解压后的php文件夹放到E:\Program Files文件夹下面
3. 右击桌面上「计算机」,选择「属性」,选择「高级系统设置」,点击「环境变量」。
在系统变量中找到「Path」并双击,在变量值内最前端添加:E:\Program Files\php;
4:若还是为找到检查 php目录下的php.ini 或“php.ini-development”修改名为:php.ini
php.ini中找到(如下的自己没有设置)
;On windows:
;extension_dir = "ext"
将上面的后一句改为(注意去掉前面的分号,填写当前php的ext目录):
extension_dir = ":E:\Program Files\ php\ext"\
Q: 执行 arx diff 时出现 Exception
Failed to passthru proc_open(): proc_open(): CreateProcess failed, error code - 2
(Run with --trace for a full exception trace.) --win
A:需要添加管理员权限,可以右键使用管理员权限运行 bash或cmd