Pharicator 是FB的代碼審查工具,主要開發者為Evan Priestley,是一個開源軟件,可在Apache許可證第2版下作為自由軟件分發。詳細信息可查看官方文檔。這里從應用的角度,一步一步來談怎么使用Pharicator進行代碼審查。
1.安裝
安裝分為兩部分:服務端和客戶端。服務端的這里不介紹了,大家可參考 官方文檔 進行操作。
第一步:將Arcanist的源碼拷貝到本地。新建一個目錄,用於保存源碼。然后cd到該目錄下,執行如下指令:
git clone https://github.com/phacility/libphutil.git git clone https://github.com/phacility/arcanist.git
第二步:將arc的路徑加入到系統路徑中。打開第一步下載源碼的路徑,找到arcanist/bin 目錄,pwd 打印一下路徑,並復制該路徑。執行命令:
nano ~/.bash_profile
添加復制的路徑到PATH中,如下所示:
當然,如果您對環境變量配置很熟悉的話,也可在Finder中打開該文件,直接編輯,不需要通過命令行工具來編輯。
第三步:查看是否安裝成功。命令行中輸入指令:
arc help
正確安裝和配置后,結果如下圖(截圖只是一部分內容):
【說明】:如果您什么都是正常操作的,執行上面指令,出現的結果如下所示:
那不妨先試試這個指令:
source ~/.bash_profile
2.配置
2.1全局配置
配置arc的默認編輯器,例如使用vim:
arc set-config editor "vim"
配置默認的phabricator的uri(uri為團隊的Phabricator主頁的url):
//http://phabricator.example.com為團隊主頁的URL arc set-config default http://phabricator.example.com
2.2項目配置文件
在項目的根目錄下建 .arcconfig
配置文件,文件中可填入以下內容:
{ "project_id" : "your project name", "conduit_uri" : "your phabricator url" }
常用配置項如下:
phabricator.uri
: 唯一,Phabricator 安裝的網址,本地連接該網址,並傳遞提交信息上去供審查;repository.callsign
: 在Diffusion
中創建倉庫時的callsign;
history.immutable
: 配置arc
是否能修改working copy
的歷史。默認情況下,arc可以在git上重寫一些沒有發布的提交歷史;load
: 添加額外的Phutil
庫;https.cabundle
: 在使用https時,選擇一個https的證書;lint.engine
: 配置項目中 鏈接規則,使用一個ArcanistLintEngine
的子類;unit.engine
: 配置項目中單元測試的規則,使用一個ArcanistUnitTestEngine
的子類;http.basicauth.user
: 連接到Phabricator
的用戶賬號;http.basicauth.pass
: 連接的密碼;https.blindly-trust-domains
: 使用https時,信任的domain
的列表。
2.3安裝證書
當前面步驟執行完成,我們修改代碼,執行“arc diff”,有可能出現如下提示信息:
執行按照命令行的提示,執行如下指令:
arc install-certificate
此命令需要輸入token,瀏覽器打開命令行中提示的URL,復制粘貼token即可。切記使用自己的賬號登錄。
按照指令提示,完成證書安裝,用於Phabricator的認證。
其他更多關於配置的信息,可查看 這篇文章。
3.使用
3.1查看幫助文檔
//加參數 --full 查看所有命令的詳細用法,查詢具體的命令,可在指令后面接具體的 [COMMAND] arc help [--full | [COMMAND]] //示例: arc help diff
3.2提交審查
cd到項目目錄,執行指令:
arc diff
arc會根據提交信息和hash值等信息來判斷在執行arc diff
命令時,是在創建一個 revision
還是在更新一個revision
,當然也可以手動指定:
arc diff --create # Force "create" arc diff --update <revision> # Force "update"
執行“arc diff”指令后,會進入如下頁面:
輸入“y”,按回車繼續,進入下面這個頁面:
意思是輸入提交信息,填寫本次的修改內容,按"a"進入編輯模式,編寫完信息之后,按“ESC”鍵,輸入“:wq”退出。退出之后,會進入如下頁面:
這里對需要填寫的信息做一個解釋:
- 開頭(最上面):本次修改的詳細描述,必填,可以換行(從第一行到Summary行)。
- Summary: 本次修改的簡短描述,必填。
- Test Plan: 詳細說明測試計划,必填。
- Reviewers: 審查人的賬戶,多個使用","隔開。可以不填,之后打開Phabricator補上。需要注意的是賬戶不能包含代碼提交者。
- Subscribers:非必填訂閱人,多個使用","隔開。
填寫完信息,退出之后,進入這個頁面:
在瀏覽器中打開上面的URI,可以看到詳細的修改記錄,審查人可以查看代碼更改情況,進行審查。
審查通過后,可以通過如下指令提交代碼到遠程分支。
arc land
如果審核沒有通過,命令行會出現如下提示信息:
正常結果返回如下所示:
3.3用戶身份
3.3.1審查者
如上圖所示,審查者可以進行如下操作:
- Comment:評論。針對某行代碼進行評論,直接點擊代碼行便會彈出
- Accept Revision:接受變更。經過幾次Comment溝通后,代碼已完善,通過審核
- Request Changes:不行,代碼需要繼續修改。
- Resign as Reviewer:重新指定審查代碼的人。
- Commandeer Revision:字面意思是將這個Revision據為己有的意思,實際上這個時候Reviewer的身份已經變為Owner的身份了,不能再進行Review了,但是Comment還是可以的。
- Add Reviewer:添加審查人。
- Add Subscribers:添加訂閱者。
3.3.2被審查者
如上圖所示,被審查者可以進行如下操作:
- Comment:評論。針對某行代碼進行評論,直接點擊代碼行便會彈出。
- Abandon Revision:廢除版本。廢除后,這個版本就不需要再審核了。
- Plan Changes:計划變更,發現了一些問題或者需求變更,正在改。
- Add Reviewer:添加其他審查人。
- Add Subscribe:添加訂閱者。
4.修改BUG
比如說當前在master分支:
- git checkout -b fix_abc # 先開 local branch 再修改
- git commit # 產生 commit C1(可以在Tower中操作)
- arc diff master # 送出 code review 請求 D1
- (在 branch fix_abc) arc land 或者是 (arc land --onto master)
- git checkout fix_abc
- ( 修改后 ) git commit --amend # 使用 amend,不要新增 commit
- arc diff master # arc diff 要指定同樣的范圍,若范圍和之前不同,會弄亂 phabricator 的記錄。