使用Phabricator進行代碼審查


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審查者

如上圖所示,審查者可以進行如下操作:

  1. Comment:評論。針對某行代碼進行評論,直接點擊代碼行便會彈出
  2. Accept Revision:接受變更。經過幾次Comment溝通后,代碼已完善,通過審核
  3. Request Changes:不行,代碼需要繼續修改。
  4. Resign as Reviewer:重新指定審查代碼的人。
  5. Commandeer Revision:字面意思是將這個Revision據為己有的意思,實際上這個時候Reviewer的身份已經變為Owner的身份了,不能再進行Review了,但是Comment還是可以的。
  6. Add Reviewer:添加審查人。
  7. Add Subscribers:添加訂閱者。

3.3.2被審查者

如上圖所示,被審查者可以進行如下操作:

  1. Comment:評論。針對某行代碼進行評論,直接點擊代碼行便會彈出。
  2. Abandon Revision:廢除版本。廢除后,這個版本就不需要再審核了。
  3. Plan Changes:計划變更,發現了一些問題或者需求變更,正在改。
  4. Add Reviewer:添加其他審查人。
  5. 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)
提交之后,可以切回master分支做別的事情,要land前需要先切回fix_abc。
如果review有修改,需要更新commit:
  • git checkout fix_abc
  • ( 修改后 ) git commit --amend   # 使用 amend,不要新增 commit
  • arc diff master # arc diff 要指定同樣的范圍,若范圍和之前不同,會弄亂 phabricator 的記錄。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM