一句话:提出一种基于他人更新示例自动为 Android 应用生成并验证 API 变更补丁的技术。
移动应用依赖底层操作系统 API,而 OS 与 API 频繁变化,开发者必须及时更新应用以适配新版本。本文提出一种自动化更新技术:给定待更新应用与 API 变更信息,先定位受变更影响的代码,再从已有代码库中检索其他开发者针对同一 API 变更的更新示例,对其分析、排序并转化为通用补丁,最后按排序应用补丁,并借助差分测试验证更新。作者实现了该技术,并在 15 个真实应用上评估,覆盖 85% 的 API 变更,自动验证 68% 的更新,结果展现出良好前景。
Mobile apps rely heavily on the application programming interface (API) provided by their underlying operating system (OS). Because OS and API can change frequently, developers must quickly update their apps to ensure that the apps behave as intended with new API and OS versions. To help developers with this tedious, error prone, and time consuming task, we developed a technique that can automatically perform app updates for API changes based on examples of how other developers evolved their apps for the same changes. Given a target app to be updated and information about the changes in the API, our technique performs four main steps. First, it analyzes the target app to identify code affected by API changes. Second, it searches existing code bases for examples of updates to the new version of the API. Third, it analyzes, ranks, and transforms into generic patches the update examples found in the previous step. Finally, it applies the generated patches to the target app in order of ranking, while performing differential testing to validate the update. We implemented our technique and performed an empirical evaluation on 15 real-world apps with promising results. Overall, our technique was able to update 85% of the API changes considered and automatically validate 68% of the updates performed.