{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2025,9,28]],"date-time":"2025-09-28T04:11:27Z","timestamp":1759032687146,"version":"3.37.3"},"reference-count":47,"publisher":"Springer Science and Business Media LLC","issue":"4","license":[{"start":{"date-parts":[[2018,11,22]],"date-time":"2018-11-22T00:00:00Z","timestamp":1542844800000},"content-version":"tdm","delay-in-days":0,"URL":"http:\/\/www.springer.com\/tdm"}],"content-domain":{"domain":["link.springer.com"],"crossmark-restriction":false},"short-container-title":["Empir Software Eng"],"published-print":{"date-parts":[[2019,8]]},"DOI":"10.1007\/s10664-018-9666-x","type":"journal-article","created":{"date-parts":[[2018,11,22]],"date-time":"2018-11-22T02:06:27Z","timestamp":1542852387000},"page":"1693-1726","update-policy":"https:\/\/doi.org\/10.1007\/springer_crossmark_policy","source":"Crossref","is-referenced-by-count":26,"title":["An investigation of misunderstanding code patterns in C open-source software projects"],"prefix":"10.1007","volume":"24","author":[{"ORCID":"https:\/\/orcid.org\/0000-0002-5142-7499","authenticated-orcid":false,"given":"Fl\u00e1vio","family":"Medeiros","sequence":"first","affiliation":[]},{"given":"Gabriel","family":"Lima","sequence":"additional","affiliation":[]},{"given":"Guilherme","family":"Amaral","sequence":"additional","affiliation":[]},{"given":"Sven","family":"Apel","sequence":"additional","affiliation":[]},{"given":"Christian","family":"K\u00e4stner","sequence":"additional","affiliation":[]},{"given":"M\u00e1rcio","family":"Ribeiro","sequence":"additional","affiliation":[]},{"given":"Rohit","family":"Gheyi","sequence":"additional","affiliation":[]}],"member":"297","published-online":{"date-parts":[[2018,11,22]]},"reference":[{"issue":"4","key":"9666_CR1","doi-asserted-by":"publisher","first-page":"73","DOI":"10.1145\/129852.129859","volume":"35","author":"ID Baxter","year":"1992","unstructured":"Baxter ID (1992) Design maintenance systems. Commun ACM 35(4):73\u201389","journal-title":"Commun ACM"},{"key":"9666_CR2","doi-asserted-by":"crossref","unstructured":"Baxter I, Mehlich M (2001) Preprocessor conditional removal by simple partial evaluation. In: Proceedings of the working conference on reverse engineering, IEEE, WCRE, pp 281\u2013290","DOI":"10.1109\/WCRE.2001.957833"},{"key":"9666_CR3","unstructured":"Beller M, Bacchelli A, Zaidman A, Juergens E (2014) Modern code reviews in open-source projects: which problems do they fix? In: Proceedings of the working conference on mining software repositories. ACM, pp 202\u2013211"},{"issue":"7","key":"9666_CR4","doi-asserted-by":"publisher","first-page":"58","DOI":"10.1145\/2622630","volume":"57","author":"M Bland","year":"2014","unstructured":"Bland M (2014) Finding more than one worm in the apple. Commun ACM 57 (7):58\u201364","journal-title":"Commun ACM"},{"key":"9666_CR5","unstructured":"Burke D (1995) All Circuits are Busy Now: The 1990 AT&T Long Distance Network Collapse. California Polytechnic State University"},{"key":"9666_CR6","unstructured":"Buse RP, Weimer WR (2008) A metric for software readability. In: Proceedings of the international symposium on software testing and analysis. ACM, pp 121\u2013130"},{"key":"9666_CR7","unstructured":"Cannon LW, Elliott RA, Kirchhoff LW, Miller JH, Milner JM, Mitze RW, Schan EP, Whittington NO, Spencer H, Brader M, Cannon LW, Elliott RA, Kirchhoff LW, Miller JH, Milner JM, Mitze RW, Schan EP, Whittington NO, Spencer H, Brader M (2000) Recommended C style and coding standards"},{"key":"9666_CR8","unstructured":"Collberg C, Thomborson C, Low D (1997) A taxonomy of obfuscating transformations. Technical Report 148, Department of Computer Science. University of Auckland"},{"key":"9666_CR9","volume-title":"Designing and Conducting Mixed Methods Research","author":"JW Creswell","year":"2011","unstructured":"Creswell JW, Clark VLP (2011) Designing and Conducting Mixed Methods Research. SAGE Publications, Thousand Oaks"},{"key":"9666_CR10","doi-asserted-by":"publisher","DOI":"10.1007\/978-1-4612-4020-4","volume-title":"C: A Software Engineering Approach","author":"PA Darnell","year":"1996","unstructured":"Darnell PA, Margolis PE (1996) C: A Software Engineering Approach. Springer, Berlin"},{"issue":"3","key":"9666_CR11","doi-asserted-by":"publisher","first-page":"147","DOI":"10.1145\/362929.362947","volume":"11","author":"EW Dijkstra","year":"1968","unstructured":"Dijkstra EW (1968) Go to statement considered harmful. Commun ACM 11 (3):147\u2013148","journal-title":"Commun ACM"},{"issue":"2","key":"9666_CR12","doi-asserted-by":"publisher","first-page":"84","DOI":"10.1145\/251880.251992","volume":"22","author":"M Dowson","year":"1997","unstructured":"Dowson M (1997) The Ariane 5 software failure. SIGSOFT Softw Eng Notes 22 (2):84\u201393","journal-title":"SIGSOFT Softw Eng Notes"},{"key":"9666_CR13","first-page":"285","volume-title":"Selecting empirical methods for software engineering research","author":"S Easterbrook","year":"2008","unstructured":"Easterbrook S, Singer J, Storey MA, Damian D (2008) Selecting empirical methods for software engineering research. Springer, Berlin, pp 285\u2013311"},{"issue":"1","key":"9666_CR14","doi-asserted-by":"publisher","first-page":"41","DOI":"10.1109\/TSE.1976.233800","volume":"SE-2","author":"CC Elgot","year":"1976","unstructured":"Elgot CC (1976) Structured programming with and without go to statements. IEEE Trans Softw Eng SE-2(1):41\u201354","journal-title":"IEEE Trans Softw Eng"},{"issue":"12","key":"9666_CR15","doi-asserted-by":"publisher","first-page":"1146","DOI":"10.1109\/TSE.2002.1158288","volume":"28","author":"M Ernst","year":"2002","unstructured":"Ernst M, Badros G, Notkin D (2002) An empirical analysis of C, preprocessor use. IEEE Trans Softw Eng 28(12):1146\u20131170","journal-title":"IEEE Trans Softw Eng"},{"issue":"4","key":"9666_CR16","doi-asserted-by":"publisher","first-page":"699","DOI":"10.1007\/s10664-012-9208-x","volume":"18","author":"J Feigenspan","year":"2013","unstructured":"Feigenspan J, K\u00e4stner C, Apel S, Liebig J, Schulze M, Dachselt R, Papendieck M, Leich T, Saake G (2013) Do background colors improve program comprehension in the #ifdef hell? Empir Softw Eng 18(4):699\u2013745","journal-title":"Empir Softw Eng"},{"key":"9666_CR17","volume-title":"Refactoring: Improving the Design of Existing Code","author":"M Fowler","year":"1999","unstructured":"Fowler M, Beck K, Brant J, Opdyke W, Roberts D, Gamma E (1999) Refactoring: Improving the Design of Existing Code. Addison-Wesley, Reading"},{"key":"9666_CR18","volume-title":"Design Patterns: Elements of Reusable Object-oriented Software","author":"E Gamma","year":"1995","unstructured":"Gamma E, Helm R, Johnson R, Vlissides J (1995) Design Patterns: Elements of Reusable Object-oriented Software. Addison-Wesley, Reading"},{"key":"9666_CR19","doi-asserted-by":"crossref","unstructured":"Garrido A, Johnson R (2003) Refactoring C with conditional compilation. In: Proceedings of the IEEE international conference on automated software engineering. IEEE, pp 323\u2013326","DOI":"10.1109\/ASE.2003.1240330"},{"issue":"3","key":"9666_CR20","doi-asserted-by":"publisher","first-page":"112","DOI":"10.1109\/MS.2001.922739","volume":"18","author":"RL Glass","year":"2001","unstructured":"Glass RL (2001) Frequently forgotten fundamental facts about software engineering. IEEE Softw 18(3):112\u2013111","journal-title":"IEEE Softw"},{"key":"9666_CR21","unstructured":"Gopstein D, Iannacone J, Yan Y, DeLong L, Zhuang Y, Yeh MKC, Cappos J (2017) Understanding misunderstandings in source code. In: Proceedings of the 2017 11th joint meeting on foundations of software engineering. ACM, ESEC\/FSE 2017, pp 129-139"},{"key":"9666_CR22","doi-asserted-by":"crossref","unstructured":"Gousios G (2013) The GHTorent dataset and tool suite. In: Proceedings of the working conference on mining software repositories. IEEE Press, pp 233\u2013236","DOI":"10.1109\/MSR.2013.6624034"},{"key":"9666_CR23","doi-asserted-by":"crossref","unstructured":"Gopstein D, Zhou H, Frankl P, Cappos J (2018) Prevalence of confusing code in software projects: atoms of confusion in the wild. In: Proceedings of the working conference on mining software repositories. ACM","DOI":"10.1145\/3196398.3196432"},{"issue":"4","key":"9666_CR24","doi-asserted-by":"publisher","first-page":"371","DOI":"10.1145\/29868.29872","volume":"5","author":"A Herzberg","year":"1987","unstructured":"Herzberg A, Pinter SS (1987) Public protection of software. ACM Trans Comput Syst 5(4):371\u2013393","journal-title":"ACM Trans Comput Syst"},{"key":"9666_CR25","unstructured":"ISO\/IEC\/IEEE (2006) Iso\/iec\/ieee international standard for software engineering - software life cycle processes - maintenance. Std 14764-2006, pp 1\u201358"},{"key":"9666_CR26","doi-asserted-by":"crossref","unstructured":"Jha MM, Vilardell RMF, Narayan J (2016) Scaling agile scrum software development: providing agility and quality to platform development by reducing time to market. In: 2016 IEEE 11th international conference on global software engineering (ICGSE), pp 84\u201388","DOI":"10.1109\/ICGSE.2016.24"},{"key":"9666_CR27","doi-asserted-by":"crossref","unstructured":"K\u00e4stner C, Giarrusso P, Rendel T, Erdweg S, Ostermann K, Berger T (2011) Variability-aware parsing in the presence of lexical macros and conditional compilation. In: Proceedings of the object-oriented programming systems languages and applications, ACM, pp 805\u2013824","DOI":"10.1145\/2048066.2048128"},{"key":"9666_CR28","volume-title":"The Practice of Programming","author":"BW Kernighan","year":"1999","unstructured":"Kernighan BW, Pike R (1999) The Practice of Programming. Addison-Wesley, Reading"},{"key":"9666_CR29","doi-asserted-by":"crossref","unstructured":"Liebig J, K\u00e4stner C, Apel S (2011) Analyzing the discipline of preprocessor annotations in 30 million lines of C code. In: Proceedings of the international conference on aspect-oriented software development. ACM, pp 191\u2013202","DOI":"10.1145\/1960275.1960299"},{"key":"9666_CR30","doi-asserted-by":"crossref","unstructured":"Lohmann D, Scheler F, Tartler R, Spinczyk O, Schr\u00f6der-Preikschat W (2006) A quantitative analysis of aspects in the eCos kernel. In: Proceedings of the European conference on computer systems. ACM, pp 191\u2013204","DOI":"10.1145\/1217935.1217954"},{"key":"9666_CR31","doi-asserted-by":"crossref","unstructured":"Malaquias R, Ribeiro M, Bonif\u00e1cio R, Monteiro E, Medeiros F, Garcia A, Gheyi R (2017) The discipline of preprocessor-based annotations does #ifdef TAG N\u2019T #endif matter. In: Proceedings of the international conference on program comprehension. IEEE Press, pp 297\u2013307","DOI":"10.1109\/ICPC.2017.41"},{"key":"9666_CR32","unstructured":"Marshall L, Webber J (2000) Gotos considered harmful and other programmers taboos. In: Proceedings of the workshop of the psychology of programming interest group. PPIG, pp 171\u2013180"},{"key":"9666_CR33","doi-asserted-by":"crossref","unstructured":"Medeiros F, Ribeiro M, Gheyi R (2013) Investigating preprocessor-based syntax errors. In: Proceedings of the international conference on generative programming, concepts & experiences. ACM, pp 75\u201384","DOI":"10.1145\/2517208.2517221"},{"key":"9666_CR34","unstructured":"Medeiros F, K\u00e4stner C, Ribeiro M, Nadi S, Gheyi R (2015a) The Love\/Hate Relationship with the C Preprocessor: An Interview Study. In: European conference on object-oriented programming (ECOOP), Schloss Dagstuhl\u2013Leibniz-Zentrum fuer Informatik, Leibniz International Proceedings in Informatics (LIPIcs), vol 37, pp 495\u2013518"},{"key":"9666_CR35","doi-asserted-by":"crossref","unstructured":"Medeiros F, Rodrigues I, Ribeiro M, Teixeira L, Gheyi R (2015b) An empirical study on configuration-related issues: Investigating undeclared and unused identifiers. In: Proceedings of the ACM SIGPLAN international conference on generative programming, concepts and experiences. ACM, pp 35-44","DOI":"10.1145\/2936314.2814206"},{"key":"9666_CR36","doi-asserted-by":"crossref","unstructured":"Medeiros F, K\u00e4stner C, Ribeiro M, Gheyi R, Apel S (2016) A comparison of 10 sampling algorithms for configurable systems. In: Proceedings of the international conference on software engineering. ACM, pp 643\u2013654","DOI":"10.1145\/2884781.2884793"},{"key":"9666_CR37","doi-asserted-by":"crossref","unstructured":"Medeiros F, Ribeiro M, Gheyi R, Apel S, Kastner C, Ferreira B, Carvalho L, Fonseca B (2018a) Discipline matters: refactoring of preprocessor directives in the #ifdef hell, vol 44","DOI":"10.1109\/TSE.2017.2688333"},{"key":"9666_CR38","doi-asserted-by":"publisher","unstructured":"Medeiros F, Silva G, Amaral G, Apel S, K\u00e4stner C, Ribeiro M, Gheyi R (2018b) Investigating Misunderstanding Code Patterns in C Open-Source Software Projects (Replication Package). \n                              https:\/\/doi.org\/10.5281\/zenodo.1461534","DOI":"10.5281\/zenodo.1461534"},{"key":"9666_CR39","doi-asserted-by":"crossref","unstructured":"Nagappan M, Robbes R, Kamei Y, Tanter E, McIntosh S, Mockus A, Hassan AE (2015) An empirical study of goto in C code from GitHub repositories. In: Proceedings of the joint meeting on foundations of software engineering. ACM, NY, pp 404\u2013414","DOI":"10.1145\/2786805.2786834"},{"key":"9666_CR40","doi-asserted-by":"crossref","unstructured":"Padioleau Y (2009) Parsing C\/C++ code without pre-processing. In: Proceedings of the international conference on compiler construction. Springer, pp 109\u2013125","DOI":"10.1007\/978-3-642-00722-4_9"},{"issue":"1","key":"9666_CR41","doi-asserted-by":"publisher","first-page":"1","DOI":"10.14445\/22312803\/IJCTT-V46P101","volume":"46","author":"A Pahal","year":"2017","unstructured":"Pahal A, Chillar RS (2017) Code readability: a review of metrics for software quality. Int J Comput Trends Technol 46(1):1\u201358","journal-title":"Int J Comput Trends Technol"},{"key":"9666_CR42","doi-asserted-by":"crossref","unstructured":"Rigby PC, German DM, Storey MA (2008) Open source software peer review practices: a case study of the Apache server. In: Proceedings of the international conference on software engineering. ACM, pp 541\u2013550","DOI":"10.1145\/1368088.1368162"},{"key":"9666_CR43","doi-asserted-by":"crossref","unstructured":"Schulze S, Liebig J, Siegmund J, Apel S (2013) Does the discipline of preprocessor annotations matter? a controlled experiment. In: Proceedings of the international conference on generative programming, concepts and experiences. ACM, pp 65\u201374","DOI":"10.1145\/2517208.2517215"},{"key":"9666_CR44","volume-title":"Programming language pragmatics","author":"ML Scott","year":"2000","unstructured":"Scott ML (2000) Programming language pragmatics. Morgan Kaufmann Publishers Inc., San Francisco"},{"key":"9666_CR45","unstructured":"Spencer H, Collyer G (1992) #ifdef considered harmful, or portability experience with C News. In: USENIX summer technical conference, pp 185\u2013197"},{"issue":"1","key":"9666_CR46","doi-asserted-by":"publisher","first-page":"43","DOI":"10.1046\/j.1365-2575.2002.00117.x","volume":"12","author":"I Stamelos","year":"2002","unstructured":"Stamelos I, Angelis L, Oikonomou A, Bleris GL (2002) Code quality analysis in open source software development. Inf Syst J 12(1):43\u201360","journal-title":"Inf Syst J"},{"issue":"2","key":"9666_CR47","doi-asserted-by":"publisher","first-page":"28","DOI":"10.1145\/953353.953355","volume":"8","author":"W Wulf","year":"1973","unstructured":"Wulf W, Shaw M (1973) Global variable considered harmful. SIGPLAN Not 8(2):28\u201334","journal-title":"SIGPLAN Not"}],"container-title":["Empirical Software Engineering"],"original-title":[],"language":"en","link":[{"URL":"http:\/\/link.springer.com\/content\/pdf\/10.1007\/s10664-018-9666-x.pdf","content-type":"application\/pdf","content-version":"vor","intended-application":"text-mining"},{"URL":"http:\/\/link.springer.com\/article\/10.1007\/s10664-018-9666-x\/fulltext.html","content-type":"text\/html","content-version":"vor","intended-application":"text-mining"},{"URL":"http:\/\/link.springer.com\/content\/pdf\/10.1007\/s10664-018-9666-x.pdf","content-type":"application\/pdf","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2019,11,21]],"date-time":"2019-11-21T19:07:49Z","timestamp":1574363269000},"score":1,"resource":{"primary":{"URL":"http:\/\/link.springer.com\/10.1007\/s10664-018-9666-x"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2018,11,22]]},"references-count":47,"journal-issue":{"issue":"4","published-print":{"date-parts":[[2019,8]]}},"alternative-id":["9666"],"URL":"https:\/\/doi.org\/10.1007\/s10664-018-9666-x","relation":{},"ISSN":["1382-3256","1573-7616"],"issn-type":[{"type":"print","value":"1382-3256"},{"type":"electronic","value":"1573-7616"}],"subject":[],"published":{"date-parts":[[2018,11,22]]},"assertion":[{"value":"22 November 2018","order":1,"name":"first_online","label":"First Online","group":{"name":"ArticleHistory","label":"Article History"}}]}}