一句话:通过实证研究回调 API 演化如何引发控制流不一致,并提出图模型与静态分析工具 Cider 检测回调兼容性问题。
Android 应用的控制流在很大程度上由回调 API 响应事件时的调用协议驱动。当这些回调 API 随 Android 框架演化时,其调用协议变化会给既有应用引入非预期的控制流,导致回调兼容性问题。然而,框架更新如何影响应用控制流及由此引发的问题仍缺乏认识。作者分析 Android 文档,并对 100 个真实回调兼容性问题开展实证研究,归纳回调 API 演化导致问题的机制。基于发现,作者提出基于图的模型来刻画 API 演化造成的控制流不一致,并实现静态分析技术 Cider 以检测回调兼容性问题。在 20 个流行开源 Android 应用上的评估表明 Cider 有效,共检出 13 个新回调兼容性问题,其中 12 个被确认,9 个被修复。
The control flows of Android apps are largely driven by the protocols that govern how callback APIs are invoked in response to various events. When these callback APIs evolve along with the Android framework, the changes in their invocation protocols can induce unexpected control flows to existing Android apps, causing various compatibility issues. We refer to these issues as callback compatibility issues. While Android framework updates have received due attention, little is known about their impacts on app control flows and the callback compatibility issues thus induced. To bridge the gap, we examined Android documentations and conducted an empirical study on 100 real-world callback compatibility issues to investigate how these issues were induced by callback API evolutions. Based on our empirical findings, we propose a graph-based model to capture the control flow inconsistencies caused by API evolutions and devise a static analysis technique, Cider, to detect callback compatibility issues. Our evaluation of Cider on 20 popular open-source Android apps shows that Cider is effective. It detected 13 new callback compatibility issues in these apps, among which 12 issues were confirmed and 9 issues were fixed.
DOI 原文 ·
@inproceedings{paperbot4754,
title = {Understanding and detecting callback compatibility issues for Android applications},
author = {Huaxun Huang and Lili Wei and Yepang Liu and Shing-Chi Cheung},
booktitle = {ASE},
year = {2018},
doi = {10.1145/3238147.3238181}
}