Android developers frequently update source code to improve the performance, security, or maintainability of Android apps. Such Android code updating activities are intuitively repetitive, manual, and time-consuming. In this paper, we propose AutoUpdate, a Transformer-based automated code update recommendation approach for Android Apps, which takes advantage of code abstraction (Abs) and Byte-Pair Encoding (BPE) techniques to represent source code. Since this is the first work to automatically update code in Android apps, we collect a history of 209,346 updated method pairs from 3,195 real-world Android applications available on Google Play stores that span 14 years (2008-2022). Through an extensive experiment on our curated datasets, the results show that AutoUpdate(1) achieves a perfect prediction of 25% based on the realistic time-wise evaluation scenario, which outperforms the two baseline approaches; (2) gains benefits at least 17% of improvement by using both Abs and BPE; (3) is able to recommend code updates for various purposes (e.g., fixing bugs, adding new feature, refactoring methods). On the other hand, the models (4) could produce optimistically high accuracy due to the unrealistic evaluation scenario (i.e., random splits), suggesting that researchers should consider time-wise evaluation scenarios in the future; (5) are less accurate for a larger size of methods with a larger number of changed tokens, providing a research opportunity for future work. Our findings demonstrate the significant advancement of NMT-based code update recommendation approaches for Android apps.
翻译:并且机器人开发商经常更新源代码, 以提高 Android 应用程序的性能、 安全性或可维护性。 由于这是自动更新 Android 应用程序代码的首个工作, 我们收集了209, 346个更新方法配对的历史, 这些方法配对来自14年(2008-2022年)的Google Play 商店的3, 195个真实世界和机器人应用软件。 在本文中, 我们提议对Android Apps采用基于变换器的自动代码更新建议方法。 我们提议对Android Apps采用基于变换器的自动代码更新建议方法。 这个方法利用代码抽象( Abs) 和 Byte-Pair Encoding (BE) 技术来代表源代码。 由于这是自动更新Android Apps 应用程序代码的首部, 我们收集了209, 346个方法更新了209, 346个。 在14年(2008-2022年)的Google Play Play Play 仓库上, 我们提议了3, 更新了3, 更新了3,增加了一个更精确的模型, 。 结果显示一个更精确的模型, 更精确的模型,, 提供了一个更精确的模型。