DiffDetective

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:

We used DiffDetective as a framework for empirical evaluations in multiple studies (Bittner et al., 2023), (Güthing et al., 2024), (Bittner et al., 2022).

References

2024

  1. FSE Demonstrations
    Variability-Aware Differencing with DiffDetective
    Paul Maximilian BittnerAlexander SchultheißBenjamin MoosherrTimo Kehrer, and Thomas Thüm
    In Companion Proc. Int’l Conference on the Foundations of Software Engineering (FSE Companion), Porto de Galinhas, Brazil, Jul 2024
  2. VaMoS
    Explaining Edits to Variability Annotations in Evolving Software Product Lines
    Lukas GüthingPaul Maximilian BittnerIna Schaefer, and Thomas Thüm
    In Proc. Int’l Working Conf. on Variability Modelling of Software-Intensive Systems (VaMoS), Bern, Switzerland, Feb 2024

2023

  1. SPLC
    Views on Edits to Variational Software
    In Proc. Int’l Systems and Software Product Line Conf. (SPLC), Tokyo, Japan, Aug 2023

2022

  1. ESEC/FSE
    Classifying Edits to Variability in Source Code
    Paul Maximilian BittnerChristof TinnesAlexander Schultheiß, Sören Viegener, Timo Kehrer, and Thomas Thüm
    In Proc. Europ. Software Engineering Conf./Foundations of Software Engineering (ESEC/FSE), Singapore, Nov 2022