程式碼審查的演變:從正式檢查到現代實踐

理解從傳統到現代方法的轉變之旅

在部署前審查程式碼的實踐在過去五十年間經歷了劇烈的變化。起初作為一個正式的品質保證流程,在1970年代中期逐漸演變成一個輕量但強大的機制,成為現代軟體開發流程中不可或缺的一部分。理解這一演變有助於從業者認識為何程式碼審查工具在當代開發環境中變得如此重要。

基礎:正式的程式碼檢查

Fagan在1970年代中期引入了正式的程式碼檢查,建立了一套結構化的品質保證方法,並在2000年代初期主導了該領域。在1980年至2008年間,有關程式碼檢查的研究達到高峰,尤其在1990年代末至2004年之間,平均每年發表14篇論文。然而,從2005年至2008年,出版興趣急劇下降至每年僅4篇論文——這一轉變標誌著業界對程式碼品質看法的轉折點。

這一下降與2007年左右出現的現代程式碼審查(MCR)同步,並在2011年開始穩步成長。研究社群的焦點也從閱讀技術、效能衡量和缺陷估算,轉向流程優化與工具。值得注意的是,傳統的檢查研究對工具的關注甚少,只有約10%的研究(16篇中的153篇)探討了這一層面——這一空白最終由MCR及其配套的程式碼審查工具來彌補。

現代程式碼審查:科技驅動的轉變

現代程式碼審查源於對高效且輕量品質保證的實務需求,與2010年左右興起的持續整合(CI)和持續部署(CD)(CI/CD)完美契合。與正式檢查不同,MCR本質上是由科技驅動,工具如Gerrit、GitHub和GitLab直接整合於版本控制系統中。

MCR的工作流程包括六個基本步驟:程式碼作者準備變更並附上描述和拉取請求;專案負責人根據專業和可用性指派審查者;審查者收到通知;他們檢查程式碼中的缺陷與改進點;作者與審查者進行非同步討論;最後,變更被批准、拒絕或退回修正。

在開源與商業開發環境中,MCR扮演不同角色。開源社群重視與核心維護者建立關係,透過審查來促進合作;而商業組織則著重知識傳播。兩者皆受益於能夠簡化溝通、維持歷史記錄並促進明智決策的程式碼審查工具。

促使當前研究的關鍵問題

MCR流程的每個階段都提出了重要問題:最佳的拉取請求大小以提升審查效率?如何將大型變更拆解?哪些審查者選擇啟發式最有效?如何合理分配審查時間?哪些自動缺陷檢測功能能輔助人工審查?能否更有效地促進共識建立?

這些問題引發了大量學術研究,但少有研究能將研究結果與實務需求連結起來。

最新文獻調查:碎片化的景觀

自2019年起,研究社群加強了對MCR的關注,在短短的(2019-2021)期間內產生了六份不同的文獻調查。一份2019年的映射研究整理了2007-2018年間的177篇論文,揭示了主要的研究主題:MCR流程、審查者特性與選擇、程式碼審查工具、源碼特性,以及審查評論分析。

後續的調查則補充了不同的發現:一項研究歸納出九個效益群組(軟體品質、知識交流、團隊動態、風險最小化);另一項則聚焦於審查者推薦系統,發現多數方法依賴啟發式或機器學習,但面臨泛化能力的挑戰;第三則在教育情境中研究MCR,發現其在技能發展與產品品質上具有益處。

一份2021年的綜合分析識別出1381個主要研究,將MCR研究分為三類:基礎(理解實務)、提案(改善實務)與評估(衡量實務)。值得注意的是,評估與驗證研究佔據主導地位,較少研究提出實務解決方案。

實務者的觀點差距

這裡存在一個重要的研究契機:雖然多份文獻調查記錄了學術界的研究景觀,但幾乎沒有系統性收集實務者對這些研究結果的意見。相較之下,自2000年代早期起,較高水準的軟體工程研究透過實務者調查獲得了寶貴的見解——在ICSE、ESEC/FSE、ESEM等頂級會議中,研究被實務者正面評價的比例約為67-71%,但與引用次數的相關性較弱。

然而,一個持續的挑戰是:實務者難以發現並應用相關研究。需求工程的調查也呈現類似的模式,實務者重視那些具有具體問題相關性與解決方案實用性的研究。

( 連結研究與實務:未來的路徑

這個研究空白既是挑戰也是契機。MCR領域已產生大量學術成果,涵蓋工具支援、流程優化與團隊動態等多個議題,但這些研究的實務影響仍不明朗。實務者是否真正認為這些研究成果有價值?哪些MCR研究方向具有實際應用潛力?學術研究與產業需求之間的斷點在哪裡?

理解這些問題需要結合傳統文獻分析與直接的實務者意見調查——調查產業專業人士,了解哪些MCR研究結果最為重要、哪些問題尚未充分解決,以及程式碼審查工具與實踐在哪些方面最能從證據基礎的改進中受益。

從正式的程式碼檢查到現代程式碼審查的演進,代表了品質保證方法的真正進步。未來的發展必須聚焦於確保學術研究能轉化為更好的工具、流程與成果,幫助從業者在當代複雜的開發環境中取得更佳的成效。

查看原文
此頁面可能包含第三方內容,僅供參考(非陳述或保證),不應被視為 Gate 認可其觀點表述,也不得被視為財務或專業建議。詳見聲明
  • 讚賞
  • 留言
  • 轉發
  • 分享
留言
0/400
暫無留言
交易,隨時隨地
qrCode
掃碼下載 Gate App
社群列表
繁體中文
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)