原始碼審查

来自维基百科,自由的百科全书

原始碼審查是指對電腦原始碼系統化地審查,常用軟體同行評審的方式進行,其目的是在找出及修正在軟體開發初期未發現的錯誤,提升軟體品質及開發者的技術。原始碼審查常以不同的形式進行,例如結對程式設計、非正式的看過整個程式碼,或是正式的軟體檢查[1]

簡介

藉由原始碼審查可以找到及移除像是格式化字串攻擊英語Format string attacks競爭危害記憶體流失緩衝區溢位電腦安全隱患,因此提昇代碼的安全性。基於Subversion(可能是Trac或是Redmine)、MercurialGit或其他軟體的線上軟體庫可以允許協同審查代碼,而且有些協同原始碼審查工具可以簡化原始碼審查的過程。

自動化原始碼審查軟體英語code reviewing software可以系統化的檢查原始碼中是否有已知的電腦安全隱患,可以減少大量原始碼審查的工作。

卡珀斯·瓊斯(Capers Jones)分析了超過12,000個軟體開發項目,其中使用正式原始碼審查的項目,潛在缺陷發現率約在60-65%之間,若是非正式的原始碼審查,潛在缺陷發現率不到50%。大部份的測試,潛在缺陷發現率會在30%左右。[2]

一般的原始碼審查速度約是一小時150行程式碼,對於一些關鍵的軟體(例如安全關鍵系統的嵌入式軟體),一小時審查數百行程式碼的審查速度太快,可能無法找到程式中的問題[3][4]。原始碼審查一般可以找到及移除約65%的錯誤,最高可以到85%[5]

也有研究針對原始碼審查找到的缺陷類型進行分析。原始碼審查找到的缺陷中,有75%是和電腦安全隱患有關。對於產品生命週期很長的軟體公司而言,原始碼審查是很有效的工具[6] [7]

分類

原始碼審查一般會分為三類:正式的原始碼審查、結對程式設計、以及輕量型的非正式原始碼審查[1]

正式的原始碼審查(例如范根檢查法)有審慎及仔細的流程,由多位參與者分階段進行。正式的原始碼審查是傳統審查代碼的方式,由軟體開發者參加一連串的會議,一行一行的審查程式碼,一般會使用列印好的原始碼。正式的原始碼審查可以徹底的找到程式中的缺陷,但需要投入許多的資源。

結對程式設計是兩個程式設計師在一個電腦上共同工作,一個輸入程式,另一個工程師審查他或她所輸入的程式,結對程式設計是在極限編程中常見的開發方式。

輕量型的非正式原始碼審查需要投入的資源比正式的原始碼審查要少,一般會是在正常軟體開發流程中同時進行,有時也會將結對程式設計視為輕量型原始碼審查的一種。

  • Email往返:在代碼登入後,原始碼管理系統自動將代碼郵寄給審查者。
  • 配合輔助工具的原始碼審查:作者及審查者利用配合原始碼審查的軟體進行審查。

書籍Best Kept Secrets of Peer Code Review中曾提到有關原始碼審查的案例研究,這個研究發現輕量型原始碼審查所找到的缺陷會比正式的原始碼審查要少,但其速度較快,其成本也較低。

評論

以往正式的原始碼審查在審查的準備及進行時都需要投入許多的資源。

代碼分析工具的使用可以協助原始碼審查。尤其是一些整合在整合開發環境(IDE)下的工具,可以直接提供程式開發者有關編程標準相容的回饋。

相關條目

參考資料

Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.