{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,3,25]],"date-time":"2026-03-25T13:01:28Z","timestamp":1774443688647,"version":"3.50.1"},"reference-count":48,"publisher":"Springer Science and Business Media LLC","issue":"1","license":[{"start":{"date-parts":[[2022,3,25]],"date-time":"2022-03-25T00:00:00Z","timestamp":1648166400000},"content-version":"tdm","delay-in-days":0,"URL":"https:\/\/creativecommons.org\/licenses\/by\/4.0"},{"start":{"date-parts":[[2022,3,25]],"date-time":"2022-03-25T00:00:00Z","timestamp":1648166400000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/creativecommons.org\/licenses\/by\/4.0"}],"funder":[{"DOI":"10.13039\/100000001","name":"national science foundation","doi-asserted-by":"publisher","award":["CCF-1840934"],"award-info":[{"award-number":["CCF-1840934"]}],"id":[{"id":"10.13039\/100000001","id-type":"DOI","asserted-by":"publisher"}]},{"DOI":"10.13039\/100000001","name":"national science foundation","doi-asserted-by":"publisher","award":["CCF-1816951"],"award-info":[{"award-number":["CCF-1816951"]}],"id":[{"id":"10.13039\/100000001","id-type":"DOI","asserted-by":"publisher"}]},{"DOI":"10.13039\/501100018867","name":"heinz nixdorf foundation","doi-asserted-by":"crossref","id":[{"id":"10.13039\/501100018867","id-type":"DOI","asserted-by":"crossref"}]},{"DOI":"10.13039\/501100001659","name":"deutsche forschungsgemeinschaft","doi-asserted-by":"publisher","award":["160364472-SFB901\/3"],"award-info":[{"award-number":["160364472-SFB901\/3"]}],"id":[{"id":"10.13039\/501100001659","id-type":"DOI","asserted-by":"publisher"}]},{"DOI":"10.13039\/501100008007","name":"Universit\u00e4t Paderborn","doi-asserted-by":"crossref","id":[{"id":"10.13039\/501100008007","id-type":"DOI","asserted-by":"crossref"}]}],"content-domain":{"domain":["link.springer.com"],"crossmark-restriction":false},"short-container-title":["Autom Softw Eng"],"published-print":{"date-parts":[[2022,5]]},"abstract":"<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> \u2019s analysis results are annotated with feature constraints that encode in which configurations each result holds. Our experiments with 95\u00a0compilation 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>","DOI":"10.1007\/s10515-022-00333-1","type":"journal-article","created":{"date-parts":[[2022,3,25]],"date-time":"2022-03-25T05:03:08Z","timestamp":1648184588000},"update-policy":"https:\/\/doi.org\/10.1007\/springer_crossmark_policy","source":"Crossref","is-referenced-by-count":16,"title":["Static data-flow analysis for software product lines in C"],"prefix":"10.1007","volume":"29","author":[{"ORCID":"https:\/\/orcid.org\/0000-0002-8674-1859","authenticated-orcid":false,"given":"Philipp Dominik","family":"Schubert","sequence":"first","affiliation":[]},{"given":"Paul","family":"Gazzillo","sequence":"additional","affiliation":[]},{"given":"Zach","family":"Patterson","sequence":"additional","affiliation":[]},{"given":"Julian","family":"Braha","sequence":"additional","affiliation":[]},{"given":"Fabian","family":"Schiebel","sequence":"additional","affiliation":[]},{"given":"Ben","family":"Hermann","sequence":"additional","affiliation":[]},{"given":"Shiyi","family":"Wei","sequence":"additional","affiliation":[]},{"given":"Eric","family":"Bodden","sequence":"additional","affiliation":[]}],"member":"297","published-online":{"date-parts":[[2022,3,25]]},"reference":[{"key":"333_CR1","unstructured":"Artifacts: supplementary material (2021). https:\/\/drive.google.com\/drive\/folders\/1ESiSu5iKsFTrM2XqN3Oj4fhIqVfdQ93W?usp=sharing"},{"key":"333_CR2","doi-asserted-by":"publisher","unstructured":"Arzt, S., Rasthofer, S., Fritz, C., Bodden, E., Bartel, A., Klein, J., Le\u00a0Traon, Y., Octeau, D., McDaniel, P.: Flowdroid: Precise context, flow, field, object-sensitive and lifecycle-aware taint analysis for android apps. In: Proceedings of the 35th ACM SIGPLAN Conference on Programming Language Design and Implementation, PLDI \u201914, pp. 259\u2013269. ACM, New York, NY, USA (2014). https:\/\/doi.org\/10.1145\/2594291.2594299","DOI":"10.1145\/2594291.2594299"},{"key":"333_CR3","unstructured":"Bison: bison. https:\/\/www.gnu.org\/software\/bison\/ (2020)"},{"key":"333_CR4","doi-asserted-by":"publisher","unstructured":"Bodden, E., Tol\u00eado, T., Ribeiro, M., Brabrand, C., Borba, P., Mezini, M.: Spllift: Statically analyzing software product lines in minutes instead of years. In: Proceedings of the 34th ACM SIGPLAN Conference on Programming Language Design and Implementation, PLDI \u201913, pp. 355\u2013364. ACM, New York, NY, USA (2013). https:\/\/doi.org\/10.1145\/2491956.2491976","DOI":"10.1145\/2491956.2491976"},{"key":"333_CR5","doi-asserted-by":"publisher","unstructured":"Bodden, E.: The secret sauce in efficient and precise static analysis: The beauty of distributive, summary-based static analyses (and how to master them). In: Companion Proceedings for the ISSTA\/ECOOP 2018 Workshops, ISSTA \u201918, pp. 85\u201393. ACM, New York, NY, USA (2018). https:\/\/doi.org\/10.1145\/3236454.3236500","DOI":"10.1145\/3236454.3236500"},{"key":"333_CR6","doi-asserted-by":"publisher","unstructured":"Brabrand, C., Ribeiro, M., Tol\u00eado, T., Borba, P.: Intraprocedural dataflow analysis for software product lines. In: Proceedings of the 11th Annual International Conference on Aspect-Oriented Software Development, AOSD \u201912, pp. 13\u201324. Association for Computing Machinery, New York, NY, USA (2012). https:\/\/doi.org\/10.1145\/2162049.2162052","DOI":"10.1145\/2162049.2162052"},{"key":"333_CR7","doi-asserted-by":"publisher","unstructured":"Chen, S., Erwig, M., Walkingshaw, E.: An error-tolerant type system for variational lambda calculus. In: Proceedings of the 17th ACM SIGPLAN International Conference on Functional Programming, ICFP \u201912, pp. 29\u201340. Association for Computing Machinery, New York, NY, USA (2012). https:\/\/doi.org\/10.1145\/2364527.2364535","DOI":"10.1145\/2364527.2364535"},{"key":"333_CR8","unstructured":"Clang tidy: clang-tidy (2018). http:\/\/clang.llvm.org\/extra\/clang-tidy\/"},{"issue":"8","key":"333_CR9","doi-asserted-by":"publisher","first-page":"1069","DOI":"10.1109\/TSE.2012.86","volume":"39","author":"A Classen","year":"2013","unstructured":"Classen, A., Cordy, M., Schobbens, P.Y., Heymans, P., Legay, A., Raskin, J.F.: Featured transition systems: foundations for verifying variability-intensive systems and their application to LTL model checking. IEEE Trans. Softw. Eng. 39(8), 1069\u20131089 (2013). https:\/\/doi.org\/10.1109\/TSE.2012.86","journal-title":"IEEE Trans. Softw. Eng."},{"key":"333_CR10","unstructured":"CodeSonar, G.: Grammatech codesonar (2018). https:\/\/www.grammatech.com\/products\/codesonar"},{"key":"333_CR11","unstructured":"Coverity-(SAST): Coverity static application security testing (SAST) (2018). https:\/\/www.synopsys.com\/software-integrity\/security-testing\/static-analysis-sast.html"},{"key":"333_CR12","doi-asserted-by":"publisher","unstructured":"Cuoq, P., Kirchner, F., Kosmatov, N., Prevosto, V., Signoles, J., Yakobowski, B.: Frama-C: a software analysis perspective. In: Proceedings of the 10th International Conference on Software Engineering and Formal Methods, SEFM\u201912, pp. 233\u2013247. Springer-Verlag, Berlin, Heidelberg (2012). https:\/\/doi.org\/10.1007\/978-3-642-33826-7_16","DOI":"10.1007\/978-3-642-33826-7_16"},{"key":"333_CR13","doi-asserted-by":"publisher","unstructured":"de\u00a0Moura, L., Bj\u00f8rner, N.: Z3: An efficient smt solver. In: C.R. Ramakrishnan, J.\u00a0Rehof (eds.) Tools and Algorithms for the Construction and Analysis of Systems, pp. 337\u2013340. Springer Berlin Heidelberg, Berlin, Heidelberg (2008). https:\/\/doi.org\/10.1007\/978-3-540-78800-3_24","DOI":"10.1007\/978-3-540-78800-3_24"},{"key":"333_CR14","doi-asserted-by":"publisher","unstructured":"Dimovski, A.S.: Symbolic game semantics for model checking program families. In: Bo\u0161na\u010dki, D., Wijs, A. (eds.) Model Checking Software, pp. 19\u201337. Springer International Publishing, Cham (2016). https:\/\/doi.org\/10.1007\/978-3-319-32582-8_2","DOI":"10.1007\/978-3-319-32582-8_2"},{"issue":"12","key":"333_CR15","doi-asserted-by":"publisher","first-page":"1146","DOI":"10.1109\/TSE.2002.1158288","volume":"28","author":"MD Ernst","year":"2002","unstructured":"Ernst, M.D., Badros, G.J., Notkin, D.: An empirical analysis of C preprocessor use. IEEE Trans. Softw. Eng. 28(12), 1146\u20131170 (2002). https:\/\/doi.org\/10.1109\/TSE.2002.1158288","journal-title":"IEEE Trans. Softw. Eng."},{"key":"333_CR16","unstructured":"FileVaultBug: Apple security blunder exposes lion login passwords in clear text. https:\/\/www.zdnet.com\/article\/apple-security-blunder-exposes-lion-login-passwords-in-clear-text\/ (2012)"},{"key":"333_CR17","doi-asserted-by":"publisher","unstructured":"Garrido, A., Johnson, R.: Analyzing multiple configurations of a C program. In: Proceedings of the 21st IEEE International Conference on Software Maintenance, ICSM \u201905, pp. 379\u2013388. IEEE Computer Society, USA (2005). https:\/\/doi.org\/10.1109\/ICSM.2005.23","DOI":"10.1109\/ICSM.2005.23"},{"key":"333_CR18","doi-asserted-by":"publisher","unstructured":"Gazzillo, P., Grimm, R.: Superc: parsing all of C by taming the preprocessor. In: Vitek, J., Lin, H., Tip, F. (eds.) ACM SIGPLAN Conference on Programming Language Design and Implementation, PLDI \u201912, Beijing, China - June 11\u201316, 2012, pp. 323\u2013334. ACM (2012). https:\/\/doi.org\/10.1145\/2254064.2254103","DOI":"10.1145\/2254064.2254103"},{"key":"333_CR19","unstructured":"GCC-Optimize-Options: GCC optimize options (2018). https:\/\/gcc.gnu.org\/onlinedocs\/gcc\/Optimize-Options.html"},{"key":"333_CR20","unstructured":"Hercules: Hercules. https:\/\/github.com\/joliebig\/Hercules (2020)"},{"key":"333_CR21","doi-asserted-by":"publisher","unstructured":"Hermann, B., Reif, M., Eichberg, M., Mezini, M.: Getting to know you: Towards a capability model for java. In: Proceedings of the 2015 10th Joint Meeting on Foundations of Software Engineering, ESEC\/FSE 2015, pp. 758\u2013769. ACM, New York, NY, USA (2015). https:\/\/doi.org\/10.1145\/2786805.2786829","DOI":"10.1145\/2786805.2786829"},{"key":"333_CR22","doi-asserted-by":"publisher","unstructured":"Holzinger, P., Hermann, B., Lerch, J., Bodden, E., Mezini, M.: Hardening java\u2019s access control by abolishing implicit privilege elevation. In: 2017 IEEE Symposium on Security and Privacy (SP), pp. 1027\u20131040 (2017). https:\/\/doi.org\/10.1109\/SP.2017.16","DOI":"10.1109\/SP.2017.16"},{"key":"333_CR23","unstructured":"ICCOptimizeOptions: Intel\u00aec++ compiler 19.0 developer guide and reference: Interprocedural optimization (IPO) (2018). https:\/\/software.intel.com\/en-us\/cpp-compiler-developer-guide-and-reference-interprocedural-optimization-ipo"},{"key":"333_CR24","doi-asserted-by":"crossref","unstructured":"Iosif-Lazar, A.F., Melo, J., Dimovski, A.S., Brabrand, C., Wasowski, A.: Effective analysis of C programs by rewriting variability. CoRR (2017). arxiv:1701.08114","DOI":"10.22152\/programming-journal.org\/2017\/1\/1"},{"key":"333_CR25","doi-asserted-by":"publisher","unstructured":"K\u00e4stner, C., Giarrusso, P.G., Rendel, T., Erdweg, S., Ostermann, K., Berger, T.: Variability-aware parsing in the presence of lexical macros and conditional compilation. In: Proceedings of the 2011 ACM International Conference on Object Oriented Programming Systems Languages and Applications, OOPSLA \u201911, pp. 805\u2013824. Association for Computing Machinery, New York, NY, USA (2011). https:\/\/doi.org\/10.1145\/2048066.2048128","DOI":"10.1145\/2048066.2048128"},{"key":"333_CR26","doi-asserted-by":"publisher","unstructured":"K\u00e4stner, C., Ostermann, K., Erdweg, S.: A variability-aware module system. In: Proceedings of the ACM International Conference on Object Oriented Programming Systems Languages and Applications, OOPSLA \u201912, pp. 773\u2013792. Association for Computing Machinery, New York, NY, USA (2012). https:\/\/doi.org\/10.1145\/2384616.2384673","DOI":"10.1145\/2384616.2384673"},{"key":"333_CR27","doi-asserted-by":"publisher","unstructured":"K\u00e4stner, C., Thum, T., Saake, G., Feigenspan, J., Leich, T., Wielgorz, F., Apel, S.: Featureide: A tool framework for feature-oriented software development. In: 2009 IEEE 31st International Conference on Software Engineering, pp. 611\u2013614. IEEE (2009). https:\/\/doi.org\/10.1109\/ICSE.2009.5070568","DOI":"10.1109\/ICSE.2009.5070568"},{"key":"333_CR28","doi-asserted-by":"publisher","unstructured":"K\u00e4stner, C.: Virtual separation of concerns: toward preprocessors 2.0. Ph.D. thesis, Otto von Guericke University Magdeburg (2010). https:\/\/doi.org\/10.1524\/itit.2012.0662. http:\/\/edoc.bibliothek.uni-halle.de\/servlets\/DocumentServlet?id=8044","DOI":"10.1524\/itit.2012.0662"},{"key":"333_CR29","doi-asserted-by":"publisher","DOI":"10.1145\/2211616.2211617","author":"C K\u00e4stner","year":"2012","unstructured":"K\u00e4stner, C., Apel, S., Th\u00fcm, T., Saake, G.: Type checking annotation-based product lines. ACM Trans. Softw. Eng. Methodol. (2012). https:\/\/doi.org\/10.1145\/2211616.2211617","journal-title":"ACM Trans. Softw. Eng. Methodol."},{"key":"333_CR30","doi-asserted-by":"publisher","unstructured":"Kenner, A., K\u00e4stner, C., Haase, S., Leich, T.: Typechef: Toward type checking #ifdef variability in C. In: Proceedings of the 2Nd International Workshop on Feature-Oriented Software Development, FOSD \u201910, pp. 25\u201332. ACM, New York, NY, USA (2010). https:\/\/doi.org\/10.1145\/1868688.1868693","DOI":"10.1145\/1868688.1868693"},{"key":"333_CR31","doi-asserted-by":"crossref","unstructured":"Kr\u00fcger, S., Nadi, S., Reif, M., Ali, K., Mezini, M., Bodden, E., G\u00f6pfert, F., G\u00fcnther, F., Weinert, C., Demmler, D., Kamath, R.: Cognicrypt: Supporting developers in using cryptography. In: Proceedings of the 32Nd IEEE\/ACM International Conference on Automated Software Engineering, ASE 2017, pp. 931\u2013936. IEEE Press, Piscataway, NJ, USA (2017). http:\/\/dl.acm.org\/citation.cfm?id=3155562.3155681","DOI":"10.1109\/ASE.2017.8115707"},{"key":"333_CR32","doi-asserted-by":"publisher","unstructured":"Le, W., Pattison, S.D.: Patch verification via multiversion interprocedural control flow graphs. In: Proceedings of the 36th International Conference on Software Engineering, ICSE 2014, pp. 1047\u20131058. Association for Computing Machinery, New York, NY, USA (2014). https:\/\/doi.org\/10.1145\/2568225.2568304","DOI":"10.1145\/2568225.2568304"},{"key":"333_CR33","doi-asserted-by":"publisher","unstructured":"Liebig, J., K\u00e4stner, C., Apel, S.: Analyzing the discipline of preprocessor annotations in 30 million lines of c code. In: Proceedings of the Tenth International Conference on Aspect-Oriented Software Development, AOSD \u201911, pp. 191\u2013202. Association for Computing Machinery, New York, NY, USA (2011). https:\/\/doi.org\/10.1145\/1960275.1960299","DOI":"10.1145\/1960275.1960299"},{"key":"333_CR34","doi-asserted-by":"publisher","unstructured":"Liebig, J., von Rhein, A., K\u00e4stner, C., Apel, S., D\u00f6rre, J., Lengauer, C.: Scalable analysis of variable software. In: Meyer, B., Baresi, L., Mezini, M. (eds.) Joint Meeting of the European Software Engineering Conference and the ACM SIGSOFT Symposium on the Foundations of Software Engineering, ESEC\/FSE\u201913, Saint Petersburg, Russian Federation, August 18-26, 2013, pp. 81\u201391. ACM (2013). https:\/\/doi.org\/10.1145\/2491411.2491437","DOI":"10.1145\/2491411.2491437"},{"key":"333_CR35","unstructured":"Livshits, V.B., Lam, M.S.: Finding security vulnerabilities in java applications with static analysis. In: Proceedings of the 14th Conference on USENIX Security Symposium - Volume 14, SSYM\u201905, pp. 18\u201318. USENIX Association, Berkeley, CA, USA (2005). http:\/\/dl.acm.org\/citation.cfm?id=1251398.1251416"},{"key":"333_CR36","doi-asserted-by":"publisher","unstructured":"McCloskey, B., Brewer, E.: Astec: A new approach to refactoring c. In: Proceedings of the 10th European Software Engineering Conference Held Jointly with 13th ACM SIGSOFT International Symposium on Foundations of Software Engineering, ESEC\/FSE-13, pp. 21\u201330. Association for Computing Machinery, New York, NY, USA (2005). https:\/\/doi.org\/10.1145\/1081706.1081712","DOI":"10.1145\/1081706.1081712"},{"key":"333_CR37","doi-asserted-by":"publisher","first-page":"145","DOI":"10.1016\/j.scico.2015.04.005","volume":"105","author":"J Midtgaard","year":"2015","unstructured":"Midtgaard, J., Dimovski, A.S., Brabrand, C., Wasowski, A.: Systematic derivation of correct variability-aware program analyses. Sci. Comput. Program. 105, 145\u2013170 (2015). https:\/\/doi.org\/10.1016\/j.scico.2015.04.005","journal-title":"Sci. Comput. Program."},{"key":"333_CR38","unstructured":"Onlinedocs, G.: Gcc onlinedocs \u2013 cpp 3.4 stringizing (2021). https:\/\/gcc.gnu.org\/onlinedocs\/gcc-11.2.0\/cpp\/Stringizing.html#Stringizing"},{"key":"333_CR39","doi-asserted-by":"publisher","unstructured":"Reps, T., Horwitz, S., Sagiv, M.: Precise interprocedural dataflow analysis via graph reachability. In: Proceedings of the 22Nd ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, POPL \u201995, pp. 49\u201361. ACM, New York, NY, USA (1995). https:\/\/doi.org\/10.1145\/199448.199462","DOI":"10.1145\/199448.199462"},{"key":"333_CR40","doi-asserted-by":"crossref","unstructured":"Reps, T., Schwoon, S., Jha, S.: Weighted pushdown systems and their application to interprocedural dataflow analysis. In: Proceedings of the 10th International Conference on Static Analysis, SAS\u201903, pp. 189\u2013213. Springer-Verlag, Berlin, Heidelberg (2003). http:\/\/dl.acm.org\/citation.cfm?id=1760267.1760283","DOI":"10.1007\/3-540-44898-5_11"},{"key":"333_CR41","doi-asserted-by":"publisher","DOI":"10.1145\/3280986","author":"AV Rhein","year":"2018","unstructured":"Rhein, A.V., Liebig, J., Janker, A., K\u00e4stner, C., Apel, S.: Variability-aware static analysis at scale: an empirical study. ACM Trans. Softw. Eng. Methodol. (2018). https:\/\/doi.org\/10.1145\/3280986","journal-title":"ACM Trans. Softw. Eng. Methodol."},{"issue":"1\u20132","key":"333_CR42","doi-asserted-by":"publisher","first-page":"131","DOI":"10.1016\/0304-3975(96)00072-2","volume":"167","author":"M Sagiv","year":"1996","unstructured":"Sagiv, M., Reps, T., Horwitz, S.: Precise interprocedural dataflow analysis with applications to constant propagation. Theor. Comput. Sci. 167(1\u20132), 131\u2013170 (1996). https:\/\/doi.org\/10.1016\/0304-3975(96)00072-2","journal-title":"Theor. Comput. Sci."},{"key":"333_CR43","doi-asserted-by":"publisher","unstructured":"Schubert, P.D., Hermann, B., Bodden, E.: Phasar: An inter-procedural static analysis framework for c\/c++. In: T.\u00a0Vojnar, L.\u00a0Zhang (eds.) Tools and Algorithms for the Construction and Analysis of Systems, pp. 393\u2013410. Springer International Publishing, Cham (2019). https:\/\/doi.org\/10.1007\/978-3-030-17465-1_22","DOI":"10.1007\/978-3-030-17465-1_22"},{"key":"333_CR44","unstructured":"Sharir, M., Pnueli, A.: Two approaches to interprocedural data flow analysis. New York Univ. Comput. Sci. Dept., New York, NY (1978). https:\/\/cds.cern.ch\/record\/120118"},{"key":"333_CR45","doi-asserted-by":"publisher","unstructured":"Strom, R.E.: Mechanisms for compile-time enforcement of security. In: Proceedings of the 10th ACM SIGACT-SIGPLAN Symposium on Principles of Programming Languages, POPL \u201983, pp. 276\u2013284. ACM, New York, NY, USA (1983). https:\/\/doi.org\/10.1145\/567067.567093","DOI":"10.1145\/567067.567093"},{"issue":"1","key":"333_CR46","doi-asserted-by":"publisher","first-page":"157","DOI":"10.1109\/TSE.1986.6312929","volume":"12","author":"RE Strom","year":"1986","unstructured":"Strom, R.E., Yemini, S.: Typestate: A programming language concept for enhancing software reliability. IEEE Trans. Softw. Eng. 12(1), 157\u2013171 (1986). https:\/\/doi.org\/10.1109\/TSE.1986.6312929","journal-title":"IEEE Trans. Softw. Eng."},{"key":"333_CR47","unstructured":"Th\u00fcm, T., Apel, S.: Analysis strategies for software product lines. none (2012). https:\/\/www.cs.cmu.edu\/~ckaestne\/pdf\/tr_analysis12.pdf"},{"key":"333_CR48","doi-asserted-by":"publisher","unstructured":"Walkingshaw, E., K\u00e4stner, C., Erwig, M., Apel, S., Bodden, E.: Variational data structures: Exploring tradeoffs in computing with variability. In: Black, A.P., Krishnamurthi, S., Bruegge, B., Ruskiewicz, J.N. (eds.) Onward! 2014, Proceedings of the 2014 ACM International Symposium on New Ideas, New Paradigms, and Reflections on Programming & Software, part of SPLASH \u201914, Portland, OR, USA, October 20-24, 2014, pp. 213\u2013226. ACM (2014). https:\/\/doi.org\/10.1145\/2661136.2661143","DOI":"10.1145\/2661136.2661143"}],"container-title":["Automated Software Engineering"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/link.springer.com\/content\/pdf\/10.1007\/s10515-022-00333-1.pdf","content-type":"application\/pdf","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/link.springer.com\/article\/10.1007\/s10515-022-00333-1\/fulltext.html","content-type":"text\/html","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/link.springer.com\/content\/pdf\/10.1007\/s10515-022-00333-1.pdf","content-type":"application\/pdf","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2022,4,25]],"date-time":"2022-04-25T15:45:13Z","timestamp":1650901513000},"score":1,"resource":{"primary":{"URL":"https:\/\/link.springer.com\/10.1007\/s10515-022-00333-1"}},"subtitle":["Revoking the preprocessor\u2019s special role"],"short-title":[],"issued":{"date-parts":[[2022,3,25]]},"references-count":48,"journal-issue":{"issue":"1","published-print":{"date-parts":[[2022,5]]}},"alternative-id":["333"],"URL":"https:\/\/doi.org\/10.1007\/s10515-022-00333-1","relation":{},"ISSN":["0928-8910","1573-7535"],"issn-type":[{"value":"0928-8910","type":"print"},{"value":"1573-7535","type":"electronic"}],"subject":[],"published":{"date-parts":[[2022,3,25]]},"assertion":[{"value":"27 July 2021","order":1,"name":"received","label":"Received","group":{"name":"ArticleHistory","label":"Article History"}},{"value":"15 February 2022","order":2,"name":"accepted","label":"Accepted","group":{"name":"ArticleHistory","label":"Article History"}},{"value":"25 March 2022","order":3,"name":"first_online","label":"First Online","group":{"name":"ArticleHistory","label":"Article History"}},{"order":1,"name":"Ethics","group":{"name":"EthicsHeading","label":"Declarations"}},{"value":"The authors declare that they have no conflict of interest.","order":2,"name":"Ethics","group":{"name":"EthicsHeading","label":"Conflict of interest"}}],"article-number":"35"}}