{'fraction_non_alphanumeric': 0.020676691729323307, 'fraction_numerical': 0.0037593984962406013, 'mean_word_length': 5.214007782101167, 'pattern_counts': {'":': 0, '<': 0, '<?xml version=': 0, '>': 0, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
Lightweight Extraction of Variability Information from Linux Makefiles

In Linux v3.19, the configuration system KCONFIG offers more than fourteen thousand configurable options that allows users to build a kernel specific to their respective needs. As these configurable options span across all layers involved in the kernel build process (KCONFIG, the build system KBUILD, and the code), manual checking for inconsistencies caused by these options is close to impossible. Recently, Valentin Rothberg presented UNDERTAKER-CHECKPATCH, a tool based on the UNDERTAKER toolchain which allows developers to quickly check their proposed patches for errors introduced by the use of configurable options. Unfortunately, the tool currently can not incorporate information from KBUILD, as the extractor needs several hours to compute the variability data. In this thesis, I therefore present a parsing-based approach to extract variability information from Makefiles. Contrary to earlier assumptions, I show that my solution is able to extract highly accurate conditions from KBUILD, and that it is able to work robustly across a wide range of Linux versions while slashing the runtime to just over one second on Linux version v3.19. This, for the first time, allows us to run an accurate, daily analysis of the commits sent into the linux-next development tree, and to have very fast response times to the authors of the buggy commits. Through its modular design, my tool can easily be enhanced to support other software projects, which I demonstrate by providing plug-in modules for BUSYBOX and COREBOOT.