ReviewBoard代碼評審經驗總結

jopen 10年前發布 | 104K 次閱讀 代碼分析/審查/優化 ReviewBoard

代碼評審
代碼評審(CodeReview),顧名思義是對代碼進行評審,是軟件工程的活動之一。
通過代碼評審可以保證代碼質量,促進團隊知識共享……好處多多。


版本控制與代碼評審

軟件工程的各個活動總是離不開工具的支持。

代碼評審工具首先必須和版本控制工具相結合的。

現在主流的兩種版本控制工具:SVN和GIT。


GIT有個Google開發的代碼評審工具Gerrit,可以在提交前進行代碼評審,評審通過之后才允許提交到版本庫。

其次,代碼托管平臺GitLab(號稱是GitHub的開源實現)也可以用來進行代碼評審。

如果版本控制工具是GIT,當然優先選擇用Gerrit或者GitLab來嘗試做代碼評審了。


但是如果版本控制工具是SVN呢?這目前還沒有發現很好的解決方案。

所以問題來了,在技術選型上,該選擇什么工具來進行代碼評審呢?


代碼評審工具選型

關于代碼評審,有很多支持工具,可以查看: 簡單實用的Code Review工具

商業版的代碼評審工具有: Atlassian CrucibleJetbrains Upsource

曾了解過上述大多數工具的使用,曾試過Crucible、Jupiter、ReviewBoard,最終綜合考量(如:流行度、易用度、文檔完善度)選擇了ReviewBoard。


ReviewBoard簡介

ReviewBoard是個開源的、可擴展的、友好的基于Web的代碼評審工具,是用Python框架Django開發的。

ReviewBoard的官方網站:https://www.reviewboard.org,其title為: Take the pain out of code review | Review Board

Take the pain out of code review 可以翻譯為:從代碼評審的痛苦中解脫出來

ReviewBoard的源碼托管在GitHub上: https://github.com/reviewboard/reviewboard

ReviewBoard的源碼也是通過ReviewBoard來進行評審的: https://reviews.reviewboard.org/

ReviewBoard的DEMO: http://demo.reviewboard.org/,可以通過DEMO簡單體驗下ReviewBoard的基本使用


ReviewBoard官方指南介紹

要了解ReviewBoard,最好的方式莫過于閱讀官方指南: https://www.reviewboard.org/docs/,ReviewBoard的官方指南有:

User Guide(用戶指南), Administration Guide(管理員指南),Web API Guide(Web API指南),Extending Review Board(擴展ReviewBoard)和 Frequently Asked Questions(常見問答FAQ)。

用戶指南的提綱:開始(包括代碼評審的介紹、一般工作流、賬戶設置)、使用評審請求(評審請求的創建、修改、發布、關閉等)、評審、搜索、使用MarkDown。

管理員指南的提綱:安裝、升級、優化、管理員UI、配置、擴展和站點管理。

Web API是RESTful架構,使得ReviewBoard可以用各種編程語言來集成。


ReviewBoard安裝及創建站點

ReviewBoard的安裝在互聯網上有很多博文分享,筆者的建議是 以官方指南為準,同時可以參考互聯網上的博文分享

例如,2.0版本在linux下安裝指南: https://www.reviewboard.org/docs/manual/2.0/admin/installation/linux/

在安裝完之后,是創建ReviewBoard站點: https://www.reviewboard.org/docs/manual/2.0/admin/installation/creating-sites/

可以創建多個ReviewBoard站點

筆者安裝過程中曾出現的問題及解決方式如下:


使用ReviewBoard進行代碼評審

代碼評審(CodeReview)一般有兩種形式:pre-commit-review,post-commit-review。
pre-commit-review是指代碼提交到代碼庫前進行代碼評審;
post-commit-review是指代碼提交到代碼庫后進行代碼評審。

ReviewBoard同時支持以上兩種形式,代碼的評審主要通過ReviewRequest(評審請求)來進行的。

其中pre-commit-review的工作流為: