Coverity:開源代碼比商業代碼缺陷少

fmms 12年前發布 | 8K 次閱讀 開源

Coverity的一項調查發現,在代碼量相當的情況下,使用了static analysis的開源代碼通常比商業私有代碼的缺陷少。

Coverity Scan是一個關注開源代碼完整性的公私合營的研究項目,于2006年由美國國土安全部(U.S. Department of Homeland Security)發起并與斯坦福(Stanford)大學合辦。在過去的五年中,Coverity Scan采用Coverity公司的static analysis工具評估和改進了300多個開源項目的代碼質量。比如在2006年,此工具就幫助開源代碼修復了6000多個Bug。

近期發布的2011 Scan報告(PDF) 顯示,開源項目的缺陷通常比商業私有項目少。該報告分析了2011年期間最活躍的前45個開源項目的代碼,總共37,000,000多行代碼,并且只有影 響級別為中或高的缺陷參與采樣分析。調研數據不涉及QA測試或后續發布過程中發現的缺陷。參與Coverity Scan計劃的所有項目的代碼都經過Coverity Static Analysis的測試和分析。

參與分析的開源項目的代碼行數大部分在100k-500k行之間,只有2個項目超過了7M行,總代碼量為37,446,469行,平均每個項目約 832,000行。開源項目的缺陷率為每千行代碼0.45個缺陷,而對于那些沒有采用自動測試工具比如static analysis的公司,行業平均值大約是每千行代碼1個缺陷。

Coverity Scan覆蓋了14種缺陷,開源代碼中位列前五的缺陷是:

缺陷 數量 影響

控制流問題

3,128

空指針異常

2,818

未初始化的變量

2,051

內存越界

1,551

錯誤處理方面的問題

1,535

調查同時覆蓋了41個使用了static analysis的商業私有項目。這些項目規模各異,也來自不同領域,總共超過300M行代碼,平均每個項目代碼量約有7.4M行。結果顯示,在項目規模 相當的情況下,開源代碼的質量與私有的持平。例如,Linux 2.6代碼大約有7M行,缺陷密度為0.62,私有代碼則大約為0.64。通常Linux的缺陷密度比較低,但其代碼量在2011年從5.3M增至 6.8M。作為參考,PHP 5.3和PostgreSQL 9.1的缺陷密度值則為每千行代碼0.2和0.21個缺陷。

綜合上述,此次調查清晰地表明,采用自動測試,包括static analysis,能夠很好地減少代碼缺陷的數量。

查看英文原文:Coverity: Open Source Code Has Fewer Defects than Commercial One
本文轉載自: http://www.infoq.com/cn/news/2012/03/Defects-Open-Source-Commercial

 本文由用戶 fmms 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!