AdaptivePaste: Code Adaptation through Learning Semantics-aware Variable Usage Representations

要約

ソフトウェア開発では、プログラマがコード スニペットをコピー&ペーストするか移植して、それをユースケースに適応させるのが一般的です。
このシナリオは、コード適応タスク (貼り付けられたコード スニペット内の変数識別子を周囲の既存のソース コードに適応させることを目的としたプログラム修復の一種) を起動します。
ただし、この課題に効果的に対処できる既存のアプローチは示されていません。
このペーパーでは、変数の使用パターンの意味のある表現を学習するための、トランスフォーマーと専用のデータフロー対応難読化解除事前トレーニング タスクに基づく、ソース コード適応への学習ベースのアプローチである AdaptivePaste を紹介します。
Python のコード スニペットのデータセットで AdaptivePaste を評価します。
結果は、私たちのモデルが 79.8% の精度でソース コードを適応させることを学習できることを示唆しています。
実際に AdaptivePaste がどれほど価値があるかを評価するために、10 人の Python 開発者と 100 の実世界のコピーアンドペースト インスタンスについてのユーザー調査を実行しました。
結果は、AdaptivePaste により滞留時間が手動でのコード適応にかかる時間のほぼ半分に短縮され、バグの回避に役立つことがわかりました。
さらに、参加者のフィードバックを利用して、AdaptivePaste を改善するための潜在的な手段を特定します。

要約(オリジナル)

In software development, it is common for programmers to copy-paste or port code snippets and then adapt them to their use case. This scenario motivates the code adaptation task — a variant of program repair which aims to adapt variable identifiers in a pasted snippet of code to the surrounding, preexisting source code. However, no existing approach has been shown to effectively address this task. In this paper, we introduce AdaptivePaste, a learning-based approach to source code adaptation, based on transformers and a dedicated dataflow-aware deobfuscation pre-training task to learn meaningful representations of variable usage patterns. We evaluate AdaptivePaste on a dataset of code snippets in Python. Results suggest that our model can learn to adapt source code with 79.8% accuracy. To evaluate how valuable is AdaptivePaste in practice, we perform a user study with 10 Python developers on a hundred real-world copy-paste instances. The results show that AdaptivePaste reduces the dwell time to nearly half the time it takes for manual code adaptation, and helps to avoid bugs. In addition, we utilize the participant feedback to identify potential avenues for improvement of AdaptivePaste.

arxiv情報

著者 Xiaoyu Liu,Jinu Jang,Neel Sundaresan,Miltiadis Allamanis,Alexey Svyatkovskiy
発行日 2023-10-06 17:24:12+00:00
arxivサイト arxiv_id(pdf)

提供元, 利用サービス

arxiv.jp, Google

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