{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,6,18]],"date-time":"2026-06-18T04:09:29Z","timestamp":1781755769229,"version":"3.54.5"},"publisher-location":"Cham","reference-count":40,"publisher":"Springer International Publishing","isbn-type":[{"value":"9783030027674","type":"print"},{"value":"9783030027681","type":"electronic"}],"license":[{"start":{"date-parts":[[2018,1,1]],"date-time":"2018-01-01T00:00:00Z","timestamp":1514764800000},"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":[],"published-print":{"date-parts":[[2018]]},"DOI":"10.1007\/978-3-030-02768-1_4","type":"book-chapter","created":{"date-parts":[[2018,10,21]],"date-time":"2018-10-21T11:42:27Z","timestamp":1540122147000},"page":"69-88","update-policy":"https:\/\/doi.org\/10.1007\/springer_crossmark_policy","source":"Crossref","is-referenced-by-count":20,"title":["On the Soundness of Call Graph Construction in the Presence of Dynamic Language Features - A Benchmark and Tool Evaluation"],"prefix":"10.1007","author":[{"ORCID":"https:\/\/orcid.org\/0000-0002-8350-5287","authenticated-orcid":false,"given":"Li","family":"Sui","sequence":"first","affiliation":[],"role":[{"vocabulary":"crossref","role":"author"}]},{"ORCID":"https:\/\/orcid.org\/0000-0001-9019-6550","authenticated-orcid":false,"given":"Jens","family":"Dietrich","sequence":"additional","affiliation":[],"role":[{"vocabulary":"crossref","role":"author"}]},{"given":"Michael","family":"Emery","sequence":"additional","affiliation":[],"role":[{"vocabulary":"crossref","role":"author"}]},{"ORCID":"https:\/\/orcid.org\/0000-0001-7683-4296","authenticated-orcid":false,"given":"Shawn","family":"Rasheed","sequence":"additional","affiliation":[],"role":[{"vocabulary":"crossref","role":"author"}]},{"ORCID":"https:\/\/orcid.org\/0000-0001-9454-1366","authenticated-orcid":false,"given":"Amjed","family":"Tahir","sequence":"additional","affiliation":[],"role":[{"vocabulary":"crossref","role":"author"}]}],"member":"297","published-online":{"date-parts":[[2018,10,22]]},"reference":[{"key":"4_CR1","unstructured":"Invokedynamic rectifier\/project serializer. http:\/\/www.opal-project.de\/DeveloperTools.html"},{"key":"4_CR2","unstructured":"The Java language specification. https:\/\/docs.oracle.com\/javase\/specs"},{"key":"4_CR3","unstructured":"SPECjvm2008 benchmark. www.spec.org\/jvm2008"},{"key":"4_CR4","doi-asserted-by":"crossref","unstructured":"Andreasen, E.S., M\u00f8ller, A., Nielsen, B.B.: Systematic approaches for increasing soundness and precision of static analyzers. In: Proceedings of SOAP 2017. ACM (2017)","DOI":"10.1145\/3088515.3088521"},{"key":"4_CR5","doi-asserted-by":"crossref","unstructured":"Bacon, D.F., Sweeney, P.F.: Fast static analysis of c++ virtual function calls. In: Proceedings of the OOPSLA 1996. ACM (1996)","DOI":"10.1145\/236337.236371"},{"key":"4_CR6","doi-asserted-by":"crossref","unstructured":"Blackburn, S.M., et al.: The DaCapo benchmarks: Java benchmarking development and analysis. In: Proceedings of the OOPSLA 2006. ACM (2006)","DOI":"10.1145\/1167473.1167488"},{"key":"4_CR7","doi-asserted-by":"crossref","unstructured":"Bodden, E.: Invokedynamic support in soot. In: Proceedings of the SOAP 2012. ACM (2012)","DOI":"10.1145\/2259051.2259059"},{"key":"4_CR8","doi-asserted-by":"crossref","unstructured":"Bodden, E., Sewe, A., Sinschek, J., Oueslati, H., Mezini, M.: Taming reflection: aiding static analysis in the presence of reflection and custom class loaders. In: Proceedings of the ICSE 2011. ACM (2011)","DOI":"10.1145\/1985793.1985827"},{"key":"4_CR9","unstructured":"Dietrich, J., Jezek, K., Rasheed, S., Tahir, A., Potanin, A.: Evil pickles: DoS attacks based on object-graph engineering. In: Proceedings of the ECOOP 2017. LZI (2017)"},{"issue":"4","key":"4_CR10","doi-asserted-by":"publisher","first-page":"1:1","DOI":"10.5381\/jot.2017.16.4.a1","volume":"16","author":"J Dietrich","year":"2017","unstructured":"Dietrich, J., Schole, H., Sui, L., Tempero, E.: XCorpus-an executable corpus of Java programs. JOT 16(4), 1:1\u201324 (2017)","journal-title":"JOT"},{"key":"4_CR11","doi-asserted-by":"crossref","unstructured":"Dietrich, J., Sui, L., Rasheed, S., Tahir, A.: On the construction of soundness oracles. In: Proceedings of the SOAP 2017. ACM (2017)","DOI":"10.1145\/3088515.3088520"},{"key":"4_CR12","unstructured":"Dolby, J., Fink, S.J., Sridharan, M.: T.J. Watson Libraries for Analysis (2015). http:\/\/wala.sourceforge.net"},{"key":"4_CR13","doi-asserted-by":"crossref","unstructured":"Ernst, M.D.: Static and dynamic analysis: synergy and duality. In: Proceedings of the WODA 2003 (2003)","DOI":"10.1145\/996821.996823"},{"key":"4_CR14","doi-asserted-by":"crossref","unstructured":"Foote, B., Johnson, R.E.: Reflective facilities in Smalltalk-80. In: Proceedings of the OOPSLA 1989. ACM (1989)","DOI":"10.1145\/74877.74911"},{"key":"4_CR15","doi-asserted-by":"crossref","unstructured":"Fourtounis, G., Kastrinis, G., Smaragdakis, Y.: Static analysis of Java dynamic proxies. In: Proceedings of the ISSTA 2018. ACM (2018)","DOI":"10.1145\/3213846.3213864"},{"key":"4_CR16","series-title":"Java Series","volume-title":"The Java Language Specification","author":"J Gosling","year":"2014","unstructured":"Gosling, J., Joy, B., Steele, G., Bracha, G., Buckley, A.: The Java Language Specification. Java Series, Java SE 8 edn. Addison-Wesley Professional, Boston (2014)","edition":"Java SE 8"},{"key":"4_CR17","doi-asserted-by":"crossref","unstructured":"Grech, N., Fourtounis, G., Francalanza, A., Smaragdakis, Y.: Heaps don\u2019t lie: countering unsoundness with heap snapshots. In: Proceedings of the OOPSLA 2017. ACM (2017)","DOI":"10.1145\/3133892"},{"key":"4_CR18","doi-asserted-by":"crossref","unstructured":"Grove, D., DeFouw, G., Dean, J., Chambers, C.: Call graph construction in object-oriented languages. In: Proceedings of the OOPSLA 1997. ACM (1997)","DOI":"10.1145\/263698.264352"},{"key":"4_CR19","doi-asserted-by":"crossref","unstructured":"Holzinger, P., Triller, S., Bartel, A., Bodden, E.: An in-depth study of more than ten years of Java exploitation. In: Proceedings of the CCS 2016. ACM (2016)","DOI":"10.1145\/2976749.2978361"},{"key":"4_CR20","unstructured":"Jezek, K., Dietrich, J.: Magic with dynamo-flexible cross-component linking for Java with invokedynamic. In: Proceedings of the ECOOP 2016. LZI (2016)"},{"key":"4_CR21","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"327","DOI":"10.1007\/3-540-45337-7_18","volume-title":"ECOOP 2001 \u2014 Object-Oriented Programming","author":"G Kiczales","year":"2001","unstructured":"Kiczales, G., Hilsdale, E., Hugunin, J., Kersten, M., Palm, J., Griswold, W.G.: An overview of AspectJ. In: Knudsen, J.L. (ed.) ECOOP 2001. LNCS, vol. 2072, pp. 327\u2013354. Springer, Heidelberg (2001). https:\/\/doi.org\/10.1007\/3-540-45337-7_18"},{"key":"4_CR22","doi-asserted-by":"crossref","unstructured":"Landman, D., Serebrenik, A., Vinju, J.J.: Challenges for static analysis of Java reflection-literature review and empirical study. In: Proceedings of the ICSE 2017. IEEE (2017)","DOI":"10.1109\/ICSE.2017.53"},{"key":"4_CR23","doi-asserted-by":"crossref","unstructured":"Lhot\u00e1k, O.: Comparing call graphs. In: Proceedings of the PASTE 2007. ACM (2007)","DOI":"10.1145\/1251535.1251542"},{"key":"4_CR24","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"27","DOI":"10.1007\/978-3-662-44202-9_2","volume-title":"ECOOP 2014 \u2013 Object-Oriented Programming","author":"Y Li","year":"2014","unstructured":"Li, Y., Tan, T., Sui, Y., Xue, J.: Self-inferencing reflection resolution for Java. In: Jones, R. (ed.) ECOOP 2014. LNCS, vol. 8586, pp. 27\u201353. Springer, Heidelberg (2014). https:\/\/doi.org\/10.1007\/978-3-662-44202-9_2"},{"key":"4_CR25","doi-asserted-by":"crossref","unstructured":"Liu, J., Li, Y., Tan, T., Xue, J.: Reflection analysis for Java: uncovering more reflective targets precisely. In: Proceedings of the ISSRE 2017. IEEE (2017)","DOI":"10.1109\/ISSRE.2017.36"},{"issue":"2","key":"4_CR26","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, J.N., Chang, B.Y.E., Guyer, S.Z., Khedker, U.P., M\u00f8ller, A., Vardoulakis, D.: In defense of soundiness: a manifesto. CACM 58(2), 44\u201346 (2015)","journal-title":"CACM"},{"key":"4_CR27","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"139","DOI":"10.1007\/11575467_11","volume-title":"Programming Languages and Systems","author":"B Livshits","year":"2005","unstructured":"Livshits, B., Whaley, J., Lam, M.S.: Reflection analysis for Java. In: Yi, K. (ed.) APLAS 2005. LNCS, vol. 3780, pp. 139\u2013160. Springer, Heidelberg (2005). https:\/\/doi.org\/10.1007\/11575467_11"},{"key":"4_CR28","doi-asserted-by":"crossref","unstructured":"Mastrangelo, L., Ponzanelli, L., Mocci, A., Lanza, M., Hauswirth, M., Nystrom, N.: Use at your own risk: the Java unsafe API in the wild. In: Proceedings of the OOPSLA 2015. ACM (2015)","DOI":"10.1145\/2814270.2814313"},{"issue":"2","key":"4_CR29","doi-asserted-by":"publisher","first-page":"158","DOI":"10.1145\/279310.279314","volume":"7","author":"GC Murphy","year":"1998","unstructured":"Murphy, G.C., Notkin, D., Griswold, W.G., Lan, E.S.: An empirical study of static call graph extractors. ACM TOSEM 7(2), 158\u2013191 (1998)","journal-title":"ACM TOSEM"},{"key":"4_CR30","doi-asserted-by":"crossref","unstructured":"Reif, M., K\u00fcbler, F., Eichberg, M., Mezini, M.: Systematic evaluation of the unsoundness of call graph construction algorithms for Java. In: Proceedings of the SOAP 2018. ACM (2018)","DOI":"10.1145\/3236454.3236503"},{"key":"4_CR31","doi-asserted-by":"crossref","unstructured":"Rountev, A., Kagan, S., Gibas, M.: Evaluating the imprecision of static analysis. In: Proceedings of the PASTE 2004. ACM (2004)","DOI":"10.1145\/996821.996829"},{"key":"4_CR32","first-page":"216","volume":"3","author":"BG Ryder","year":"1979","unstructured":"Ryder, B.G.: Constructing the call graph of a program. IEEE TSE 3, 216\u2013226 (1979)","journal-title":"IEEE TSE"},{"key":"4_CR33","unstructured":"Shipilev, A.: JEP 280: indify string concatenation. http:\/\/openjdk.java.net\/jeps\/280"},{"key":"4_CR34","unstructured":"Shivers, O.: Control-flow analysis of higher-order languages. Ph.D. thesis, Carnegie Mellon University (1991)"},{"key":"4_CR35","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"485","DOI":"10.1007\/978-3-319-26529-2_26","volume-title":"Programming Languages and Systems","author":"Y Smaragdakis","year":"2015","unstructured":"Smaragdakis, Y., Balatsouras, G., Kastrinis, G., Bravenboer, M.: More sound static handling of Java reflection. In: Feng, X., Park, S. (eds.) APLAS 2015. LNCS, vol. 9458, pp. 485\u2013503. Springer, Cham (2015). https:\/\/doi.org\/10.1007\/978-3-319-26529-2_26"},{"key":"4_CR36","doi-asserted-by":"crossref","unstructured":"Smith, B.C.: Reflection and semantics in LISP. In: Proceedings of the POPL 1984. ACM (1984)","DOI":"10.1145\/800017.800513"},{"key":"4_CR37","doi-asserted-by":"crossref","unstructured":"Sui, L., Dietrich, J., Tahir, A.: On the use of mined stack traces to improve the soundness of statically constructed call graphs. In: Proceedings of the APSEC 2017. IEEE (2017)","DOI":"10.1109\/APSEC.2017.83"},{"key":"4_CR38","doi-asserted-by":"crossref","unstructured":"Sundaresan, V., et al.: Practical virtual method call resolution for Java. In: Proceedings of the OOPSLA 2000. ACM (2000)","DOI":"10.1145\/353171.353189"},{"key":"4_CR39","doi-asserted-by":"crossref","unstructured":"Tempero, E., Anslow, C., Dietrich, J., Han, T., Li, J., Lumpe, M., Melton, H., Noble, J.: Qualitas corpus: a curated collection of Java code for empirical studies. In: Proceedings of the APSEC 2010 (2010)","DOI":"10.1109\/APSEC.2010.46"},{"key":"4_CR40","doi-asserted-by":"crossref","unstructured":"Tip, F., Palsberg, J.: Scalable propagation-based call graph construction algorithms. In: Proceedings of the OOPSLA 2000. ACM (2000)","DOI":"10.1145\/353171.353190"}],"container-title":["Lecture Notes in Computer Science","Programming Languages and Systems"],"original-title":[],"link":[{"URL":"http:\/\/link.springer.com\/content\/pdf\/10.1007\/978-3-030-02768-1_4","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2022,9,4]],"date-time":"2022-09-04T10:14:00Z","timestamp":1662286440000},"score":1,"resource":{"primary":{"URL":"http:\/\/link.springer.com\/10.1007\/978-3-030-02768-1_4"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2018]]},"ISBN":["9783030027674","9783030027681"],"references-count":40,"URL":"https:\/\/doi.org\/10.1007\/978-3-030-02768-1_4","relation":{},"ISSN":["0302-9743","1611-3349"],"issn-type":[{"value":"0302-9743","type":"print"},{"value":"1611-3349","type":"electronic"}],"subject":[],"published":{"date-parts":[[2018]]},"assertion":[{"value":"APLAS","order":1,"name":"conference_acronym","label":"Conference Acronym","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"Asian Symposium on Programming Languages and Systems","order":2,"name":"conference_name","label":"Conference Name","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"Wellington","order":3,"name":"conference_city","label":"Conference City","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"New Zealand","order":4,"name":"conference_country","label":"Conference Country","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"2018","order":5,"name":"conference_year","label":"Conference Year","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"2 December 2018","order":7,"name":"conference_start_date","label":"Conference Start Date","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"6 December 2018","order":8,"name":"conference_end_date","label":"Conference End Date","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"16","order":9,"name":"conference_number","label":"Conference Number","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"aplas2018","order":10,"name":"conference_id","label":"Conference ID","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"http:\/\/aplas2018.org\/","order":11,"name":"conference_url","label":"Conference URL","group":{"name":"ConferenceInfo","label":"Conference Information"}}]}}