トークンレベルSZZの提案と評価

SZZという手法は、ソフトウェア開発で「どの変更がバグを生んだのか」を突き止めるための標準的な方法として広く使われています。SZZはGitのようなソースコード管理システムを使って、コードの変更履歴(コミット履歴)をさかのぼる必要があります。しかし、これらのシステムは「行単位」の変更しか記録しないため、履歴に偏りが生じ、正しくバグの原因を追跡できないことがあります。

そこで私たちは、より細かい「トークン単位」(単語や記号レベル)の変更を使った場合に、SZZの精度がどうなるかを調べました。68のオープンソースプロジェクトを対象に実験したところ、行単位では見逃してしまう2件の「バグを生んだコミット」を新たに発見できました。また、人手による確認では、コードの整形や空白の変更など、本来バグと関係ないコミットを誤って検出してしまうケースも減らせることがわかりました。

ただしその一方で、全体の精度(F1スコア)を指標とした場合、0.081ポイント分下がるというトレードオフも見られました。まとめとして、トークン単位と行単位の追跡を比べたときの「3つの利点」と「5つの注意点」を整理しました。