Fixr: Mining and Understanding Bug Fixes
Overview
Imagine this: an Android app developer discovers a bug in her app where she inadvertently broke a framework protocol rule. She, through great effort, for instance ransacking through Stackoverflow, finally discovers a fix for her app that she then commits to a public code repository Now right after her commit, an automated system recognizes her fix and synthesizes candidate patches to other apps that appear to violate the same framework rule—conceptually, transferring the original fix to these other apps. In the end, this automated system amplifies the human effort of the original fix—reifying in tools the diffusion of communal knowledge that today spreads only through informal means like developer forums.
This is the goal of the Fixr project: we propose to address application-framework protocol defects by undertaking the fundamental research needed to realize the scenario described above. In particular, we will develop a suite of program analysis, probabilistic inference, code synthesis, and social data mining tools that cooperatively and automatically infer high confidence repair specifications for app-framework protocol bugs. A repair specification is a statistical-semantic artifact inferred from observed bug fixes using a combination of program analysis (Task 1) and probabilistic inference (Task 2). The unique aspect of our proposal is the use of a feedback loop with additional code synthesis (Task 3) and social data mining (Task 4) activities to iteratively improve the confidence of inferred repair specifications. That is, our approach will leverage the large and continuously-increasing enclave of applications that program against any given framework—crucially using the MUSE database itself to generate high-quality artifacts with which to populate it.