PLDI '93 Proceedings of the ACM SIGPLAN 1993 conference on Programming language design and implementation
Proceedings of the 1999 ACM SIGPLAN-SIGSOFT workshop on Program analysis for software tools and engineering
Handling Preprocessor-Conditioned Declarations
SCAM '02 Proceedings of the Second IEEE International Workshop on Source Code Analysis and Manipulation
Preprocessor Conditional Removal by Simple Partial Evaluation
WCRE '01 Proceedings of the Eighth Working Conference on Reverse Engineering (WCRE'01)
WPC '97 Proceedings of the 5th International Workshop on Program Comprehension (WPC '97)
Experiences Developing and Maintaining Software in a Multi-Platform Environment
ICSM '97 Proceedings of the International Conference on Software Maintenance
C/C++ Conditional Compilation Analysis Using Symbolic Execution
ICSM '00 Proceedings of the International Conference on Software Maintenance (ICSM'00)
Refactoring Browser with Preprocessor
CSMR '03 Proceedings of the Seventh European Conference on Software Maintenance and Reengineering
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)
ASTEC: a new approach to refactoring C
Proceedings of the 10th European software engineering conference held jointly with 13th ACM SIGSOFT international symposium on Foundations of software engineering
Analyzing Multiple Configurations of a C Program
ICSM '05 Proceedings of the 21st IEEE International Conference on Software Maintenance
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
cJ: enhancing java with safe type conditions
Proceedings of the 6th international conference on Aspect-oriented software development
Safe composition of product lines
GPCE '07 Proceedings of the 6th international conference on Generative programming and component engineering
Modeling and Model Checking Software Product Lines
FMOODS '08 Proceedings of the 10th IFIP WG 6.1 international conference on Formal Methods for Open Object-Based Distributed Systems
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
Dead or Alive: finding zombie features in the Linux kernel
FOSD '09 Proceedings of the First International Workshop on Feature-Oriented Software Development
Type-Checking Software Product Lines - A Formal Approach
ASE '08 Proceedings of the 2008 23rd IEEE/ACM International Conference on Automated Software Engineering
Configuration Lifting: Verification meets Software Configuration
ASE '08 Proceedings of the 2008 23rd IEEE/ACM International Conference on Automated Software Engineering
A few billion lines of code later: using static analysis to find bugs in the real world
Communications of the ACM
Model Checking of Domain Artifacts in Product Line Engineering
ASE '09 Proceedings of the 2009 IEEE/ACM International Conference on Automated Software Engineering
Running a software product line: standing still is going backwards
Proceedings of the 13th International Software Product Line Conference
Verifying architectural design rules of the flight software product line
Proceedings of the 13th International Software Product Line Conference
SAT-based analysis of feature models is easy
Proceedings of the 13th International Software Product Line Conference
Proceedings of the 13th International Software Product Line Conference
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
Proceedings of the 32nd ACM/IEEE International Conference on Software Engineering - Volume 1
Type safety for feature-oriented product lines
Automated Software Engineering
Efficient extraction and analysis of preprocessor-based variability
GPCE '10 Proceedings of the ninth international conference on Generative programming and component engineering
Automated reasoning on feature models
CAiSE'05 Proceedings of the 17th international conference on Advanced Information Systems Engineering
Partial preprocessing C code for variability analysis
Proceedings of the 5th Workshop on Variability Modeling of Software-Intensive Systems
On the impact of feature dependencies when maintaining preprocessor-based software product lines
Proceedings of the 10th ACM international conference on Generative programming and component engineering
An error-tolerant type system for variational lambda calculus
Proceedings of the 17th ACM SIGPLAN international conference on Functional programming
Adding configuration to the choice calculus
Proceedings of the Seventh International Workshop on Variability Modelling of Software-intensive Systems
Feature-oriented software evolution
Proceedings of the Seventh International Workshop on Variability Modelling of Software-intensive Systems
Safe composition of configuration knowledge-based software product lines
Journal of Systems and Software
Investigating preprocessor-based syntax errors
Proceedings of the 12th international conference on Generative programming: concepts & experiences
Extending Type Inference to Variational Programs
ACM Transactions on Programming Languages and Systems (TOPLAS)
Hi-index | 0.00 |
Software product lines have gained momentum as an approach to generate many variants of a program, each tailored to a specific use case, from a common code base. However, the implementation of product lines raises new challenges, as potentially millions of program variants are developed in parallel. In prior work, we and others have developed product-line-aware type systems to detect type errors in a product line, without generating all variants. With TypeChef, we build a similar type checker for product lines written in C that implements variability with #ifdef directives of the C preprocessor. However, a product-line-aware type system for C is more difficult than expected due to several peculiarities of the preprocessor, including lexical macros and unrestricted use of #ifdef directives. In this paper, we describe the problems faced and our progress to solve them with TypeChef. Although TypeChef is still under development and cannot yet process arbitrary C code, we demonstrate its capabilities so far with a case study: By type checking the open-source web server Boa with potentially 2110 variants, we found type errors in several variants.