2010
DOI: 10.1145/1942788.1868300
|View full text |Cite
|
Sign up to set email alerts
|

Efficient extraction and analysis of preprocessor-based variability

Abstract: 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 sup… Show more

Help me understand this report

Search citation statements

Order By: Relevance

Paper Sections

Select...
2
1
1
1

Citation Types

0
17
0

Year Published

2011
2011
2015
2015

Publication Types

Select...
6
2

Relationship

3
5

Authors

Journals

citations
Cited by 17 publications
(17 citation statements)
references
References 19 publications
0
17
0
Order By: Relevance
“…There has been a lot of research directed at studying and ensuring the consistency of the problem and solution spaces [57]. However, most of this work has analyzed features in isolation, either in the problem space [13], [42], [47], [58] or in the solution space [31], [51] to identify modeling practices and feature usage. Some work has also looked at both sides to study co-evolution [34], [41] or to detect bugs due to inconsistencies between models and code [28], [29], [36], [54], [55].…”
Section: Related Workmentioning
confidence: 99%
“…There has been a lot of research directed at studying and ensuring the consistency of the problem and solution spaces [57]. However, most of this work has analyzed features in isolation, either in the problem space [13], [42], [47], [58] or in the solution space [31], [51] to identify modeling practices and feature usage. Some work has also looked at both sides to study co-evolution [34], [41] or to detect bugs due to inconsistencies between models and code [28], [29], [36], [54], [55].…”
Section: Related Workmentioning
confidence: 99%
“…For both specifications, we propose novel scalable extraction strategies based on the structural use of #IFDEF directives, on parser and type errors, and on linker checks. Whereas prior work approximated constraints from preprocessor directives [28,42,45,48,55], we design an infrastructure that accurately represents C code based on our previous research on variability-aware parsing and type checking [26,27,30]. In a nutshell, we statically analyze build-time variability effectively without examining an exponential number of configurations.…”
Section: Introductionmentioning
confidence: 99%
“…LVAT [35] and Undertaker [10,38,42] are the main examples of such tools. We chose to rely on Undertaker for its convenient wrapping of kconfigdump, allowing us to use the same tools that are also used by the Linux kernel development team.…”
Section: Related Workmentioning
confidence: 99%