Partial evaluation and automatic program generation
Partial evaluation and automatic program generation
A framework for preprocessor-aware C source code analyses
Software—Practice & Experience
DMS: program transformations for practical scalable software evolution
Proceedings of the International Workshop on Principles of Software Evolution
A Standard Problem for Evaluating Product-Line Methodologies
GCSE '01 Proceedings of the Third International Conference on Generative and Component-Based Software Engineering
Preprocessor Conditional Removal by Simple Partial Evaluation
WCRE '01 Proceedings of the Eighth Working Conference on Reverse Engineering (WCRE'01)
C/C++ Conditional Compilation Analysis Using Symbolic Execution
ICSM '00 Proceedings of the International Conference on Software Maintenance (ICSM'00)
Rewrite Systems for Symbolic Evaluation of C-like Preprocessing
CSMR '04 Proceedings of the Eighth Euromicro Working Conference on Software Maintenance and Reengineering (CSMR'04)
Program refactoring in the presence of preprocessor directives
Program refactoring in the presence of preprocessor directives
Verifying feature-based model templates against well-formedness OCL constraints
Proceedings of the 5th international conference on Generative programming and component engineering
Safe composition of product lines
GPCE '07 Proceedings of the 6th international conference on Generative programming and component engineering
Feature Diagrams and Logics: There and Back Again
SPLC '07 Proceedings of the 11th International Software Product Line Conference
Granularity in software product lines
Proceedings of the 30th international conference on Software engineering
Efficient compilation techniques for large scale feature models
GPCE '08 Proceedings of the 7th international conference on Generative programming and component engineering
Reasoning about edits to feature models
ICSE '09 Proceedings of the 31st International Conference on Software Engineering
Dead or Alive: finding zombie features in the Linux kernel
FOSD '09 Proceedings of the First International Workshop on Feature-Oriented Software Development
An analysis of the variability in forty preprocessor-based software product lines
Proceedings of the 32nd ACM/IEEE International Conference on Software Engineering - Volume 1
Automated reasoning on feature models
CAiSE'05 Proceedings of the 17th international conference on Advanced Information Systems Engineering
TypeChef: toward type checking #ifdef variability in C
FOSD '10 Proceedings of the 2nd International Workshop on Feature-Oriented Software Development
Language-independent reference checking in software product lines
FOSD '10 Proceedings of the 2nd International Workshop on Feature-Oriented Software Development
Partial preprocessing C code for variability analysis
Proceedings of the 5th Workshop on Variability Modeling of Software-Intensive Systems
Proceedings of the sixth conference on Computer systems
Variability-aware parsing in the presence of lexical macros and conditional compilation
Proceedings of the 2011 ACM international conference on Object oriented programming systems languages and applications
A robust approach for variability extraction from the Linux build system
Proceedings of the 16th International Software Product Line Conference - Volume 1
Code-based variability model extraction for software product line improvement
Proceedings of the 16th International Software Product Line Conference - Volume 2
Automatic OS kernel TCB reduction by leveraging compile-time configurability
HotDep'12 Proceedings of the Eighth USENIX conference on Hot Topics in System Dependability
Linux variability anomalies: what causes them and how do they get fixed?
Proceedings of the 10th Working Conference on Mining Software Repositories
Variability evolution and erosion in industrial product lines: a case study
Proceedings of the 17th International Software Product Line Conference
Investigating preprocessor-based syntax errors
Proceedings of the 12th international conference on Generative programming: concepts & experiences
Extracting feature model changes from the Linux kernel using FMDiff
Proceedings of the Eighth International Workshop on Variability Modelling of Software-Intensive Systems
Hi-index | 0.01 |
The C Preprocessor (CPP) is the tool of choice for the implementation of variability in many large-scale configurable software projects. Linux, probably the most-configurable piece of software ever, employs more than 10,000 preprocessor variables for this purpose. However, this de-facto variability tends to be "hidden in the code"; which on the long term leads to variability defects, such as dead code or inconsistencies with respect to the intended (modeled) variability of the software. This calls for tool support for the efficient extraction of (and reasoning over) CPP-based variability. We suggest a novel approach to extract CPP-based variability. Our tool transforms CPP-based variability in O(n) complexity into a propositional formula that "mimics" all valid effects of conditional compilation and can be analyzed with standard SAT or BDD packages. Our evaluation results demonstrate the scalability and practicability of the approach. A dead-block-analysis on the complete Linux source tree takes less than 30 minutes; we thereby have revealed 60 dead blocks, 2 of which meanwhile have been confirmed as new (and long-lasting) bugs; the rest is still under investigation.