  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.
