バグレポートとコミットのリンク付け

SZZアルゴリズムは、ソフトウェアの不具合を「いつ入り込んだか」を予測する研究で非常に重要な役割を果たしています。これまでの多くの研究は、このSZZを使って「不具合を生んだ変更(コミット)」を特定し、その情報を基に不具合予測モデルを作ったり評価したりしています。

SZZは大きく2つの段階から成り立っています。

  1. 課題管理システムにある不具合報告と、バージョン管理システムにある「不具合を直した変更」とを結びつける段階(これを ILA: Issue-Link Algorithm と呼びます)。
  2. その修正コミットをさかのぼって、「不具合を生んだ変更」を探し出す段階。

2つ目の段階には cregit というような既存のツールが利用できますが、1つ目の段階についてはさまざまな方法(ILA)が提案されているものの、同じ条件で大規模に比較した研究はこれまでありませんでした。つまり、「どのILAが一番正確なのか」については、まだ結論が出ていなかったのです。

そこで本研究では、文献調査で集めた10種類のILAを比較し、不具合修正コミットをどの程度正確に見つけられるかを調べました。さらに、ILAやその組み合わせを使った場合の不具合予測モデルの精度についても検証しました。5つのオープンソースプロジェクトで実験したところ、いずれのILAやその組み合わせでも「修正コミットの見落とし」による悪影響を防げることがわかりました。特に、自然言語の類似度、Phantomヒューリスティクス、ランダムフォレスト、サポートベクターマシンを組み合わせた方法が、統計的に最も高い精度を示しました。

最後に、実際にILAを活用する際のガイドラインをまとめ、推奨事項として提示しました。