MELT: Mining Effective Lightweight Transformations from Pull Requests

要約

ソフトウェア開発者は API の更新に苦労することが多く、時間がかかり、エラーが発生しやすい手動プロセスが必要になります。
MELT は、一般的なライブラリ リポジトリのプル リクエストから軽量の API 移行ルールを直接生成する新しいアプローチです。
私たちの重要な洞察は、オープンソース ライブラリにマージされたプル リクエストは、API 移行ルールをマイニングするのに十分な豊富な情報源であるということです。
ライブラリ ソースからマイニングされたコード サンプルと、プル リクエストに基づいて自動生成されたコード サンプルを活用することで、構造コードの検索と置換のための言語である \comby の変換ルールを推測します。
単一のコード例から推測されるルールは具体的すぎる可能性があるため、ルールをクライアント プロジェクトにより適用できるようにするための一般化手順を提案します。
MELT ルールは構文主導で、解釈可能で、簡単に適応できます。
さらに、これまでの研究とは異なり、私たちのアプローチではルール推論をライブラリ ワークフローにシームレスに統合できるため、クライアント コードの移行を待つ必要がなくなります。
4 つの人気のあるライブラリからのプル リクエストで MELT を評価し、プル リクエスト内のコード サンプルから 461 の移行ルールと、自動生成されたコード サンプルから 114 のルールをマイニングすることに成功しました。
一般化手順により、マイニングされたルールの一致数が 9 倍に増加します。
これらのルールをクライアント プロジェクトに適用してテストを実行したところ、警告の数が全体的に減少し、いくつかのテスト ケースが修正され、現実のシナリオにおける MELT の有効性が実証されました。

要約(オリジナル)

Software developers often struggle to update APIs, leading to manual, time-consuming, and error-prone processes. We introduce MELT, a new approach that generates lightweight API migration rules directly from pull requests in popular library repositories. Our key insight is that pull requests merged into open-source libraries are a rich source of information sufficient to mine API migration rules. By leveraging code examples mined from the library source and automatically generated code examples based on the pull requests, we infer transformation rules in \comby, a language for structural code search and replace. Since inferred rules from single code examples may be too specific, we propose a generalization procedure to make the rules more applicable to client projects. MELT rules are syntax-driven, interpretable, and easily adaptable. Moreover, unlike previous work, our approach enables rule inference to seamlessly integrate into the library workflow, removing the need to wait for client code migrations. We evaluated MELT on pull requests from four popular libraries, successfully mining 461 migration rules from code examples in pull requests and 114 rules from auto-generated code examples. Our generalization procedure increases the number of matches for mined rules by 9x. We applied these rules to client projects and ran their tests, which led to an overall decrease in the number of warnings and fixing some test cases demonstrating MELT’s effectiveness in real-world scenarios.

arxiv情報

著者 Daniel Ramos,Hailie Mitchell,Inês Lynce,Vasco Manquinho,Ruben Martins,Claire Le Goues
発行日 2023-08-28 16:21:52+00:00
arxivサイト arxiv_id(pdf)

提供元, 利用サービス

arxiv.jp, Google

カテゴリー: cs.AI, cs.SE パーマリンク