ソフトウェア工学研究の日々

ソフトウェア工学の学術研究を紹介しています。ソフトウェア開発に関する調査と実験が大好きです。

ソースコード差分を集めるための git diff では --histogram を使うべき

当研究室博士後期課程の Yusuf Sulistyo Nugroho さんが発表した、言いたいことは論文のサブタイトル("Use --histogram for code changes")で終わっている論文です。オープンアクセスとなっているので、どなたでも全文をダウンロードできます。

link.springer.com

git diff では使用するアルゴリズムをいくつかから選ぶことができます(参考:Git のオプションをまとめられている方の記事)。この論文では、アルゴリズムを histogram にした場合としない場合でどちらが良いか、また、そのような差が、diff をベースにしてバグが最初に導入された原因コミットを特定する技術(を使った各種研究)に影響する可能性を議論しています。

研究のアプローチは、21,590件の変更に対して、母集団を代表できるよう377件をサンプリングして、それらを手作業で調査する、という方式での調査となっています。画期的な方法があったわけではなく、地道な調査です。

結果として、diff アルゴリズムの結果は劇的に違うわけではないが、histogram のほうが良い、と報告しています。この報告の影響で、git の Windows Explorer への統合等の UI を提供している gitextensions プロジェクトでも histogram をサポートされるようになりました。以下の issue として論文(の著者最終版)が引用されています。

github.com

Git のオプション自体はこの研究を行う前から存在していたので、やったことだけを見ると「オプション機能1つの効果を調べた」という一風変わった論文となりました。様々なソフトウェア工学の研究で Git が基盤ツールとして使われるから、重要性を査読者に高く評価してもらえたのだと思います。

 

[修正履歴] 記事タイトル「Git の diff では」を「ソースコード差分を集めるための git diff では」と変更しました。この研究はリポジトリマイニング技術の適用場面に関するものであって、状況によって他のオプションが優れている可能性までは否定していないためです。