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

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

パッチ投稿経験が増えてもパッチに含まれる軽微な問題の個数は減らない

パッチを投稿してコードレビューを経験するほど、自分でパッチの問題に気付くことができるようになり、投稿パッチに含まれる間違いが減っていくのではないか。そんな仮説に基づいて、開発者のパッチ投稿回数(=経験値)と、パッチに含まれる軽微な問題の件数の関係を調べてみました。

Yuki Ueda, Akinori Ihara, Takashi Ishio and Kenichi Matsumoto: Impact of Coding Style Checker on Code Review -A case study on the OpenStack projects-

この論文では「手作業で直している軽微な問題(論文中では Manually Detected Issues)」を、Pylint のような静的解析ツールでは検出できず、レビューで直されているような修正として定義しました。いわゆるバグ修正のような大事なものは取り除きたかったので、ここでは1つのコード断片に収まっていて、しかも特定の文字種(アルファベットだけ、空白だけ、文字列だけ、など)の修正だけで直るようなもの、という便宜的な方法で抽出しています。この抽出方法は、過去の研究で目視での検査をしたときに、レイアウトの変更や変数名の変更など動作には変化がなさそうな変更をある程度の正確さ(文字種にもよりますが90%ぐらい)で取れることが分かっていたからです。

データセットには、ほかの研究と同じく、OpenStack のものを使っています。20回以上パッチを投稿したことのある人(1599人)に絞って分析しました。この人たちだけで80%ぐらいのパッチを投稿しています.

結果はというと、軽微な問題の累計数はパッチ投稿回数とともにだんだん増えていく、つまり経験に従って減っていく傾向などは出ませんでした。開発者はある一定の割合で間違いをするので、レビューを担当する人は、相手が誰であっても細かいミスがないかどうか、しっかりレビューすることが重要になります。

同時に調べた Pylint で自動的に検出できる問題 (論文中では Automatically Detected Issues)は高々1~3回でそれ以上は発生しなくなるので、こちらはツールをきちんと利用して、開発者側でうまく抑制している可能性があります。小さい誤りの混入を抑制するには、うまくツール化することが重要といえそうです。

なお、この結論は、「レビュアーはほとんど小さな誤りを見逃してない」 前提で書いてるもので、レビュアーが小さな誤りをほとんど気にせず素通しして、別途パッチを作って直しているのだと成り立たなくなります。このあたりは、レビューのデータにのみ頼っている調査の限界になります。