BT

Coverity: オープンソースコードの不具合件数は商用コードを下回る

| 作者: Abel Avram フォローする 7 人のフォロワー , 翻訳者 渡嘉敷 満理子 フォローする 0 人のフォロワー 投稿日 2012年3月13日. 推定読書時間: 2 分 |

原文(投稿日:2012/03/06)へのリンク

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となった。

この調査の全体的な結果から、静的解析などの自動テストによってコードの不具合件数が減ることは明らかだ。

この記事に星をつける

おすすめ度
スタイル

こんにちは

コメントするには InfoQアカウントの登録 または が必要です。InfoQ に登録するとさまざまなことができます。

アカウント登録をしてInfoQをお楽しみください。

あなたの意見をお聞かせください。

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする
コミュニティコメント

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

ディスカッション

InfoQにログインし新機能を利用する


パスワードを忘れた方はこちらへ

Follow

お気に入りのトピックや著者をフォローする

業界やサイト内で一番重要な見出しを閲覧する

Like

より多いシグナル、より少ないノイズ

お気に入りのトピックと著者を選択して自分のフィードを作る

Notifications

最新情報をすぐ手に入れるようにしよう

通知設定をして、お気に入りコンテンツを見逃さないようにしよう!

BT