Coda

論文メモ When and Why Your Code Starts to Smell Bad

August 21, 2020

200件のAndroid, Apache, EclipseのOSSプロジェクトのコミット履歴を調査し、不吉な匂いが生じる原因と理由を調査した。 常識では、改修の繰返しによって匂いのない既存のコードに匂いが生じると考えられているが、これに反して、不吉な匂いのするコードのほとんどが作成時点で不吉な匂いを出していたことを明らかにした。

先行研究を実装したツールで半自動的に不吉な匂いを特定した。 次の5つの不吉な匂いが調査対象にされた。 調査したコミット数は50万件であり、そのうちの9164件が不吉な匂いを含むと判定された。

コミットごとに不吉な匂いに関連する表2のメトリクスを測定し、メトリクスを予測よりも悪化させたコミットを不吉な匂いと判定した。 予測には回帰モデルを使用した。 図1は不吉な匂いを特定する例であり、コミットとLOCの変遷を示す。 黒丸は実際の変化を示し、黒の直線は予測に対応する。 この場合は、予測を越えるC3, C5, C7が不吉な匂いを含むコミットと判定される。 table2 identification

不吉な匂いを生む理由を調べるために、不吉な匂いを含むコミットの目的、プロジェクトと開発者の状況について調査した。 次の表3は、これらの目的と状況の区分を示す。 JIRAやBUGZILLAで管理されているタグやコミットメッセージを解析してコミットの目的を調査した。 開発者の仕事量(workload)は、コミット量で推定された。 table3

以上の調査をもとに分かったことをまとめると次の4つになる。