variability-aware source code differencing and large scale empirical evaluations on git repositories
DiffDetective is our Java library for variability-aware source code differencing: It helps in understanding how a change (e.g., a commit) to a code base with static variability, such as C preprocessor annotations, has changed. Therefore, the library parses a generic diff - such as the text-based diff in the image above - into a variability-aware data-structure, where changes to variability annotations are distinguished from changes to source code. To get an overview of variability-aware differencing and what our library has to offer, please check out our demonstrations paper (Bittner et al., 2024) as well as our Github repository:
@inproceedings{BSM+:FSE24Companion,title={{Variability-Aware Differencing with DiffDetective}},author={Bittner, Paul Maximilian and Schulthei\ss{}, Alexander and Moosherr, Benjamin and Kehrer, Timo and Th{\"{u}}m, Thomas},booktitle={Companion Proc.\ Int'l Conference on the Foundations of Software Engineering (FSE Companion)},address={New York, NY, USA},year={2024},month=jul,location={Porto de Galinhas, Brazil},numpages={5},pages={632--636},keywords={software evolution, software product lines, software variability},doi={10.1145/3663529.3663813},isbn={9798400706585},publisher={ACM},}
VaMoS
Explaining Edits to Variability Annotations in Evolving Software Product Lines
@inproceedings{GBST:VaMoS24,title={{Explaining Edits to Variability Annotations in Evolving Software Product Lines}},author={G{\"u}thing, Lukas and Bittner, Paul Maximilian and Schaefer, Ina and Th{\"um}, Thomas},booktitle={Proc.\ Int'l Working Conf.\ on Variability Modelling of Software-Intensive Systems (VaMoS)},address={New York, NY, USA},year={2024},month=feb,location={Bern, Switzerland},numpages={10},pages={93--102},keywords={software evolution, software product lines, software variability},doi={10.1145/3634713.3634725},publisher={ACM},}
@inproceedings{BSG+:SPLC23,title={{Views on Edits to Variational Software}},author={Bittner, Paul Maximilian and Schulthei\ss{}, Alexander and Greiner, Sandra and Moosherr, Benjamin and Krieter, Sebastian and Tinnes, Christof and Kehrer, Timo and Th\"{u}m, Thomas},booktitle={Proc.\ Int'l Systems and Software Product Line Conf.\ (SPLC)},address={New York, NY, USA},year={2023},month=aug,location={Tokyo, Japan},pages={141--152},keywords={variation control, software product lines, software variability, projectional editing, software evolution},doi={10.1145/3579027.3608985},isbn={9798400700910},publisher={ACM},}
@inproceedings{BTS+:ESECFSE22,title={{Classifying Edits to Variability in Source Code}},author={Bittner, Paul Maximilian and Tinnes, Christof and Schulthei\ss{}, Alexander and Viegener, S{\"{o}}ren and Kehrer, Timo and Th{\"{u}}m, Thomas},booktitle={Proc.\ Europ.\ Software Engineering Conf./Foundations of Software Engineering (ESEC/FSE)},address={New York, NY, USA},year={2022},month=nov,location={Singapore},numpages={13},pages={196--208},keywords={software evolution, software variability, feature traceability, software product lines, mining version histories},doi={10.1145/3540250.3549108},isbn={9781450394130},publisher={ACM},}