Coverityの調査結果によれば、静的解析を用いたオープンソースコードの不具合件数は商用コードの件数をおおむね下回るが、同一規模のコードで比較した場合は同様の件数になるという。
Coverity Scanはオープンソースコードの完全性に着目した官民共同調査プロジェクトであり、2006年に米国国土安全保障省主導のもと、スタンフォード大学と共同で開始された。Coverity ScanはツールとしてCoverity Static Analysisを使用し、この5年間で300件余りのオープンソースプロジェクトのコード品質を評価、改善してきた。例えば、2006年にはこのツールによって6,000件を超えるオープンソースコードの不具合が修正された。
最近発表された2011 Scan Report (PDF)によれば、オープンソースプロジェクトに含まれる不具合件数は商用プロジェクトをおおむね下回るという。2011年を通じて行われたこの調査では、活発なオープンソースプロジェクト上位45件のソースコード(合計約3700万行)が解析された。解析は影響度が高または中レベルの不具合のみを対象に実施された。Q&Aテスト中やデプロイ後に見つかった不具合に関するデータは含まれていない。解析対象のプロジェクトはどれもCoverity Scanプログラムに参加しており、ソースコードに対して静的解析が行われた。
解析対象のオープンソースプロジェクトは、コード行数が10万~50万のものがほとんど(700万行を超えるプロジェクトが2つ)で、その合計コード行数は3,744万6,469行、平均コード行数は83万2,000行になった。静的解析などの自動テストを採用していない企業を対象とした業界平均欠陥密度(コード1,000行あたりの不具合数)がおよそ1.0であるのに対し、オープンソースプロジェクトの欠陥密度は0.45だった。
この検査は14種類の不具合を対象に行われた。次に示すのはオープンソースコードで見つかった上位5つの不具合だ。
不具合 | 件数 | 影響度 |
制御フローの問題 |
3,128 |
中 |
Nullポインタ参照 |
2,818 |
中 |
初期化されていない変数 |
2,051 |
高 |
メモリ破壊 |
1,551 |
高 |
エラー処理の問題 |
1,535 |
中 |
さらにこの調査では、静的解析を採用している41件の商用プロジェクトからおよそ3億行のコードを対象に(プロジェクトあたりの平均コード数は740万行)、様々な業界やコードサイズにわたった検査も実施された。その結果、同一規模のプロジェクトの場合、オープンソースコードの品質はプロプライエタリコードの品質に劣らないことがわかった。例えば、Linux 2.6(約700万行)の欠陥密度が0.62だったのに対し、プロプライエタリコードでは平均0.64となった。通常、Linuxの欠陥密度はこれよりも低い値を示すが、このような結果となった背景として、コードベースのサイズが2011年には530万行から680万行に増えたことがある。PHP 5.3およびPostgreSQL 9.1のコード1,000行あたりの欠陥密度は、それぞれ0.2、0.21となった。
この調査の全体的な結果から、静的解析などの自動テストによってコードの不具合件数が減ることは明らかだ。