当前位置: X-MOL 学术arXiv.cs.SE › 论文详情
Our official English website, www.x-mol.net, welcomes your feedback! (Note: you will need to create a separate account there.)
AndroEvolve: Automated Android API Update with Data Flow Analysis and Variable Denormalization
arXiv - CS - Software Engineering Pub Date : 2020-11-10 , DOI: arxiv-2011.05020
Stefanus A. Haryono, Ferdian Thung, David Lo, Lingxiao Jiang, Julia Lawall, Hong Jin Kang, Lucas Serrano, Gilles Muller

The Android operating system is frequently updated, with each version bringing a new set of APIs. New versions may involve API deprecation; Android apps using deprecated APIs need to be updated to ensure the apps' compatibility withold and new versions of Android. Updating deprecated APIs is a time-consuming endeavor. Hence, automating the updates of Android APIs can be beneficial for developers. CocciEvolve is the state-of-the-art approach for this automation. However, it has several limitations, including its inability to resolve out-of-method-boundary variables and the low code readability of its update due to the addition of temporary variables. In an attempt to further improve the performance of automated Android API update, we propose an approach named AndroEvolve, which addresses the limitations of CocciEvolve through the addition of data flow analysis and variable name denormalization. Data flow analysis enables AndroEvolve to resolve the value of any variable within the file scope. Variable name denormalization replaces temporary variables that may present in the CocciEvolve update with appropriate values in the target file. We have evaluated the performance of AndroEvolve and the readability of its updates on 360 target files. AndroEvolve produces 26.90% more instances of correct updates compared to CocciEvolve. Moreover, our manual and automated evaluation shows that AndroEvolve updates are more readable than CocciEvolve updates.

中文翻译:

AndroEvolve:具有数据流分析和变量非规范化的自动化 Android API 更新

Android 操作系统经常更新,每个版本都会带来一组新的 API。新版本可能涉及 API 弃用;使用已弃用 API 的 Android 应用需要更新,以确保应用与新旧版本的 Android 兼容。更新已弃用的 API 是一项耗时的工作。因此,自动化 Android API 的更新对开发人员来说是有益的。CocciEvolve 是这种自动化的最先进方法。但是,它有几个局限性,包括无法解析方法边界外的变量以及由于添加了临时变量而导致其更新的代码可读性低。为了进一步提高自动 Android API 更新的性能,我们提出了一种名为 AndroEvolve 的方法,它通过添加数据流分析和变量名称非规范化来解决 CocciEvolve 的局限性。数据流分析使 AndroEvolve 能够解析文件范围内的任何变量的值。变量名称非规范化将 CocciEvolve 更新中可能出现的临时变量替换为目标文件中的适当值。我们评估了 AndroEvolve 的性能及其更新在 360 目标文件上的可读性。与 CocciEvolve 相比,AndroEvolve 产生的正确更新实例多 26.90%。此外,我们的手动和自动评估表明 AndroEvolve 更新比 CocciEvolve 更新更具可读性。变量名称非规范化将 CocciEvolve 更新中可能出现的临时变量替换为目标文件中的适当值。我们评估了 AndroEvolve 的性能及其更新在 360 目标文件上的可读性。与 CocciEvolve 相比,AndroEvolve 产生的正确更新实例多 26.90%。此外,我们的手动和自动评估表明 AndroEvolve 更新比 CocciEvolve 更新更具可读性。变量名称非规范化将 CocciEvolve 更新中可能出现的临时变量替换为目标文件中的适当值。我们评估了 AndroEvolve 的性能及其更新在 360 目标文件上的可读性。与 CocciEvolve 相比,AndroEvolve 产生的正确更新实例多 26.90%。此外,我们的手动和自动评估表明 AndroEvolve 更新比 CocciEvolve 更新更具可读性。
更新日期:2020-11-11
down
wechat
bug