2014年6月29日日曜日

ビルド失敗の原因は?

Googleと香港科技大学、ネブラスカ大学が共同で、ソフトウェアのビルド失敗が発生する頻度や原因、修正の手間について調査・分析を行ったそうだ(論文: PDF ITworldの記事)。 

調査はGoogleの開発者18,000人が9か月間に実行したC++とJavaのビルド結果2,660万回分を対象に行われた。ビルド失敗率の中央値はC++が38.4%、Javaが28.5%となった。C++の開発者は多くがテキストエディターで作業するのに対し、Javaの開発者は多くがIDEで作業するため、IDEに組み込まれたチェック機能が役立っているとみられるとのこと。 

ビルド失敗の原因はコンパイラーのエラーメッセージごとに集計。さらに「依存関係エラー」「型の不一致」「シンタックスエラー」「セマンティックエラー」「その他」の5つのカテゴリーにまとめている。最も多かったのは依存関係エラーで、C++が52.68%、Javaが64.71%となる。なお、Javaでは変数名のミスタイプでも出力される「cant.resolve」が依存関係エラーに含められている。「cant.resolve」はJavaのコンパイルエラーの中で最も多い43.25%を占めるが、原因の4分の3をミスタイプとして除外してもカテゴリーごとの順位は変動しないという。C++ではJavaと比べてシンタックスエラーが多い点が目立つ。ここでもIDEの使用率の違いが出ているようだ。 

エラーの修正時間の中央値はC++が5分、Javaが12分となっている。修正時間としては、最初のビルド失敗からビルドが成功するまでの時間を使用しているが、開発者が途中で別の作業を始めてしまった場合や、帰宅してしまった場合などには意味のないものになってしまう。そのため、解決までに12時間以上かかったビルドは除外している。さらに、複数種のエラーをまとめて修正する場合は、エラーの種類ごとに修正時間を区別するのは難しいので、1種類のエラーのみが原因のビルドに絞り込んで集計したとのこと。 

0 件のコメント:

コメントを投稿