Code snippets are prevalent, but are hard to reuse because they often lack an accompanying environment configuration. Most are not actively maintained, allowing for drift between the most recent possible configuration and the code snippet as the snippet becomes out-of-date over time. Recent work has identified the problem of validating and detecting out-of-date code snippets as the most important consideration for code reuse. However, determining if a snippet is correct, but simply out-of-date, is a non-trivial task. In the best case, breaking changes are well documented, allowing developers to manually determine when a code snippet contains an out-of-date API usage. In the worst case, determining if and when a breaking change was made requires an exhaustive search through previous dependency versions.
We present V2, a strategy for determining if a code snippet is out-of-date by detecting discrete instances of configuration drift, where the snippet uses an API which has since undergone a breaking change. Each instance of configuration drift is classified by a failure encountered during validation and a configuration patch, consisting of dependency version changes, which fixes the underlying fault. V2 uses feedback-directed search to explore the possible configuration space for a code snippet, reducing the number of potential environment configurations that need to be validated. When run on a corpus of public Python snippets from prior research, V2 identifies 248 instances of configuration drift.
Wed 13 Nov
|13:40 - 14:00|
|14:00 - 14:20|
Dennis ReulingSoftware Engineering Group, University of Siegen, Udo KelterSoftware Engineering Group, University of Siegen, Johannes BürdekTU Darmstadt, Real-time Systems Lab, Malte LochauTU DarmstadtLink to publication DOI
|14:20 - 14:40|
|14:40 - 15:00|
|15:00 - 15:20|
Dipesh PradhanSimula Research Laboratory, Norway, Shuai WangHong Kong University of Science and Technology, Tao YueNanjing University of Aeronautics and Astronautics & Simula Research Laboratory, Shaukat AliSimula Research Lab, Marius LiaaenCisco SystemsLink to publication