Variability-Aware Differencing with DiffDetective
Companion Proceedings of the 32nd ACM International Conference on the …, 2024•dl.acm.org
Diff tools are essential in developers' daily workflows and software engineering research.
Motivated by limitations of traditional line-based differencing, countless specialized diff tools
have been proposed, aware of the underlying artifacts' type, such as a program's syntax or
semantics. However, no diff tool is aware of systematic variability embodied in highly
configurable systems such as the Linux kernel. Our software library called DiffDetective can
turn any generic diff tool into a variability-aware differencer such that a changes' impact on …
Motivated by limitations of traditional line-based differencing, countless specialized diff tools
have been proposed, aware of the underlying artifacts' type, such as a program's syntax or
semantics. However, no diff tool is aware of systematic variability embodied in highly
configurable systems such as the Linux kernel. Our software library called DiffDetective can
turn any generic diff tool into a variability-aware differencer such that a changes' impact on …
Diff tools are essential in developers' daily workflows and software engineering research. Motivated by limitations of traditional line-based differencing, countless specialized diff tools have been proposed, aware of the underlying artifacts' type, such as a program's syntax or semantics. However, no diff tool is aware of systematic variability embodied in highly configurable systems such as the Linux kernel. Our software library called DiffDetective can turn any generic diff tool into a variability-aware differencer such that a changes' impact on the source code and its superimposed variability can be distinguished and analyzed. Besides graphical diff inspectors, DiffDetective provides a framework for large-scale empirical analyses of version histories, tested on a substantial body of configurable software including the Linux kernel. DiffDetective has been successfully employed to explain edits, generate clone-and-own scenarios, or evaluate diff algorithms and patch mutations.