---
_id: '56863'
author:
- first_name: Fabian Benedikt
  full_name: Schiebel, Fabian Benedikt
  id: '55745'
  last_name: Schiebel
  orcid: 0009-0008-6867-9802
- first_name: Florian
  full_name: Sattler, Florian
  last_name: Sattler
- first_name: Philipp Dominik
  full_name: Schubert, Philipp Dominik
  last_name: Schubert
- first_name: Sven
  full_name: Apel, Sven
  last_name: Apel
- first_name: Eric
  full_name: Bodden, Eric
  id: '59256'
  last_name: Bodden
  orcid: 0000-0003-3470-3647
citation:
  ama: 'Schiebel FB, Sattler F, Schubert PD, Apel S, Bodden E. Scaling Interprocedural
    Static Data-Flow Analysis to Large C/C++ Applications: An Experience Report. In:
    Aldrich J, Salvaneschi G, eds. <i>38th European Conference on Object-Oriented
    Programming (ECOOP 2024)</i>. Vol 313. Leibniz International Proceedings in Informatics
    (LIPIcs). Schloss Dagstuhl – Leibniz-Zentrum für Informatik; 2024:36:1–36:28.
    doi:<a href="https://doi.org/10.4230/LIPIcs.ECOOP.2024.36">10.4230/LIPIcs.ECOOP.2024.36</a>'
  apa: 'Schiebel, F. B., Sattler, F., Schubert, P. D., Apel, S., &#38; Bodden, E.
    (2024). Scaling Interprocedural Static Data-Flow Analysis to Large C/C++ Applications:
    An Experience Report. In J. Aldrich &#38; G. Salvaneschi (Eds.), <i>38th European
    Conference on Object-Oriented Programming (ECOOP 2024)</i> (Vol. 313, p. 36:1–36:28).
    Schloss Dagstuhl – Leibniz-Zentrum für Informatik. <a href="https://doi.org/10.4230/LIPIcs.ECOOP.2024.36">https://doi.org/10.4230/LIPIcs.ECOOP.2024.36</a>'
  bibtex: '@inproceedings{Schiebel_Sattler_Schubert_Apel_Bodden_2024, place={Dagstuhl,
    Germany}, series={Leibniz International Proceedings in Informatics (LIPIcs)},
    title={Scaling Interprocedural Static Data-Flow Analysis to Large C/C++ Applications:
    An Experience Report}, volume={313}, DOI={<a href="https://doi.org/10.4230/LIPIcs.ECOOP.2024.36">10.4230/LIPIcs.ECOOP.2024.36</a>},
    booktitle={38th European Conference on Object-Oriented Programming (ECOOP 2024)},
    publisher={Schloss Dagstuhl – Leibniz-Zentrum für Informatik}, author={Schiebel,
    Fabian Benedikt and Sattler, Florian and Schubert, Philipp Dominik and Apel, Sven
    and Bodden, Eric}, editor={Aldrich, Jonathan and Salvaneschi, Guido}, year={2024},
    pages={36:1–36:28}, collection={Leibniz International Proceedings in Informatics
    (LIPIcs)} }'
  chicago: 'Schiebel, Fabian Benedikt, Florian Sattler, Philipp Dominik Schubert,
    Sven Apel, and Eric Bodden. “Scaling Interprocedural Static Data-Flow Analysis
    to Large C/C++ Applications: An Experience Report.” In <i>38th European Conference
    on Object-Oriented Programming (ECOOP 2024)</i>, edited by Jonathan Aldrich and
    Guido Salvaneschi, 313:36:1–36:28. Leibniz International Proceedings in Informatics
    (LIPIcs). Dagstuhl, Germany: Schloss Dagstuhl – Leibniz-Zentrum für Informatik,
    2024. <a href="https://doi.org/10.4230/LIPIcs.ECOOP.2024.36">https://doi.org/10.4230/LIPIcs.ECOOP.2024.36</a>.'
  ieee: 'F. B. Schiebel, F. Sattler, P. D. Schubert, S. Apel, and E. Bodden, “Scaling
    Interprocedural Static Data-Flow Analysis to Large C/C++ Applications: An Experience
    Report,” in <i>38th European Conference on Object-Oriented Programming (ECOOP
    2024)</i>, 2024, vol. 313, p. 36:1–36:28, doi: <a href="https://doi.org/10.4230/LIPIcs.ECOOP.2024.36">10.4230/LIPIcs.ECOOP.2024.36</a>.'
  mla: 'Schiebel, Fabian Benedikt, et al. “Scaling Interprocedural Static Data-Flow
    Analysis to Large C/C++ Applications: An Experience Report.” <i>38th European
    Conference on Object-Oriented Programming (ECOOP 2024)</i>, edited by Jonathan
    Aldrich and Guido Salvaneschi, vol. 313, Schloss Dagstuhl – Leibniz-Zentrum für
    Informatik, 2024, p. 36:1–36:28, doi:<a href="https://doi.org/10.4230/LIPIcs.ECOOP.2024.36">10.4230/LIPIcs.ECOOP.2024.36</a>.'
  short: 'F.B. Schiebel, F. Sattler, P.D. Schubert, S. Apel, E. Bodden, in: J. Aldrich,
    G. Salvaneschi (Eds.), 38th European Conference on Object-Oriented Programming
    (ECOOP 2024), Schloss Dagstuhl – Leibniz-Zentrum für Informatik, Dagstuhl, Germany,
    2024, p. 36:1–36:28.'
date_created: 2024-11-04T13:37:23Z
date_updated: 2025-12-04T10:41:59Z
department:
- _id: '76'
- _id: '662'
doi: 10.4230/LIPIcs.ECOOP.2024.36
editor:
- first_name: Jonathan
  full_name: Aldrich, Jonathan
  last_name: Aldrich
- first_name: Guido
  full_name: Salvaneschi, Guido
  last_name: Salvaneschi
intvolume: '       313'
language:
- iso: eng
page: 36:1–36:28
place: Dagstuhl, Germany
publication: 38th European Conference on Object-Oriented Programming (ECOOP 2024)
publication_identifier:
  isbn:
  - 978-3-95977-341-6
  issn:
  - 1868-8969
publisher: Schloss Dagstuhl – Leibniz-Zentrum für Informatik
series_title: Leibniz International Proceedings in Informatics (LIPIcs)
status: public
title: 'Scaling Interprocedural Static Data-Flow Analysis to Large C/C++ Applications:
  An Experience Report'
type: conference
user_id: '15249'
volume: 313
year: '2024'
...
---
_id: '30511'
abstract:
- lang: eng
  text: <jats:title>Abstract</jats:title><jats:p>Many critical codebases are written
    in C, and most of them use preprocessor directives to encode variability, effectively
    encoding software product lines. These preprocessor directives, however, challenge
    any static code analysis. SPLlift, a previously presented approach for analyzing
    software product lines, is limited to Java programs that use a rather simple feature
    encoding and to analysis problems with a finite and ideally small domain. Other
    approaches that allow the analysis of real-world C software product lines use
    special-purpose analyses, preventing the reuse of existing analysis infrastructures
    and ignoring the progress made by the static analysis community. This work presents
    <jats:sc>VarAlyzer</jats:sc>, a novel static analysis approach for software product
    lines. <jats:sc>VarAlyzer</jats:sc> first transforms preprocessor constructs to
    plain C while preserving their variability and semantics. It then solves any given
    distributive analysis problem on transformed product lines in a variability-aware
    manner. <jats:sc>VarAlyzer</jats:sc> ’s analysis results are annotated with feature
    constraints that encode in which configurations each result holds. Our experiments
    with 95 compilation units of OpenSSL show that applying <jats:sc>VarAlyzer</jats:sc>
    enables one to conduct inter-procedural, flow-, field- and context-sensitive data-flow
    analyses on entire product lines for the first time, outperforming the product-based
    approach for highly-configurable systems.</jats:p>
alternative_title:
- Revoking the preprocessor’s special role
article_number: '35'
article_type: original
author:
- first_name: Philipp
  full_name: Schubert, Philipp
  id: '60543'
  last_name: Schubert
  orcid: 0000-0002-8674-1859
- first_name: Paul
  full_name: Gazzillo, Paul
  last_name: Gazzillo
- first_name: Zach
  full_name: Patterson, Zach
  last_name: Patterson
- first_name: Julian
  full_name: Braha, Julian
  last_name: Braha
- first_name: Fabian Benedikt
  full_name: Schiebel, Fabian Benedikt
  id: '55745'
  last_name: Schiebel
  orcid: 0009-0008-6867-9802
- first_name: Ben
  full_name: Hermann, Ben
  id: '66173'
  last_name: Hermann
  orcid: 0000-0001-9848-2017
- first_name: Shiyi
  full_name: Wei, Shiyi
  last_name: Wei
- first_name: Eric
  full_name: Bodden, Eric
  id: '59256'
  last_name: Bodden
  orcid: 0000-0003-3470-3647
citation:
  ama: Schubert P, Gazzillo P, Patterson Z, et al. Static data-flow analysis for software
    product lines in C. <i>Automated Software Engineering</i>. 2022;29(1). doi:<a
    href="https://doi.org/10.1007/s10515-022-00333-1">10.1007/s10515-022-00333-1</a>
  apa: Schubert, P., Gazzillo, P., Patterson, Z., Braha, J., Schiebel, F. B., Hermann,
    B., Wei, S., &#38; Bodden, E. (2022). Static data-flow analysis for software product
    lines in C. <i>Automated Software Engineering</i>, <i>29</i>(1), Article 35. <a
    href="https://doi.org/10.1007/s10515-022-00333-1">https://doi.org/10.1007/s10515-022-00333-1</a>
  bibtex: '@article{Schubert_Gazzillo_Patterson_Braha_Schiebel_Hermann_Wei_Bodden_2022,
    title={Static data-flow analysis for software product lines in C}, volume={29},
    DOI={<a href="https://doi.org/10.1007/s10515-022-00333-1">10.1007/s10515-022-00333-1</a>},
    number={135}, journal={Automated Software Engineering}, publisher={Springer Science
    and Business Media LLC}, author={Schubert, Philipp and Gazzillo, Paul and Patterson,
    Zach and Braha, Julian and Schiebel, Fabian Benedikt and Hermann, Ben and Wei,
    Shiyi and Bodden, Eric}, year={2022} }'
  chicago: Schubert, Philipp, Paul Gazzillo, Zach Patterson, Julian Braha, Fabian
    Benedikt Schiebel, Ben Hermann, Shiyi Wei, and Eric Bodden. “Static Data-Flow
    Analysis for Software Product Lines in C.” <i>Automated Software Engineering</i>
    29, no. 1 (2022). <a href="https://doi.org/10.1007/s10515-022-00333-1">https://doi.org/10.1007/s10515-022-00333-1</a>.
  ieee: 'P. Schubert <i>et al.</i>, “Static data-flow analysis for software product
    lines in C,” <i>Automated Software Engineering</i>, vol. 29, no. 1, Art. no. 35,
    2022, doi: <a href="https://doi.org/10.1007/s10515-022-00333-1">10.1007/s10515-022-00333-1</a>.'
  mla: Schubert, Philipp, et al. “Static Data-Flow Analysis for Software Product Lines
    in C.” <i>Automated Software Engineering</i>, vol. 29, no. 1, 35, Springer Science
    and Business Media LLC, 2022, doi:<a href="https://doi.org/10.1007/s10515-022-00333-1">10.1007/s10515-022-00333-1</a>.
  short: P. Schubert, P. Gazzillo, Z. Patterson, J. Braha, F.B. Schiebel, B. Hermann,
    S. Wei, E. Bodden, Automated Software Engineering 29 (2022).
date_created: 2022-03-25T07:41:26Z
date_updated: 2025-12-04T10:42:38Z
department:
- _id: '76'
doi: 10.1007/s10515-022-00333-1
intvolume: '        29'
issue: '1'
keyword:
- inter-procedural static analysis
- software product lines
- preprocessor
- LLVM
- C/C++
language:
- iso: eng
main_file_link:
- open_access: '1'
  url: https://link.springer.com/article/10.1007/s10515-022-00333-1
oa: '1'
project:
- _id: '12'
  name: 'SFB 901 - B4: SFB 901 - Subproject B4'
- _id: '3'
  name: 'SFB 901 - B: SFB 901 - Project Area B'
- _id: '1'
  name: 'SFB 901: SFB 901'
publication: Automated Software Engineering
publication_identifier:
  issn:
  - 0928-8910
  - 1573-7535
publication_status: published
publisher: Springer Science and Business Media LLC
status: public
title: Static data-flow analysis for software product lines in C
type: journal_article
user_id: '15249'
volume: 29
year: '2022'
...
---
_id: '26405'
author:
- first_name: Philipp
  full_name: Schubert, Philipp
  id: '60543'
  last_name: Schubert
  orcid: 0000-0002-8674-1859
- first_name: Florian
  full_name: Sattler, Florian
  last_name: Sattler
- first_name: Fabian Benedikt
  full_name: Schiebel, Fabian Benedikt
  id: '55745'
  last_name: Schiebel
  orcid: 0009-0008-6867-9802
- first_name: Ben
  full_name: Hermann, Ben
  id: '66173'
  last_name: Hermann
  orcid: 0000-0001-9848-2017
- first_name: Eric
  full_name: Bodden, Eric
  id: '59256'
  last_name: Bodden
  orcid: 0000-0003-3470-3647
citation:
  ama: 'Schubert P, Sattler F, Schiebel FB, Hermann B, Bodden E. Modeling the Effects
    of Global Variables in Data-Flow Analysis for C/C++. In: <i>2021 IEEE 21st International
    Working Conference on Source Code Analysis and Manipulation (SCAM)</i>. ; 2021.'
  apa: Schubert, P., Sattler, F., Schiebel, F. B., Hermann, B., &#38; Bodden, E. (2021).
    Modeling the Effects of Global Variables in Data-Flow Analysis for C/C++. <i>2021
    IEEE 21st International Working Conference on Source Code Analysis and Manipulation
    (SCAM)</i>.
  bibtex: '@inproceedings{Schubert_Sattler_Schiebel_Hermann_Bodden_2021, title={Modeling
    the Effects of Global Variables in Data-Flow Analysis for C/C++}, booktitle={2021
    IEEE 21st International Working Conference on Source Code Analysis and Manipulation
    (SCAM)}, author={Schubert, Philipp and Sattler, Florian and Schiebel, Fabian Benedikt
    and Hermann, Ben and Bodden, Eric}, year={2021} }'
  chicago: Schubert, Philipp, Florian Sattler, Fabian Benedikt Schiebel, Ben Hermann,
    and Eric Bodden. “Modeling the Effects of Global Variables in Data-Flow Analysis
    for C/C++.” In <i>2021 IEEE 21st International Working Conference on Source Code
    Analysis and Manipulation (SCAM)</i>, 2021.
  ieee: P. Schubert, F. Sattler, F. B. Schiebel, B. Hermann, and E. Bodden, “Modeling
    the Effects of Global Variables in Data-Flow Analysis for C/C++,” 2021.
  mla: Schubert, Philipp, et al. “Modeling the Effects of Global Variables in Data-Flow
    Analysis for C/C++.” <i>2021 IEEE 21st International Working Conference on Source
    Code Analysis and Manipulation (SCAM)</i>, 2021.
  short: 'P. Schubert, F. Sattler, F.B. Schiebel, B. Hermann, E. Bodden, in: 2021
    IEEE 21st International Working Conference on Source Code Analysis and Manipulation
    (SCAM), 2021.'
date_created: 2021-10-18T12:50:35Z
date_updated: 2025-12-04T10:43:01Z
department:
- _id: '76'
language:
- iso: eng
project:
- _id: '12'
  name: 'SFB 901 - B4: SFB 901 - Subproject B4'
- _id: '3'
  name: 'SFB 901 - B: SFB 901 - Project Area B'
- _id: '1'
  name: 'SFB 901: SFB 901: On-The-Fly Computing - Individualisierte IT-Dienstleistungen
    in dynamischen Märkten '
publication: 2021 IEEE 21st International Working Conference on Source Code Analysis
  and Manipulation (SCAM)
status: public
title: Modeling the Effects of Global Variables in Data-Flow Analysis for C/C++
type: conference
user_id: '15249'
year: '2021'
...
