Online Appendix for “How Preprocessor Annotations (Do Not) Affect Maintainability: A Case Study on Change-Proneness”

Tool Support

Data collection for this study was performed by IfdefRevolver, the Github project this page belongs to. The entry point to the analysis is the Bourne shell script, located in src/main/scripts. Type -h at the command line to get a help screen explaining the command line options. This script relies on a number of helper scripts, which reside in the same directory. To get everything to run, this directory should be in the PATH variable in your environment.

More information can be found on the tool support page.

Snapshot Size Experiments

Functions can change from one snapshot to the next. For example, functions are modified (becoming longer or shorter), and new functions are added, existing ones are deleted or moved to new files. All those changes invalidate (to some extent) the static metrics, which we collect only once per snapshot. We also lose some information about functions being added later on or moved to new files also.

To estimate how small we need to make our snapshots in order to get accurate results and not miss too much information, we conducted an initial experiment on OpenLDAP. On a separate page, we list the results of the snapshot size experiment.


The data for all eight subject systems used in the study is available here. The data is available both in .csv format and as R data sets (files named allData.rdata).

Subject Systems

The names and repository URLs of the subject systems are listed below.

Subject Name Repository URL
BusyBox git://
glibc git://
SQLite git://