プログラマを装ったボットがコードのエラーを修正する

Repairnatorの自動化されたプログラマーは、人々を誤解させるほどのパッチを作成しました



「死と税金の必然性を除いて、この世界で明確に述べることはできません」と1789年にベンジャミン・フランクリンは書きました。彼が今日生きていたとしても、リストに誤りを加えることができました。



現代のコンピュータープログラムは非常に複雑であるため、開発プロセス中に必然的にエラーが発生します。 したがって、それらを修正するパッチの検索と作成は、ソフトウェア開発スケジュールの通常の部分です。 そのようなサービスを開発者に提供している会社もあります-たとえば、Travis。



しかし、バグを見つけてパッチを作成するのは長いビジネスであり、かなりのリソースを消費します。 さまざまな研究者がこのプロセスを自動化するボットを開発しましたが、通常は動作が遅いか、検査に合格しない低品質のコードを生成します。 そのため、開発者はエラーをスキャンしてパッチを書き込む高速で高品質のボットに依存したいと考えています。







今日、彼らの夢は、スウェーデンのストックホルムにある王立工科大学のMartin Monperasと彼の友人たちの仕事のおかげで実現しました。 彼らはついに、バグを探し、質の高いパッチを作成する人々と競争できるボットを作りました。



連中はRepairnatorボットに名前を付けてテストを成功させ、修正を求めて人間のプログラマーと競うことができました。 「これは、自動プログラム修正の研究で人々と競合する道のりの重要なマイルストーンです」と彼らは言います。



コンピュータサイエンティストは、パッチの作成プロセスを自動化する可能性を以前から認識しています。 ボットがこの仕事を人間と同じくらい迅速かつ効率的に行えるかどうかは明らかではありません。



そのため、Monperasと同社は、ボットを人間の開発者に偽装し、バージョン管理を使用したプログラミングサイトGitHubのパッチの開発でボットを競合させることにより、ボットをテストすることにしました。 「Repairnatorの重要なアイデアは、アセンブリのバグを修正するパッチを自動的に作成し、開発者である人々に見せ、開発者がこれらのパッチをコードに含める価値のあるものとして受け入れるかどうかを確認することです」



チームは、GitHubのラボでLuc Esapeをプログラマーとして登録しました。 「ルークはプロフィール写真を持っています。彼はジュニア開発者のように見え、GitHubでのオープンソースの開発に貢献したいと思っています」と彼らは言います。



実際、ルークは覆面修理業者です。 モデレーターはボットと人々の仕事をさまざまな方法で評価する傾向があるため、欺ceptionが必要でした。 「人々の競争力の科学的仮説を検証するには秘密が必要でした」とモンペラス氏は、何が起こっているのかをすべての関係者に既に通知していた会社と語った。



チームは、Repairnatorをチェックするために2つのアプローチを行いました。 最初のテストは、2017年2月から12月にかけて、GitHubがバグを探して14,188プロジェクトの恒久的なリストでRepairnatorを開始したときに行われました。 「私たちのプロトタイプは、1日に約30回の修正を試行できることがわかりました」と彼らは言いました。



この間に、Repairnatorはエラーのある11,500以上のプロジェクトを分析しました。 彼は3,000以上のケースでエラーを再現することができました。 15件のケースで、彼はパッチを開発することができました。



しかし、これらのパッチはどれもアセンブリに受け入れられませんでした。Repairnatorが長すぎるか、許容できない品質のパッチを作成したためです。



2番目のアプローチはより成功しました。 チームは2018年1月から6月までTravis継続的インテグレーションサービスの作業にルークを派遣しました。チームはRepairnatorで変更内容を正確に指定しませんでしたが、1月12日にモデレーターがアセンブリに受け入れた最初のパッチを書きました。 「言い換えれば、Repairnatorは最初に人間のレベルに到達することができました」と彼らは言います。 次の6か月で、Repairnatorはモデレーターによって受け入れられた5つのパッチを発行しました。



新世代のソフトウェア開発手法への道を開く印象的な成果。 また、興味深い質問も発生します。 開発者は、5月12日にEclipse / dittoプロジェクト用にRepairnatorが開発したパッチに注意を払っています。



その後、プロジェクトの開発者の1人から「Eclipse Foundation Contributorライセンス契約に署名したユーザーからのプールリクエストを受け付けます」という手紙を受け取りました。



これは、ボットがライセンス契約に署名できないため、不快な問題を引き起こします。 「誰が知的財産を所有し、誰がボットの貢献に責任を持ちます。ボットのオペレーター、ボットの作成者、修正アルゴリズムの設計者ですか?」開発チームは尋ねます。



これらの種類の問題は、人々とボットがさらに協力する前に解決する必要があります。 しかし、モンペラスと彼のチームは未来について楽観的です。 「Repairnatorはボットと人々がシームレスに協力し、ソフトウェアの欠陥を見つけるパートナーになる将来のソフトウェア開発のプロトタイプであると考えています」と彼らは言います。



有名な発明家であるフランクリン自身は、何が起こっているのかにきっと感心するでしょう。



All Articles