人が書いたパッチを参考にしたミューテーションを行う APR ツール,PAR の論文. 各方面から批判されがち.
APRツールといえばGenProgが有名だが,GenProgは適当に文を選びそこからパッチを作るため,テストは通るけど正しくはないパッチを作る可能性が高い. そこで本論文では,人が書いたパッチをもとにミューテーションを行うAPRツールPARを提案している.
PARではまず人が書いたパッチを集めることから始まる. 本論文では,JDTから60,000個以上のパッチを集めてきて,それらを10パターンに分類している(nullチェッカ,etc). それをもとにミューテーションを行うらしい. 論文中ではPARは遺伝的アルゴリズムに基づいているって書いてた気がするけど,あんまり遺伝的感はない(ランダムサーチっぽい?). 実験結果から,PARはGenProgと比べて,より多くのバグを,より人に受け入れられる形で修正できていることを示している.
所感としては,まず実験対象がJavaであることに疑問を感じた. というのもオリジナルのGenProgはCを対象にしているので,比較対象のGenProgはJava向けに実装されたもののはず. もちろんJava向けのGenProgの再実装はいつかあるものの,それを参考文献として引いてる感じがなくて怪しい. また,人に受け入れられるパッチを生成したというが,それを判断した人の2/3は学生でありきちんとした評価ができているか疑問. パッチのパターンを人が用意しなければならないのも自動バグ修正っぽくない. これについては今だと機械学習でできそう.