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,author={Bittner, Paul Maximilian and Schulthei\ss{}, Alexander and Moosherr, Benjamin and Kehrer, Timo and Th{\"{u}}m, Thomas},title={{Variability-Aware Differencing with DiffDetective}},booktitle={Companion Proc.\ Int'l Conference on the Foundations of Software Engineering (FSE Companion)},pages={632--636},location={Porto de Galinhas, Brazil},doi={10.1145/3663529.3663813},publisher={ACM},address={New York, NY, USA},month=jul,year={2024},isbn={9798400706585},keywords={software evolution, software product lines, software variability},numpages={5},selected=true}
VaMoS
Explaining Edits to Variability Annotations in Evolving Software Product Lines
@inproceedings{GBST:VaMoS24,author={G{\"u}thing, Lukas and Bittner, Paul Maximilian and Schaefer, Ina and Th{\"um}, Thomas},title={{Explaining Edits to Variability Annotations in Evolving Software Product Lines}},booktitle={Proc.\ Int'l Working Conf.\ on Variability Modelling of Software-Intensive Systems (VaMoS)},pages={93--102},location={Bern, Switzerland},doi={10.1145/3634713.3634725},publisher={ACM},address={New York, NY, USA},month=feb,year={2024},keywords={software evolution, software product lines, software variability},numpages={10},}
@inproceedings{BSG+:SPLC23,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},title={{Views on Edits to Variational Software}},booktitle={Proc.\ Int'l Systems and Software Product Line Conf.\ (SPLC)},pages={141--152},location={Tokyo, Japan},doi={10.1145/3579027.3608985},publisher={ACM},address={New York, NY, USA},month=aug,year={2023},isbn={9798400700910},keywords={variation control, software product lines, software variability, projectional editing, software evolution},selected=true}
@inproceedings{BTS+:ESECFSE22,author={Bittner, Paul Maximilian and Tinnes, Christof and Schulthei\ss{}, Alexander and Viegener, S{\"{o}}ren and Kehrer, Timo and Th{\"{u}}m, Thomas},title={{Classifying Edits to Variability in Source Code}},booktitle={Proc.\ Europ.\ Software Engineering Conf./Foundations of Software Engineering (ESEC/FSE)},pages={196--208},location={Singapore},doi={10.1145/3540250.3549108},publisher={ACM},address={New York, NY, USA},month=nov,year={2022},isbn={9781450394130},keywords={software evolution, software variability, feature traceability, software product lines, mining version histories},numpages={13},selected=true}