Review Board的幾點使用體會

來源:互聯網
上載者:User

近期產品線研發體系正式將Review Board這款優秀的基於Web的程式碼檢閱開源工具引入到開發過程中,作為產品線內各項目組進行程式碼檢閱的協助工具輔助。我對Review Board近兩年多的關注總算沒有白費,算是有了一個還算不錯的結果。不過Review Board的正式使用並不代表一種結束,反而恰恰是一個新的開始。我們下一步要關注的是如何用好Review Board,讓它真真正正地為改善產品品質和開發效率出力。

在“關於線上程式碼檢閱的幾點考量”這篇博文中我提到了線上程式碼檢閱工具在開發過程中所處的角色、使用時機以及使用時的注意事項,不過當時也多是憑直覺有感而發。真正用了Review Board這樣的評審工具後,有些想法還要進一步細化。

的確,我們在近一個多月的使用過程中發現了許多問題,在公司內部我把這些問題以及解決方案整理成了一頁Wiki Page放到了產品線的知識庫中,這裡我也和大家分享一下。

下面是我整理的關於如何用好Review Board的一個Tips列表:

* 務必保持每個Review Request內容的內聚性
如果你提交一個Review Request,其中包含了對A庫的bugfix,給B庫增加一個新feature,以及對C庫重構的一段代碼,那你的這個Review Request就是不合格的。該Request內容上包含了三個不相干的內容,嚴重缺乏內聚,這會給後續評審帶來不良影響,諸如評審者關注點分散,效率下降;評審者不願理睬這種Request等等。對於上述的問題Request,建議拆分為三個Request,讓每個Request內容單一內聚。

* 請為你的Review Request設定評審結束時間
切記為每個Review Request設定一個有效評審時間範圍,否則你的評審將被視為永遠有效,這樣的Request久而久之就會變成"塑料製品垃圾"塞滿你的Dashboard。由於Review Board上似乎沒有設定評審截止時間的位置,所以一般可在Description中增加該Request對應的評審結束時間,例如加上:
"評審截止時間:2011-03-07 12:00"

* 保持你的Dashboard Clean,別忘了關閉你的Review Request
使用Review Board一段時間後,你就會發現你的Dashboard中有很多Incoming和Outgoing的 Requests,讓人心生不悅。建議大家在Request評審完畢或到期後關閉你發起的Request,保持Dashboard的clean。

在每個Request裡有一個close標籤,下面有三個選項:
 - summited 表示評審結束,代碼已經提交,不須繼續評審
 - discarded 丟棄的評審請求
 - delete permanently 應該刪除的請求
一般我們會用到summited。

* 請為評審請求選擇適當的干係人列表
每個評審請求都應該有特定的干係人列表,不要泛泛的發給Review Board系統中設定的所有Group。否則你既不會收到那些不相干人的有效評審,還幹擾了對方的工作。

一般來說發起程式碼檢閱請求前先要明確此次評審的目的,無非以下幾種或它們的組合:
 - 希望相關干係人找出代碼中的代碼邏輯缺陷;
 - 希望相關干係人找出代碼中的商務邏輯缺陷;
 - 分享你的代碼,將你的代碼中的美展現給大家。
明確了目的之後,想必你就應該清楚干係人列表中究竟該有誰了。

* 請評審者聚焦本次Request中的變動
在Review Board實際使用過程中,常常發現這樣的情況:某位同事發起一段針對遺留代碼修改的評審請求。很多評審者給出的一些評審意見針對的卻並非是本次修改的代碼,而是此次變更源碼檔案中的其他代碼。這樣可能會導致下面兩個問題:
 - 提交Request的評審人很可能無法修正非本Request之外的代碼問題;
 - 評審過程可能因此被拉長,很可能無法在截止時間內完成此次評審,甚至可能反覆多次,造成效率上的浪費。
針對這種情況,我們建議評審者聚焦本次改動。如果評審過程中發現其他非本次改動相關的問題,可通過向代碼所在的項目的Todolist或某種問題跟蹤系統提交一個issue/ticket,後續由該項目的主維護者統一安排處理。

最後說說post-review這個工具的使用。Review Board的原理其實就是評審diff檔案。一般情況下大家通過Review Board提供的web頁面提交自己手動產生的diff檔案,這種方法無可厚非。不過Review Board官方還推薦使用另外一種更有效率的方法,那就是使用post-review指令碼發起Review Request。以下內容描述了工作中常見的三種使用post-review工具的情形,前提是你已經將post-review安裝到你的主機上了。

* 在代碼Commit前發起評審請求
有些時候,項目要求代碼未經評審不允許commit到Code Repository中,這種情況我們稱之為pre-commit review。這種情況下可以這樣來發起一個Review Request,先在你的本地程式碼程式庫拷貝中完成對代碼的修改,然後進入到你的本地代碼目錄,執行:
post-review –server=http://xxx.xxx.xxx.xxx/reviews

post-review就會將目前的目錄以及其子目錄下所有變更作為一個diff提交到Review Board形成一個Request Draft等待你的發布。當然你也可以通過post-review直接設定Request的Descripton等欄位,並可通過增加–publish參數立刻發布該Request。

* 代碼commit後發起評審請求
有些時候,某些代碼是在提交到Code Repository後才評審的,這種情況我們稱之為post-commit review。我們可通過版本庫的revision number間的差異來構造Review Request,具體方法如下:
post-review –server=http://xxx.xxx.xxx.xxx/reviews –revision-range=n:m –branch=YOUR_REPOSITORY_PATH
當然你也可以不指定–branch,不過需要在你本地程式碼程式庫拷貝目錄下執行post-review。

* 更新已存在的評審請求
已經提交到Review Board的請求經過評審後,可能需要你再次修改代碼並更新diff檔案以繼續評審。這時你可以通過指定已存在的Review Request id的方式更新已存在Request的diff,方法如下:
post-review –server=http://xxx.xxx.xxx.xxx/reviews ….. –review-request-id=58

注意,如果你的unix/linux賬戶下設定了http_proxy環境變數,那麼在執行post-review之前需要將http_proxy設定為空白,否則post-review的請求將被代理攔截而失敗。

部門裡越來越多的人開始關注和使用Review B

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.