{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,6,2]],"date-time":"2026-06-02T11:26:39Z","timestamp":1780399599612,"version":"3.54.1"},"reference-count":54,"publisher":"Springer Science and Business Media LLC","issue":"1","license":[{"start":{"date-parts":[[2023,11,16]],"date-time":"2023-11-16T00:00:00Z","timestamp":1700092800000},"content-version":"tdm","delay-in-days":0,"URL":"https:\/\/creativecommons.org\/licenses\/by\/4.0"},{"start":{"date-parts":[[2023,11,16]],"date-time":"2023-11-16T00:00:00Z","timestamp":1700092800000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/creativecommons.org\/licenses\/by\/4.0"}],"funder":[{"DOI":"10.13039\/100010686","name":"H2020 European Institute of Innovation and Technology","doi-asserted-by":"publisher","award":["825328"],"award-info":[{"award-number":["825328"]}],"id":[{"id":"10.13039\/100010686","id-type":"DOI","asserted-by":"publisher"}]}],"content-domain":{"domain":["link.springer.com"],"crossmark-restriction":false},"short-container-title":["Empir Software Eng"],"published-print":{"date-parts":[[2024,1]]},"abstract":"<jats:title>Abstract<\/jats:title><jats:p>Call Graphs are a rich data source and form the foundation for advanced static analyses that can, for example, detect security vulnerabilities or dead code. This information is invaluable when it is immediately available, such as in the output of a build system. Call Graph generation is a whole-program analysis: not just the application, but also all its dependencies are processed together. Recent work has shown that even advanced static analyses can use summarization techniques to substantially improve runtime; however, existing analyses focus on soundness, and as such remain very expensive. When executed in the build system, which typically has limited resources, even powerful servers suffer from slow build times, rendering these analyses impractical in today\u2019s fast-paced development. In this paper, we aim to strike a balance between improving static analyses while remaining practical for use cases that require quick results in low-resource environments. We propose a summarization-based implementation of a Class-Hierarchy Analysis algorithm for call graph generation of Java programs. Our approach leverages the fact that dependency sets often do not change between builds: we can generate call graphs for these dependencies, cache their generation for subsequent builds, and using a novel <jats:italic>stitching<\/jats:italic> algorithm, Frankenstein, merge all partial results into a complete call graph for the whole program. Our evaluation results show that this lightweight approach can substantially outperform existing frameworks. In terms of speed improvements, Frankenstein surpasses the baselines by up to 38%, requiring an average of just 388 Megabytes of memory. This makes the proposed approach practical for build systems with limited memory resources. Despite these optimizations, our generated call graphs maintain a near-identical set of edges when compared to the baselines, achieving an F<jats:inline-formula><jats:alternatives><jats:tex-math>$$_{1}$$<\/jats:tex-math><mml:math xmlns:mml=\"http:\/\/www.w3.org\/1998\/Math\/MathML\">\n                  <mml:msub>\n                    <mml:mrow\/>\n                    <mml:mn>1<\/mml:mn>\n                  <\/mml:msub>\n                <\/mml:math><\/jats:alternatives><\/jats:inline-formula> score of up to 0.98. This summarization-based approach for call graph generation paves the way for using extended static analyses in build processes.<\/jats:p>","DOI":"10.1007\/s10664-023-10388-7","type":"journal-article","created":{"date-parts":[[2023,11,16]],"date-time":"2023-11-16T09:02:43Z","timestamp":1700125363000},"update-policy":"https:\/\/doi.org\/10.1007\/springer_crossmark_policy","source":"Crossref","is-referenced-by-count":8,"title":["Frankenstein: fast and lightweight call graph generation for software builds"],"prefix":"10.1007","volume":"29","author":[{"ORCID":"https:\/\/orcid.org\/0000-0002-8647-0067","authenticated-orcid":false,"given":"Mehdi","family":"Keshani","sequence":"first","affiliation":[],"role":[{"vocabulary":"crossref","role":"author"}]},{"given":"Georgios","family":"Gousios","sequence":"additional","affiliation":[],"role":[{"vocabulary":"crossref","role":"author"}]},{"given":"Sebastian","family":"Proksch","sequence":"additional","affiliation":[],"role":[{"vocabulary":"crossref","role":"author"}]}],"member":"297","published-online":{"date-parts":[[2023,11,16]]},"reference":[{"issue":"1","key":"10388_CR1","doi-asserted-by":"publisher","first-page":"332","DOI":"10.1007\/s10664-018-9630-9","volume":"24","author":"CV Alexandru","year":"2019","unstructured":"Alexandru CV, Panichella S, Proksch S, Gall HC (2019) Redundancy-free analysis of multi-revision software artifacts. Empir Softw Eng 24(1):332\u2013380. https:\/\/doi.org\/10.1007\/s10664-018-9630-9","journal-title":"Empir Softw Eng"},{"key":"10388_CR2","unstructured":"Ali K (2014) The Separate Compilation Assumption. Ph.D. thesis. University of Waterloo, Ontario, Canada. https:\/\/hdl.handle.net\/10012\/8835"},{"key":"10388_CR3","doi-asserted-by":"publisher","unstructured":"Ali K, Lhot\u00e1k O (2012) Application-Only Call Graph Construction. In: Noble J (ed) In the proceedings of the 26th European Conference on Object-Oriented Programming, ECOOP, Beijing, China. Lecture Notes in Computer Science, vol 7313. Springer, pp 688\u2013712. https:\/\/doi.org\/10.1007\/978-3-642-31057-7_30","DOI":"10.1007\/978-3-642-31057-7_30"},{"key":"10388_CR4","doi-asserted-by":"publisher","unstructured":"Ali K, Lhot\u00e1k O (2013) Averroes: Whole-Program Analysis without the Whole Program. In: Castagna G (ed) In the proceedings of the 27th European Conference on Object-Oriented Programming, ECOOP, Montpellier, France. Lecture Notes in Computer Science, vol 7920. Springer, pp 378\u2013400. https:\/\/doi.org\/10.1007\/978-3-642-39038-8_16","DOI":"10.1007\/978-3-642-39038-8_16"},{"key":"10388_CR5","doi-asserted-by":"publisher","unstructured":"Arzt S, Bodden E (2016) StubDroid: automatic inference of precise data-flow summaries for the android framework. In: Dillon LK, Visser W, Williams LA (eds) In the proceedings of the 38th International Conference on Software Engineering, ICSE, Austin, TX, USA. ACM, pp 725\u2013735. https:\/\/doi.org\/10.1145\/2884781.2884816","DOI":"10.1145\/2884781.2884816"},{"key":"10388_CR6","doi-asserted-by":"publisher","unstructured":"Bacon DF, Sweeney PF (1996) Fast Static Analysis of C++ Virtual Function Calls. In: Anderson L, Coplien J (eds) In the proceedings of the 1996 ACM SIGPLAN Conference on Object-Oriented Programming Systems, Languages & Applications, OOPSLA, San Jose, California, USA. ACM, pp 324\u2013341. https:\/\/doi.org\/10.1145\/236337.236371","DOI":"10.1145\/236337.236371"},{"key":"10388_CR7","doi-asserted-by":"publisher","unstructured":"Ball T, Rajamani SK (2001) Bebop: a path-sensitive interprocedural dataflow engine. In: Field J, Snelting G (eds) In the proceedings of the ACM SIGPLAN-SIGSOFT Workshop on Program Analysis For Software Tools and Engineering, PASTE, Snowbird, Utah, USA. ACM, pp 97\u2013103. https:\/\/doi.org\/10.1145\/379605.379690","DOI":"10.1145\/379605.379690"},{"issue":"1","key":"10388_CR8","doi-asserted-by":"publisher","first-page":"1:1","DOI":"10.1145\/3418209","volume":"21","author":"P Boldi","year":"2021","unstructured":"Boldi P, Gousios G (2021) Fine-Grained Network Analysis for Modern Software Ecosystems. ACM Trans Internet Technol 21(1):1:1-1:14. https:\/\/doi.org\/10.1145\/3418209","journal-title":"ACM Trans Internet Technol"},{"key":"10388_CR9","doi-asserted-by":"publisher","unstructured":"Bracha G, Odersky M, Stoutamire D, Wadler P (1998) Making the Future Safe for the Past: Adding Genericity to the Java Programming Language. In: Freeman-Benson BN, Chambers C (eds) In the proceedings of the ACM SIGPLAN Conference on Object-Oriented Programming Systems, Languages & Applications, OOPSLA, Vancouver, British Columbia, Canada. ACM, pp 183\u2013200. https:\/\/doi.org\/10.1145\/286936.286957","DOI":"10.1145\/286936.286957"},{"key":"10388_CR10","unstructured":"Chord (2023) A program analysis platform for java. https:\/\/www.seas.upenn.edu\/~mhnaik\/chord\/user_guide\/index.html. Accessed 15 Jan 2022"},{"key":"10388_CR11","doi-asserted-by":"publisher","unstructured":"Dean J, Grove D, Chambers C (1995) Optimization of Object-Oriented Programs Using Static Class Hierarchy Analysis. In: Olthoff WG (ed) In the poroceedings of the 9th European Conference on Object-Oriented Programming, ECOOP, \u00c5rhus, Denmark, Lecture Notes in Computer Science, vol 952. Springer, pp 77\u2013101. https:\/\/doi.org\/10.1007\/3-540-49538-X_5","DOI":"10.1007\/3-540-49538-X_5"},{"key":"10388_CR12","unstructured":"Dependabot. (2023) https:\/\/github.com\/dependabot. Accessed 15 Jan 2022"},{"key":"10388_CR13","doi-asserted-by":"publisher","unstructured":"Dillig I, Dillig T, Aiken A, Sagiv M (2011) Precise and compact modular procedure summaries for heap manipulating programs. In: Hall MW, Padua DA (eds) Proceedings of the 32nd ACM SIGPLAN Conference on Programming Language Design and Implementation, PLDI 2011, San Jose, CA, USA. ACM, pp 567\u2013577. https:\/\/doi.org\/10.1145\/1993498.1993565","DOI":"10.1145\/1993498.1993565"},{"issue":"1","key":"10388_CR14","doi-asserted-by":"publisher","first-page":"7:1","DOI":"10.1145\/2803171","volume":"25","author":"R Dyer","year":"2015","unstructured":"Dyer R, Nguyen HA, Rajan H, Nguyen TN (2015) Boa: Ultra-Large-Scale Software Repository and Source-Code Mining. ACM Trans Softw Eng Methodol 25(1):7:1-7:34. https:\/\/doi.org\/10.1145\/2803171","journal-title":"ACM Trans Softw Eng Methodol"},{"key":"10388_CR15","doi-asserted-by":"publisher","unstructured":"Eichberg M, K\u00fcbler F, Helm D, Reif M, Salvaneschi G, Mezini M (2018) Lattice based modularization of static analyses. In: Dolby J, Halfond WGJ, Mishra A (eds) In the companion proceedings for the ISSTA\/ECOOP Workshops, Amsterdam, Netherlands. ACM, pp 113\u2013118. https:\/\/doi.org\/10.1145\/3236454.3236509","DOI":"10.1145\/3236454.3236509"},{"key":"10388_CR16","unstructured":"Goldberg A, Robson D (1983) Smalltalk-80: The Language and Its Implementation. Addison-Wesley"},{"key":"10388_CR17","doi-asserted-by":"publisher","unstructured":"Gopan D, Reps TW (2007) Low-Level Library Analysis and Summarization. In: Damm W, Hermanns H (eds) In the proceedings of the 19th International Conference on Computer Aided Verification, CAV, Germany, Lecture Notes in Computer Science, vol 4590. Springer, pp 68\u201381. https:\/\/doi.org\/10.1007\/978-3-540-73368-3_10","DOI":"10.1007\/978-3-540-73368-3_10"},{"key":"10388_CR18","unstructured":"h2o project (2023) https:\/\/mvnrepository.com\/artifact\/ai.h2o\/sparkling-water-package_2.11\/3.26.8-2.4. Accessed 21 Oct 2022"},{"key":"10388_CR19","doi-asserted-by":"publisher","unstructured":"Hejderup J, van Deursen A, Gousios G (2018) Software ecosystem call graph for dependency management. In: Zisman A, Apel S (eds) In the proceedings of the 40th International Conference on Software Engineering: New Ideas and Emerging Results, ICSE (NIER), Gothenburg, Sweden. ACM, pp 101\u2013104. https:\/\/doi.org\/10.1145\/3183399.3183417","DOI":"10.1145\/3183399.3183417"},{"key":"10388_CR20","doi-asserted-by":"publisher","unstructured":"Helm D, K\u00fcbler F, Reif M, Eichberg M, Mezini M (2020) Modular collaborative program analysis in OPAL. In: Devanbu P, Cohen MB, Zimmermann T (eds) In the proceedings of the 28th ACM Joint European Software Engineering Conference and Symposium on the Foundations of Software Engineering, ESEC\/FSE, Virtual Event, USA. ACM, pp 184\u2013196. https:\/\/doi.org\/10.1145\/3368089.3409765","DOI":"10.1145\/3368089.3409765"},{"key":"10388_CR21","unstructured":"T. j. watson libraries for analysis. (2023) http:\/\/wala.sf.net\/. Accessed 15 Jan 2022"},{"key":"10388_CR22","unstructured":"Jol (2023) https:\/\/openjdk.org\/projects\/code-tools\/jol\/. Accessed 06 May 2023"},{"key":"10388_CR23","doi-asserted-by":"publisher","unstructured":"Keshani M (2021) Scalable Call Graph Constructor for Maven. In: In the companion proceedings of the 43rd IEEE\/ACM International Conference on Software Engineering, ICSE Companion, Madrid, Spain. IEEE, pp 99\u2013101. https:\/\/doi.org\/10.1109\/ICSE-Companion52605.2021.00046","DOI":"10.1109\/ICSE-Companion52605.2021.00046"},{"issue":"1","key":"10388_CR24","doi-asserted-by":"publisher","first-page":"384","DOI":"10.1007\/s10664-017-9521-5","volume":"23","author":"RG Kula","year":"2018","unstructured":"Kula RG, Germ\u00e1n DM, Ouni A, Ishio T, Inoue K (2018) Do developers update their library dependencies? - An empirical study on the impact of security advisories on library migration. Empir Softw Eng 23(1):384\u2013417. https:\/\/doi.org\/10.1007\/s10664-017-9521-5","journal-title":"Empir Softw Eng"},{"key":"10388_CR25","doi-asserted-by":"publisher","unstructured":"Kulkarni S, Mangal R, Zhang X, Naik M (2016) Accelerating program analyses by cross-program training. In: Visser E, Smaragdakis Y (eds) In the proceedings of the ACM SIGPLAN International Conference on Object-Oriented Programming, Systems, Languages, and Applications, OOPSLA, part of SPLASH, Amsterdam, The Netherland. ACM, pp 359\u2013377. https:\/\/doi.org\/10.1145\/2983990.2984023","DOI":"10.1145\/2983990.2984023"},{"key":"10388_CR26","unstructured":"Lam P, Bodden E, Lhot\u00e1k O, Hendren L (2011) The Soot framework for Java program analysis: a retrospective. In: Cetus Users and Compiler Infrastructure Workshop CETUS, vol 15"},{"issue":"4","key":"10388_CR27","doi-asserted-by":"publisher","first-page":"323","DOI":"10.1145\/161494.161501","volume":"1","author":"W Landi","year":"1992","unstructured":"Landi W (1992) Undecidability of Static Analysis. LOPLAS 1(4):323\u2013337. https:\/\/doi.org\/10.1145\/161494.161501","journal-title":"LOPLAS"},{"issue":"2","key":"10388_CR28","doi-asserted-by":"publisher","first-page":"44","DOI":"10.1145\/2644805","volume":"58","author":"B Livshits","year":"2015","unstructured":"Livshits B, Sridharan M, Smaragdakis Y, Lhot\u00e1k O, Amaral JN, Chang BE, Guyer SZ, Khedker UP, M\u00f8ller A, Vardoulakis D (2015) In defense of soundiness: a manifesto. Commun ACM 58(2):44\u201346. https:\/\/doi.org\/10.1145\/2644805","journal-title":"Commun ACM"},{"key":"10388_CR29","unstructured":"Maven version ranges. (2023) https:\/\/maven.apache.org\/enforcer\/enforcer-rules\/versionRanges.html. Accessed 21 Oct 2022"},{"key":"10388_CR30","doi-asserted-by":"publisher","unstructured":"Nielsen BB, Torp MT, M\u00f8ller A (2021) Modular call graph construction for security scanning of Node.js applications. In: Cadar C, Zhang X (eds) In the Proceedings of the 30th ACM SIGSOFT International Symposium on Software Testing and Analysis, ISSTA, Virtual Event, Denmark. ACM, pp 29\u201341. https:\/\/doi.org\/10.1145\/3460319.3464836","DOI":"10.1145\/3460319.3464836"},{"issue":"5","key":"10388_CR31","doi-asserted-by":"publisher","first-page":"1467","DOI":"10.1145\/186025.186041","volume":"16","author":"G Ramalingam","year":"1994","unstructured":"Ramalingam G (1994) The Undecidability of Aliasing. ACM Trans Program Lang Syst 16(5):1467\u20131471. https:\/\/doi.org\/10.1145\/186025.186041","journal-title":"ACM Trans Program Lang Syst"},{"key":"10388_CR32","doi-asserted-by":"publisher","unstructured":"Reif M, Eichberg M, Hermann B, Lerch J, Mezini M (2016) Call graph construction for Java libraries. In: Zimmermann T, Cleland-Huang J, Su Z (eds) In the proceedings of the 24th ACM SIGSOFT International Symposium on Foundations of Software Engineering, FSE, Seattle, WA, USA. ACM, pp 474\u2013486. https:\/\/doi.org\/10.1145\/2950290.2950312","DOI":"10.1145\/2950290.2950312"},{"key":"10388_CR33","doi-asserted-by":"publisher","unstructured":"Reif M, K\u00fcbler F, Eichberg M, Helm D, Mezini M (2019) Judge: identifying, understanding, and evaluating sources of unsoundness in call graphs. In: Zhang D, M\u00f8ller A (eds) In the proceedings of the 28th ACM SIGSOFT International Symposium on Software Testing and Analysis, ISSTA, Beijing, China. ACM, pp 251\u2013261. https:\/\/doi.org\/10.1145\/3293882.3330555","DOI":"10.1145\/3293882.3330555"},{"key":"10388_CR34","unstructured":"Repository of the paper. (2023) https:\/\/github.com\/ashkboos\/LightWeightCGs\/tree\/main"},{"key":"10388_CR35","doi-asserted-by":"publisher","unstructured":"Reps TW, Horwitz S, Sagiv S (1995) Precise Interprocedural Dataflow Analysis via Graph Reachability. In: Cytron RK, Lee P (eds) Conference Record of POPL: 22nd ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, San Francisco, California, USA. ACM Press, pp 49\u201361. https:\/\/doi.org\/10.1145\/199448.199462","DOI":"10.1145\/199448.199462"},{"issue":"1","key":"10388_CR36","doi-asserted-by":"publisher","first-page":"162","DOI":"10.1145\/345099.345137","volume":"22","author":"T Reps","year":"2000","unstructured":"Reps T (2000) Undecidability of context-sensitive data-dependence analysis. ACM Trans Program Lang Syst, TOPLAS 22(1):162\u2013186","journal-title":"ACM Trans Program Lang Syst, TOPLAS"},{"key":"10388_CR37","doi-asserted-by":"publisher","unstructured":"Rountev A, Kagan S, Marlowe TJ (2006) Interprocedural Dataflow Analysis in the Presence of Large Libraries. In: Mycroft A, Zeller A (eds) In the proceedings of the 15th International Conference on Compiler Construction, CC, Held as Part of the Joint European Conferences on Theory and Practice of Software, ETAPS, Vienna, Austria, Lecture Notes in Computer Science, vol 3923. Springer, pp 2\u201316. https:\/\/doi.org\/10.1007\/11688839_2","DOI":"10.1007\/11688839_2"},{"key":"10388_CR38","doi-asserted-by":"publisher","unstructured":"Rountev A, Sharp M, Xu G (2008) IDE Dataflow Analysis in the Presence of Large Object-Oriented Libraries. In: Hendren LJ (ed) In the proceedings of the 17th International Conference on Compiler Construction, CC, Held as Part of the Joint European Conferences on Theory and Practice of Software, ETAPS, Budapest, Hungary, Lecture Notes in Computer Science, vol 4959. Springer, pp 53\u201368. https:\/\/doi.org\/10.1007\/978-3-540-78791-4_4","DOI":"10.1007\/978-3-540-78791-4_4"},{"key":"10388_CR39","doi-asserted-by":"publisher","unstructured":"Schubert PD, Hermann B, Bodden E (2021) Lossless, Persisted Summarization of Static Callgraph, Points-To and Data-Flow Analysis. In: M\u00f8ller A, Sridharan M (eds) In the proceedings of the 35th European Conference on Object-Oriented Programming, ECOOP, Aarhus, Denmark (Virtual Conference), LIPIcs, vol 194. Schloss Dagstuhl - Leibniz-Zentrum f\u00fcr Informatik, pp 2:1\u20132:31. https:\/\/doi.org\/10.4230\/LIPIcs.ECOOP.2021.2","DOI":"10.4230\/LIPIcs.ECOOP.2021.2"},{"key":"10388_CR40","unstructured":"Sharir M, Pnueli A et al (1978) Two approaches to interprocedural data flow analysis. In: New York University. Courant Institute of Mathematical Sciences"},{"key":"10388_CR41","doi-asserted-by":"publisher","unstructured":"Shivers O (1988) Control-Flow Analysis in Scheme. In: Wexelblat RL (ed) In the proceedings of the ACM SIGPLAN Conference on Programming Language Design and Implementation, PLDI, Atlanta, Georgia, USA. ACM, pp 164\u2013174. https:\/\/doi.org\/10.1145\/53990.54007","DOI":"10.1145\/53990.54007"},{"key":"10388_CR42","unstructured":"Shrinkwrap resolvers. (2023) https:\/\/github.com\/shrinkwrap\/resolver. Accessed 15 Jan 2022"},{"key":"10388_CR43","doi-asserted-by":"publisher","unstructured":"Souter AL, Pollock LL (2001) Incremental Call Graph Reanalysis for Object-Oriented Software Maintenance. In: In the proceedings of the International Conference on Software Maintenance, ICSM, Florence, Italy. IEEE Computer Society, pp 682\u2013691. https:\/\/doi.org\/10.1109\/ICSM.2001.972787","DOI":"10.1109\/ICSM.2001.972787"},{"issue":"4","key":"10388_CR44","doi-asserted-by":"publisher","first-page":"355","DOI":"10.1145\/161494.161517","volume":"1","author":"A Srivastava","year":"1992","unstructured":"Srivastava A (1992) Unreachable Procedures in Object-Oriented Programming. LOPLAS 1(4):355\u2013364. https:\/\/doi.org\/10.1145\/161494.161517","journal-title":"LOPLAS"},{"key":"10388_CR45","doi-asserted-by":"publisher","unstructured":"Sui L, Dietrich J, Emery M, Rasheed S, Tahir A (2018) On the Soundness of Call Graph Construction in the Presence of Dynamic Language Features - A Benchmark and Tool Evaluation. In: Ryu S (ed) In the proceedings of the 16th Asian Symposium on Programming Languages and Systems, APLAS, Wellington, New Zealand, Lecture Notes in Computer Science, vol 11275. Springer, pp 69\u201388. https:\/\/doi.org\/10.1007\/978-3-030-02768-1_4","DOI":"10.1007\/978-3-030-02768-1_4"},{"key":"10388_CR46","doi-asserted-by":"publisher","unstructured":"Sui L, Dietrich J, Tahir A, Fourtounis G (2020) On the recall of static call graph construction in practice. In: Rothermel G, Bae D (eds) In the proceedings of the 42nd International Conference on Software Engineering, ICSE, Seoul, South Korea. ACM, pp 1049\u20131060. https:\/\/doi.org\/10.1145\/3377811.3380441","DOI":"10.1145\/3377811.3380441"},{"key":"10388_CR47","doi-asserted-by":"publisher","unstructured":"Sundaresan V, Hendren LJ, Razafimahefa C, Vall\u00e9e-Rai R, Lam P, Gagnon E, Godin C (2000) Practical virtual method call resolution for Java. In: Rosson MB, Lea D (eds) In the proceedings of the ACM SIGPLAN Conference on Object-Oriented Programming Systems, Languages & Applications, OOPSLA, Minneapolis, Minnesota, USA. ACM, pp 264\u2013280. https:\/\/doi.org\/10.1145\/353171.353189","DOI":"10.1145\/353171.353189"},{"key":"10388_CR48","unstructured":"The doop project. (2023) http:\/\/doop.program-analysis.org\/. Accessed 15 Jan 2022"},{"key":"10388_CR49","doi-asserted-by":"publisher","unstructured":"Tip F, Palsberg J (2000) Scalable propagation-based call graph construction algorithms. In: Rosson MB, Lea D (eds) In the proceedings of the ACM SIGPLAN Conference on Object-Oriented Programming Systems, Languages & Applications OOPSLA, Minneapolis, Minnesota, USA. ACM, pp 281\u2013293. https:\/\/doi.org\/10.1145\/353171.353190","DOI":"10.1145\/353171.353190"},{"key":"10388_CR50","doi-asserted-by":"publisher","unstructured":"Toman J, Grossman D (2017) Taming the Static Analysis Beast. In: Lerner BS, Bod\u00edk R, Krishnamurthi S (eds) 2nd Summit on Advances in Programming Languages, SNAPL, Asilomar, CA, USA, LIPIcs, vol 71. Schloss Dagstuhl - Leibniz-Zentrum f\u00fcr Informatik, pp 18:1\u201318:14. https:\/\/doi.org\/10.4230\/LIPIcs.SNAPL.2017.18","DOI":"10.4230\/LIPIcs.SNAPL.2017.18"},{"key":"10388_CR51","doi-asserted-by":"publisher","unstructured":"Tripp O, Guarnieri S, Pistoia M, Aravkin AY (2014) ALETHEIA: Improving the Usability of Static Security Analysis. In: Ahn G, Yung M, Li N (eds) In the proceedings of the ACM SIGSAC Conference on Computer and Communications Security, Scottsdale, AZ, USA. ACM, pp 762\u2013774. https:\/\/doi.org\/10.1145\/2660267.2660339","DOI":"10.1145\/2660267.2660339"},{"key":"10388_CR52","doi-asserted-by":"publisher","unstructured":"Utture A, Liu S, Kalhauge CG, Palsberg J (2022) Striking a Balance: Pruning False-Positives from Static Call Graphs. In: In the proceedings of the 44th IEEE\/ACM International Conference on Software Engineering, ICSE, Pittsburgh, PA, USA. ACM, pp 2043\u20132055. https:\/\/doi.org\/10.1145\/3510003.3510166","DOI":"10.1145\/3510003.3510166"},{"key":"10388_CR53","doi-asserted-by":"publisher","unstructured":"Vasilescu B, Yu Y, Wang H, Devanbu PT, Filkov V (2015) Quality and productivity outcomes relating to continuous integration in GitHub. In: Nitto ED, Harman M, Heymans P (eds) In the proceedings of the 10th Joint Meeting on Foundations of Software Engineering, ESEC\/FSE, Bergamo, Italy. ACM , pp 805\u2013816. https:\/\/doi.org\/10.1145\/2786805.2786850","DOI":"10.1145\/2786805.2786850"},{"key":"10388_CR54","doi-asserted-by":"publisher","unstructured":"Whaley J, Rinard MC (1999) Compositional Pointer and Escape Analysis for Java Programs. In: Hailpern B, Northrop LM, Berman AM (eds) In the proceedings of the ACM SIGPLAN Conference on Object-Oriented Programming Systems. Languages & Applications, OOPSLA, Denver, Colorado, USA. ACM, pp 187\u2013206. https:\/\/doi.org\/10.1145\/320384.320400","DOI":"10.1145\/320384.320400"}],"container-title":["Empirical Software Engineering"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/link.springer.com\/content\/pdf\/10.1007\/s10664-023-10388-7.pdf","content-type":"application\/pdf","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/link.springer.com\/article\/10.1007\/s10664-023-10388-7\/fulltext.html","content-type":"text\/html","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/link.springer.com\/content\/pdf\/10.1007\/s10664-023-10388-7.pdf","content-type":"application\/pdf","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2024,1,20]],"date-time":"2024-01-20T03:03:00Z","timestamp":1705719780000},"score":1,"resource":{"primary":{"URL":"https:\/\/link.springer.com\/10.1007\/s10664-023-10388-7"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2023,11,16]]},"references-count":54,"journal-issue":{"issue":"1","published-print":{"date-parts":[[2024,1]]}},"alternative-id":["10388"],"URL":"https:\/\/doi.org\/10.1007\/s10664-023-10388-7","relation":{},"ISSN":["1382-3256","1573-7616"],"issn-type":[{"value":"1382-3256","type":"print"},{"value":"1573-7616","type":"electronic"}],"subject":[],"published":{"date-parts":[[2023,11,16]]},"assertion":[{"value":"30 August 2023","order":1,"name":"accepted","label":"Accepted","group":{"name":"ArticleHistory","label":"Article History"}},{"value":"16 November 2023","order":2,"name":"first_online","label":"First Online","group":{"name":"ArticleHistory","label":"Article History"}},{"order":1,"name":"Ethics","group":{"name":"EthicsHeading","label":"Declarations"}},{"value":"The authors have no conflict of interest.","order":2,"name":"Ethics","group":{"name":"EthicsHeading","label":"Conflicts of interests"}}],"article-number":"1"}}