Compiler Hacking for Source Code Analysis
Software Quality Control
High-fidelity C/C++ code transformation
Science of Computer Programming
Parsing C/C++ Code without Pre-processing
CC '09 Proceedings of the 18th International Conference on Compiler Construction: Held as Part of the Joint European Conferences on Theory and Practice of Software, ETAPS 2009
Optimizing header file include directives
Journal of Software Maintenance and Evolution: Research and Practice
High-Fidelity C/C++ Code Transformation
Electronic Notes in Theoretical Computer Science (ENTCS)
CScout: A refactoring browser for C
Science of Computer Programming
Type safety for feature-oriented product lines
Automated Software Engineering
TypeChef: toward type checking #ifdef variability in C
FOSD '10 Proceedings of the 2nd International Workshop on Feature-Oriented Software Development
Analyzing the discipline of preprocessor annotations in 30 million lines of C code
Proceedings of the tenth international conference on Aspect-oriented software development
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 variability-aware module system
Proceedings of the ACM international conference on Object oriented programming systems languages and applications
Scalable analysis of variable software
Proceedings of the 2013 9th Joint Meeting on Foundations of Software Engineering
Do background colors improve program comprehension in the #ifdef hell?
Empirical Software Engineering
Extending Type Inference to Variational Programs
ACM Transactions on Programming Languages and Systems (TOPLAS)
Hi-index | 0.00 |
Many software systems are developed with configurable functionality, and for multiple hardware platforms and operating systems. This can lead to thousands of possible configurations, requiring each configuration-dependent programming entity or variable to have different types. Such configuration-dependent variables are often declared inside preprocessor conditionals (e.g., C language).Preprocessor-conditioned declarations may be a source of problems. Commonly used configurations are type-checked by repeated compilation. Rarely used configurations are unlikely to be recently type checked, and in such configurations a variable may have a type not compatible to its use or it may contains uses of variables never defined.This paper proposes an approach to identify all possible types each variable declared in a software system can assume, and under which conditions. Inconsistent variable usages can then be detected for all possible configurations. Impacts of preprocessor-conditioned declaration in 17 different open source software systems are also reported.