{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2025,12,6]],"date-time":"2025-12-06T04:50:00Z","timestamp":1764996600686,"version":"3.41.0"},"reference-count":51,"publisher":"Association for Computing Machinery (ACM)","issue":"FSE","content-domain":{"domain":[],"crossmark-restriction":false},"short-container-title":["Proc. ACM Softw. Eng."],"published-print":{"date-parts":[[2025,6,19]]},"abstract":"<jats:p>Python is a dynamic language with applications in many domains, and one of the most popular languages in recent years. To increase code quality, developers have turned to \u201clinters\u201d that statically analyze the source code and warn about potential programming problems. However, the inherent limitations of static analysis and the dynamic nature of Python make it difficult or even impossible for static linters to detect some problems. This paper presents DyLin, the first dynamic linter for Python. Similar to a traditional linter, the approach has an extensible set of checkers, which, unlike in traditional linters, search for specific programming anti-patterns by analyzing the program as it executes. A key contribution of this paper is a set of 15 Python-specific anti-patterns that are hard to find statically but amenable to dynamic analysis, along with corresponding checkers to detect them. Our evaluation applies DyLin to 37 popular open-source Python projects on GitHub and to a dataset of code submitted to Kaggle machine learning competitions, totaling over 683k lines of Python code. The approach reports a total of 68 problems, 48 of which are previously unknown true positives, i.e., a precision of 70.6%. The detected problems include bugs that cause incorrect values, such as inf, incorrect behavior, e.g., missing out on relevant events, unnecessary computations that slow down the program, and unintended data leakage from test data to the training phase of machine learning pipelines. These issues remained unnoticed in public repositories for more than 3.5 years, on average, despite the fact that the corresponding code has been exercised by the developer-written tests. A comparison with popular static linters and a type checker shows that DyLin complements these tools by detecting problems that are missed statically. Based on our reporting of 42 issues to the developers, 31 issues have so far been fixed.<\/jats:p>","DOI":"10.1145\/3729395","type":"journal-article","created":{"date-parts":[[2025,6,19]],"date-time":"2025-06-19T15:16:02Z","timestamp":1750346162000},"page":"2828-2849","source":"Crossref","is-referenced-by-count":1,"title":["DyLin: A Dynamic Linter for Python"],"prefix":"10.1145","volume":"2","author":[{"ORCID":"https:\/\/orcid.org\/0000-0001-9763-8147","authenticated-orcid":false,"given":"Aryaz","family":"Eghbali","sequence":"first","affiliation":[{"name":"University of Stuttgart, Stuttgart, Germany"}]},{"ORCID":"https:\/\/orcid.org\/0009-0002-4561-1174","authenticated-orcid":false,"given":"Felix","family":"Burk","sequence":"additional","affiliation":[{"name":"University of Stuttgart, Stuttgart, Germany"}]},{"ORCID":"https:\/\/orcid.org\/0000-0003-1623-498X","authenticated-orcid":false,"given":"Michael","family":"Pradel","sequence":"additional","affiliation":[{"name":"University of Stuttgart, Stuttgart, Germany"}]}],"member":"320","published-online":{"date-parts":[[2025,6,19]]},"reference":[{"key":"e_1_2_1_1_1","volume-title":"DDUO: General-Purpose Dynamic Analysis for Differential Privacy. In 34th IEEE Computer Security Foundations Symposium, CSF 2021","author":"Abuah Chike","year":"2021","unstructured":"Chike Abuah, Alex Silence, David Darais, and Joseph P. Near. 2021. DDUO: General-Purpose Dynamic Analysis for Differential Privacy. In 34th IEEE Computer Security Foundations Symposium, CSF 2021, Dubrovnik, Croatia, June 21-25, 2021. IEEE, 1\u201315. https:\/\/doi.org\/10.1109\/CSF51468.2021.00043 10.1109\/CSF51468.2021.00043"},{"key":"e_1_2_1_2_1","volume-title":"Proceedings of the 41st ACM SIGPLAN International Conference on Programming Language Design and Implementation, PLDI. 91\u2013105","author":"Allamanis Miltiadis","year":"2020","unstructured":"Miltiadis Allamanis, Earl T. Barr, Soline Ducousso, and Zheng Gao. 2020. Typilus: neural type hints. In Proceedings of the 41st ACM SIGPLAN International Conference on Programming Language Design and Implementation, PLDI. 91\u2013105. https:\/\/doi.org\/10.1145\/3385412.3385997 10.1145\/3385412.3385997"},{"key":"e_1_2_1_3_1","volume-title":"Proceedings of the 38th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, POPL. 459\u2013472","author":"Chaudhuri Avik","year":"2011","unstructured":"Jong-hoon (David) An, Avik Chaudhuri, Jeffrey S. Foster, and Michael Hicks. 2011. Dynamic inference of static types for Ruby.. In Proceedings of the 38th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, POPL. 459\u2013472. https:\/\/doi.org\/10.1145\/1926385.1926437 10.1145\/1926385.1926437"},{"key":"e_1_2_1_4_1","doi-asserted-by":"publisher","DOI":"10.4230\/LIPIcs.ECOOP.2016.2"},{"key":"e_1_2_1_5_1","volume-title":"DyPyBench: A Benchmark of Executable Python Software. In ACM International Conference on the Foundations of Software Engineering (FSE). https:\/\/doi.org\/10","author":"Bouzenia Islem","year":"2024","unstructured":"Islem Bouzenia, Bajaj Piyush Krishan, and Michael Pradel. 2024. DyPyBench: A Benchmark of Executable Python Software. In ACM International Conference on the Foundations of Software Engineering (FSE). https:\/\/doi.org\/10.1145\/3643742 10.1145\/3643742"},{"key":"e_1_2_1_6_1","volume-title":"45th IEEE\/ACM International Conference on Software Engineering, ICSE. IEEE, 868\u2013880","author":"Bouzenia Islem","year":"2023","unstructured":"Islem Bouzenia and Michael Pradel. 2023. When to Say What: Learning to Find Condition-Message Inconsistencies. In 45th IEEE\/ACM International Conference on Software Engineering, ICSE. IEEE, 868\u2013880. https:\/\/doi.org\/10.1109\/ICSE48619.2023.00081 10.1109\/ICSE48619.2023.00081"},{"key":"e_1_2_1_7_1","volume-title":"International Symposium on Code Generation and Optimization, 2003. CGO 2003.. 265\u2013275","author":"Bruening Derek","year":"2003","unstructured":"Derek Bruening, Timothy Garnett, and Saman Amarasinghe. 2003. An infrastructure for adaptive dynamic optimization. In International Symposium on Code Generation and Optimization, 2003. CGO 2003.. 265\u2013275. https:\/\/doi.org\/10.5555\/776261.776290"},{"key":"e_1_2_1_8_1","volume-title":"Dynamic Slicing of Python Programs. In IEEE 38th Annual Computer Software and Applications Conference, COMPSAC 2014","author":"Chen Zhifei","year":"2014","unstructured":"Zhifei Chen, Lin Chen, Yuming Zhou, Zhaogui Xu, William C. Chu, and Baowen Xu. 2014. Dynamic Slicing of Python Programs. In IEEE 38th Annual Computer Software and Applications Conference, COMPSAC 2014, Vasteras, Sweden, July 21-25, 2014. IEEE Computer Society, 219\u2013228. https:\/\/doi.org\/10.1109\/COMPSAC.2014.30 10.1109\/COMPSAC.2014.30"},{"key":"e_1_2_1_9_1","volume-title":"International Symposium on Software Testing and Analysis (ISSTA). ACM, 196\u2013206","author":"Clause James A.","year":"2007","unstructured":"James A. Clause, Wanchun Li, and Alessandro Orso. 2007. Dytan: a generic dynamic taint analysis framework. In International Symposium on Software Testing and Analysis (ISSTA). ACM, 196\u2013206. https:\/\/doi.org\/10.1145\/1273463.1273490 10.1145\/1273463.1273490"},{"key":"e_1_2_1_10_1","doi-asserted-by":"publisher","DOI":"10.1109\/ICSE48619.2023.00091"},{"key":"e_1_2_1_11_1","volume-title":"Proceedings of the 23rd USENIX Security Symposium","author":"Egele Manuel","year":"2014","unstructured":"Manuel Egele, Maverick Woo, Peter Chapman, and David Brumley. 2014. Blanket Execution: Dynamic Similarity Testing for Program Binaries and Components. In Proceedings of the 23rd USENIX Security Symposium, San Diego, CA, USA, August 20-22, 2014.. 303\u2013317. https:\/\/doi.org\/10.5555\/2671225.2671245"},{"key":"e_1_2_1_12_1","doi-asserted-by":"publisher","unstructured":"Aryaz Eghbali Felix Burk and Michael Pradel. 2025. DyLin: A Dynamic Linter for Python. Software archived in Zenodo. https:\/\/doi.org\/10.5281\/zenodo.15193949 10.5281\/zenodo.15193949","DOI":"10.5281\/zenodo.15193949"},{"key":"e_1_2_1_13_1","volume-title":"Proceedings of the 30th ACM Joint European Software Engineering Conference and Symposium on the Foundations of Software Engineering (ESEC\/FSE","author":"Eghbali Aryaz","year":"2022","unstructured":"Aryaz Eghbali and Michael Pradel. 2022. DynaPyt: a dynamic analysis framework for Python. In Proceedings of the 30th ACM Joint European Software Engineering Conference and Symposium on the Foundations of Software Engineering (ESEC\/FSE 2022). Association for Computing Machinery, New York, NY, USA. 760\u2013771. isbn:9781450394130 https:\/\/doi.org\/10.1145\/3540250.3549126 10.1145\/3540250.3549126"},{"key":"e_1_2_1_14_1","volume-title":"Symposium on Principles of Programming Languages (POPL). ACM, 256\u2013267","author":"Flanagan Cormac","unstructured":"Cormac Flanagan and Stephen N. Freund. 2004. Atomizer: a dynamic atomicity checker for multithreaded programs. In Symposium on Principles of Programming Languages (POPL). ACM, 256\u2013267. https:\/\/doi.org\/10.1145\/982962.964023 10.1145\/982962.964023"},{"key":"e_1_2_1_15_1","volume-title":"Workshop on Program Analysis for Software Tools and Engineering (PASTE). ACM, 1\u20138. https:\/\/doi.org\/10","author":"Flanagan Cormac","year":"1806","unstructured":"Cormac Flanagan and Stephen N. Freund. 2010. The RoadRunner dynamic analysis framework for concurrent programs. In Workshop on Program Analysis for Software Tools and Engineering (PASTE). ACM, 1\u20138. https:\/\/doi.org\/10.1145\/1806672.1806674 10.1145\/1806672.1806674"},{"key":"e_1_2_1_16_1","volume-title":"JITProf: Pinpointing JIT-unfriendly JavaScript Code. In European Software Engineering Conference and Symposium on the Foundations of Software Engineering (ESEC\/FSE). 357\u2013368","author":"Gong Liang","year":"2015","unstructured":"Liang Gong, Michael Pradel, and Koushik Sen. 2015. JITProf: Pinpointing JIT-unfriendly JavaScript Code. In European Software Engineering Conference and Symposium on the Foundations of Software Engineering (ESEC\/FSE). 357\u2013368. https:\/\/doi.org\/10.1145\/2786805.2786831 10.1145\/2786805.2786831"},{"key":"e_1_2_1_17_1","volume-title":"DLint: Dynamically Checking Bad Coding Practices in JavaScript. In International Symposium on Software Testing and Analysis (ISSTA). 94\u2013105","author":"Gong Liang","year":"2015","unstructured":"Liang Gong, Michael Pradel, Manu Sridharan, and Koushik Sen. 2015. DLint: Dynamically Checking Bad Coding Practices in JavaScript. In International Symposium on Software Testing and Analysis (ISSTA). 94\u2013105. https:\/\/doi.org\/10.1145\/2771783.2771809 10.1145\/2771783.2771809"},{"key":"e_1_2_1_18_1","doi-asserted-by":"publisher","unstructured":"Luca Di Grazia and Michael Pradel. 2022. The Evolution of Type Annotations in Python: An Empirical Study. In ESEC\/FSE. https:\/\/doi.org\/10.1145\/3540250.3549114 10.1145\/3540250.3549114","DOI":"10.1145\/3540250.3549114"},{"key":"e_1_2_1_19_1","volume-title":"Proceedings of the 33rd ACM\/IEEE International Conference on Automated Software Engineering. 317\u2013328","author":"Habib Andrew","year":"2018","unstructured":"Andrew Habib and Michael Pradel. 2018. How many of all bugs do we find? a study of static bug detectors. In Proceedings of the 33rd ACM\/IEEE International Conference on Automated Software Engineering. 317\u2013328."},{"key":"e_1_2_1_20_1","volume-title":"ECOOP 2006 - Object-Oriented Programming, 20th European Conference, Nantes, France, July 3-7, 2006, Proceedings, Dave Thomas (Ed.) (Lecture Notes in Computer Science","volume":"27","author":"Hajiyev Elnar","year":"2006","unstructured":"Elnar Hajiyev, Mathieu Verbaere, and Oege de Moor. 2006. codeQuest: Scalable Source Code Queries with Datalog. In ECOOP 2006 - Object-Oriented Programming, 20th European Conference, Nantes, France, July 3-7, 2006, Proceedings, Dave Thomas (Ed.) (Lecture Notes in Computer Science, Vol. 4067). Springer, 2\u201327. https:\/\/doi.org\/10.1007\/11785477_2 10.1007\/11785477_2"},{"key":"e_1_2_1_21_1","volume-title":"Proceedings of the 31st IEEE\/ACM International Conference on Automated Software Engineering, ASE 2016","author":"H\u00f6schele Matthias","year":"2016","unstructured":"Matthias H\u00f6schele and Andreas Zeller. 2016. Mining input grammars from dynamic taints. In Proceedings of the 31st IEEE\/ACM International Conference on Automated Software Engineering, ASE 2016, Singapore, September 3-7, 2016. 720\u2013725. https:\/\/doi.org\/10.1145\/2970276.2970321 10.1145\/2970276.2970321"},{"key":"e_1_2_1_22_1","volume-title":"2013 35th International Conference on Software Engineering (ICSE). 672\u2013681","author":"Johnson Brittany","year":"2013","unstructured":"Brittany Johnson, Yoonki Song, Emerson Murphy-Hill, and Robert Bowdidge. 2013. Why don\u2019t software developers use static analysis tools to find bugs? In 2013 35th International Conference on Software Engineering (ICSE). 672\u2013681. https:\/\/doi.org\/10.1109\/ICSE.2013.6606613 10.1109\/ICSE.2013.6606613"},{"key":"e_1_2_1_23_1","volume-title":"Proceedings of the 44th International Conference on Software Engineering. 698\u2013709","author":"Kang Hong Jin","year":"2022","unstructured":"Hong Jin Kang, Khai Loong Aw, and David Lo. 2022. Detecting false alarms from automatic static analysis tools: how far are we? In Proceedings of the 44th International Conference on Software Engineering. 698\u2013709. https:\/\/doi.org\/10.1145\/3510003.3510214 10.1145\/3510003.3510214"},{"key":"e_1_2_1_24_1","doi-asserted-by":"publisher","DOI":"10.4230\/LIPIcs.ECOOP.2020.15"},{"key":"e_1_2_1_25_1","doi-asserted-by":"publisher","DOI":"10.1145\/3297858.3304068"},{"key":"e_1_2_1_26_1","volume-title":"Vijay Janapa Reddi, and Kim Hazelwood","author":"Luk Chi-Keung","year":"2005","unstructured":"Chi-Keung Luk, Robert Cohn, Robert Muth, Harish Patil, Artur Klauser, Geoff Lowney, Steven Wallace, Vijay Janapa Reddi, and Kim Hazelwood. 2005. Pin: building customized program analysis tools with dynamic instrumentation. Acm sigplan notices, 40, 6 (2005), 190\u2013200."},{"key":"e_1_2_1_27_1","volume-title":"34th IEEE\/ACM International Conference on Automated Software Engineering, ASE 2019","author":"Lukasczyk Stephan","year":"2019","unstructured":"Stephan Lukasczyk. 2019. Generating Tests to Analyse Dynamically-Typed Programs. In 34th IEEE\/ACM International Conference on Automated Software Engineering, ASE 2019, San Diego, CA, USA, November 11-15, 2019. IEEE, 1226\u20131229. https:\/\/doi.org\/10.1109\/ASE.2019.00146 10.1109\/ASE.2019.00146"},{"key":"e_1_2_1_28_1","volume-title":"Proceedings of the 11th International Conference on Aspect-oriented Software Development, AOSD 2012","author":"Marek Luk\u00e1s","year":"2012","unstructured":"Luk\u00e1s Marek, Alex Villaz\u00f3n, Yudi Zheng, Danilo Ansaloni, Walter Binder, and Zhengwei Qi. 2012. DiSL: a domain-specific language for bytecode instrumentation. In Proceedings of the 11th International Conference on Aspect-oriented Software Development, AOSD 2012, Potsdam, Germany, March 25-30, 2012, Robert Hirschfeld, \u00c9ric Tanter, Kevin J. Sullivan, and Richard P. Gabriel (Eds.). ACM, 239\u2013250. https:\/\/doi.org\/10.1145\/2162049.2162077 10.1145\/2162049.2162077"},{"key":"e_1_2_1_29_1","volume-title":"Proceedings of the 31st ACM SIGSOFT International Symposium on Software Testing and Analysis. 532\u2013543","author":"Nachtigall Marcus","year":"2022","unstructured":"Marcus Nachtigall, Michael Schlichtig, and Eric Bodden. 2022. A large-scale study of usability criteria addressed by static analysis tools. In Proceedings of the 31st ACM SIGSOFT International Symposium on Software Testing and Analysis. 532\u2013543. https:\/\/doi.org\/10.1145\/3533767.3534374 10.1145\/3533767.3534374"},{"key":"e_1_2_1_30_1","volume-title":"Conference on Programming Language Design and Implementation (PLDI). ACM, 89\u2013100","author":"Nethercote Nicholas","year":"2007","unstructured":"Nicholas Nethercote and Julian Seward. 2007. Valgrind: a framework for heavyweight dynamic binary instrumentation. In Conference on Programming Language Design and Implementation (PLDI). ACM, 89\u2013100. https:\/\/doi.org\/10.1145\/1250734.1250746 10.1145\/1250734.1250746"},{"key":"e_1_2_1_31_1","volume-title":"Symposium on Principles and Practice of Parallel Programming (PPOPP). ACM, 167\u2013178","author":"O\u2019Callahan Robert","year":"2003","unstructured":"Robert O\u2019Callahan and Jong-Deok Choi. 2003. Hybrid dynamic data race detection. In Symposium on Principles and Practice of Parallel Programming (PPOPP). ACM, 167\u2013178. https:\/\/doi.org\/10.1145\/781498.781528 10.1145\/781498.781528"},{"key":"e_1_2_1_32_1","doi-asserted-by":"publisher","unstructured":"Wonseok Oh and Hakjoo Oh. 2022. PyTER: Effective Program Repair for Python Type Errors. In ESEC\/FSE. https:\/\/doi.org\/10.1145\/3540250.3549130 10.1145\/3540250.3549130","DOI":"10.1145\/3540250.3549130"},{"key":"e_1_2_1_33_1","volume-title":"28th ACM Joint European Software Engineering Conference and Symposium on the Foundations of Software Engineering","author":"Pradel Michael","year":"2020","unstructured":"Michael Pradel, Georgios Gousios, Jason Liu, and Satish Chandra. 2020. TypeWriter: Neural Type Prediction with Search-based Validation. In ESEC\/FSE \u201920: 28th ACM Joint European Software Engineering Conference and Symposium on the Foundations of Software Engineering, Virtual Event, USA, November 8-13, 2020. 209\u2013220. https:\/\/doi.org\/10.1145\/3368089.3409715 10.1145\/3368089.3409715"},{"key":"e_1_2_1_34_1","volume-title":"International Conference on Automated Software Engineering (ASE). 371\u2013382","author":"Pradel Michael","year":"2009","unstructured":"Michael Pradel and Thomas R. Gross. 2009. Automatic Generation of Object Usage Specifications from Large Method Traces. In International Conference on Automated Software Engineering (ASE). 371\u2013382. https:\/\/doi.org\/10.1109\/ASE.2009.60 10.1109\/ASE.2009.60"},{"key":"e_1_2_1_35_1","volume-title":"TypeDevil: Dynamic Type Inconsistency Analysis for JavaScript. In International Conference on Software Engineering (ICSE). https:\/\/doi.org\/10","author":"Pradel Michael","year":"2015","unstructured":"Michael Pradel, Parker Schuh, and Koushik Sen. 2015. TypeDevil: Dynamic Type Inconsistency Analysis for JavaScript. In International Conference on Software Engineering (ICSE). https:\/\/doi.org\/10.5555\/2818754.2818795"},{"key":"e_1_2_1_36_1","doi-asserted-by":"publisher","unstructured":"Ingkarat Rak-amnouykit Daniel McCrevan Ana Milanova Martin Hirzel and Julian Dolby. 2020. Python 3 Types in the Wild: A Tale of Two Type Systems. In DLS. https:\/\/doi.org\/10.1145\/3426422.3426981 10.1145\/3426422.3426981","DOI":"10.1145\/3426422.3426981"},{"key":"e_1_2_1_37_1","doi-asserted-by":"publisher","DOI":"10.1145\/265924.265927"},{"key":"e_1_2_1_38_1","doi-asserted-by":"publisher","unstructured":"Koushik Sen Swaroop Kalasapur Tasneem Brutch and Simon Gibbs. 2013. Jalangi: A Selective Record-Replay and Dynamic Analysis Framework for JavaScript. In European Software Engineering Conference and Symposium on the Foundations of Software Engineering (ESEC\/FSE). 488\u2013498. https:\/\/doi.org\/10.1145\/2491411.2491447 10.1145\/2491411.2491447","DOI":"10.1145\/2491411.2491447"},{"key":"e_1_2_1_39_1","volume-title":"Proceedings of the 31st ACM Joint European Software Engineering Conference and Symposium on the Foundations of Software Engineering, ESEC\/FSE. 1522\u20131534","author":"Souza Beatriz","year":"2023","unstructured":"Beatriz Souza and Michael Pradel. 2023. LExecutor: Learning-Guided Execution. In Proceedings of the 31st ACM Joint European Software Engineering Conference and Symposium on the Foundations of Software Engineering, ESEC\/FSE. 1522\u20131534. https:\/\/doi.org\/10.1145\/3611643.3616254 10.1145\/3611643.3616254"},{"key":"e_1_2_1_40_1","volume-title":"Proceedings of the 38th International conference on software engineering. 120\u2013131","author":"Stol Klaas-Jan","year":"2016","unstructured":"Klaas-Jan Stol, Paul Ralph, and Brian Fitzgerald. 2016. Grounded theory in software engineering research: a critical review and guidelines. In Proceedings of the 38th International conference on software engineering. 120\u2013131. https:\/\/doi.org\/10.1145\/2884781.2884833 10.1145\/2884781.2884833"},{"key":"e_1_2_1_41_1","volume-title":"Performance Problems You Can Fix: A Dynamic Analysis of Memoization Opportunities. In Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA). 607\u2013622","author":"Toffola Luca Della","unstructured":"Luca Della Toffola, Michael Pradel, and Thomas R. Gross. 2015. Performance Problems You Can Fix: A Dynamic Analysis of Memoization Opportunities. In Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA). 607\u2013622. https:\/\/doi.org\/10.1145\/2858965.2814290 10.1145\/2858965.2814290"},{"key":"e_1_2_1_42_1","doi-asserted-by":"publisher","DOI":"10.1109\/TSE.2018.2871058"},{"key":"e_1_2_1_43_1","doi-asserted-by":"publisher","unstructured":"Tongjie Wang Yaroslav Golubev Oleg Smirnov Jiawei Li Timofey Bryksin and Iftekhar Ahmed. 2021. PyNose: A Test Smell Detector For Python. In ASE. https:\/\/doi.org\/10.1109\/ASE51524.2021.9678615 10.1109\/ASE51524.2021.9678615","DOI":"10.1109\/ASE51524.2021.9678615"},{"key":"e_1_2_1_44_1","volume-title":"Conference on Programming Language Design and Implementation (PLDI). ACM, 419\u2013430","author":"Xu Guoqing","year":"2009","unstructured":"Guoqing (Harry) Xu, Matthew Arnold, Nick Mitchell, Atanas Rountev, and Gary Sevitsky. 2009. Go with the flow: profiling copies to find runtime bloat. In Conference on Programming Language Design and Implementation (PLDI). ACM, 419\u2013430. https:\/\/doi.org\/10.1145\/1543135.1542523 10.1145\/1543135.1542523"},{"key":"e_1_2_1_45_1","volume-title":"Proceedings of the 24th ACM SIGSOFT International Symposium on Foundations of Software Engineering, FSE 2016","author":"Xu Zhaogui","year":"2016","unstructured":"Zhaogui Xu, Peng Liu, Xiangyu Zhang, and Baowen Xu. 2016. Python predictive analysis for bug detection. In Proceedings of the 24th ACM SIGSOFT International Symposium on Foundations of Software Engineering, FSE 2016, Seattle, WA, USA, November 13-18, 2016, Thomas Zimmermann, Jane Cleland-Huang, and Zhendong Su (Eds.). ACM, 121\u2013132. https:\/\/doi.org\/10.1145\/2950290.2950357 10.1145\/2950290.2950357"},{"key":"e_1_2_1_46_1","volume-title":"Proceedings of the 24th ACM SIGSOFT International Symposium on Foundations of Software Engineering, FSE 2016","author":"Xu Zhaogui","year":"2016","unstructured":"Zhaogui Xu, Xiangyu Zhang, Lin Chen, Kexin Pei, and Baowen Xu. 2016. Python probabilistic type inference with natural language support. In Proceedings of the 24th ACM SIGSOFT International Symposium on Foundations of Software Engineering, FSE 2016, Seattle, WA, USA, November 13-18, 2016. 607\u2013618. https:\/\/doi.org\/10.1145\/2950290.2950343 10.1145\/2950290.2950343"},{"key":"e_1_2_1_47_1","doi-asserted-by":"publisher","unstructured":"Yanyan Yan Yang Feng Hongcheng Fan and Baowen Xu. 2023. DLInfer: Deep Learning with Static Slicing for Python Type Inference. In ICSE. https:\/\/doi.org\/10.1109\/ICSE48619.2023.00170 10.1109\/ICSE48619.2023.00170","DOI":"10.1109\/ICSE48619.2023.00170"},{"key":"e_1_2_1_48_1","volume-title":"Proceedings of the 37th IEEE\/ACM International Conference on Automated Software Engineering. 1\u201312","author":"Yang Chenyang","year":"2022","unstructured":"Chenyang Yang, Rachel A Brower-Sinning, Grace Lewis, and Christian K\u00e4stner. 2022. Data leakage in notebooks: Static detection and better processes. In Proceedings of the 37th IEEE\/ACM International Conference on Automated Software Engineering. 1\u201312. https:\/\/doi.org\/10.1145\/3551349.3556918 10.1145\/3551349.3556918"},{"key":"e_1_2_1_49_1","volume-title":"International Conference on Software Engineering (ICSE). ACM, 282\u2013291","author":"Yang Jinlin","year":"2006","unstructured":"Jinlin Yang, David Evans, Deepali Bhardwaj, Thirumalesh Bhat, and Manuvir Das. 2006. Perracotta: Mining temporal API rules from imperfect traces. In International Conference on Software Engineering (ICSE). ACM, 282\u2013291. https:\/\/doi.org\/10.1145\/1134285.1134325 10.1145\/1134285.1134325"},{"key":"e_1_2_1_50_1","doi-asserted-by":"publisher","unstructured":"Hongjie Ye Wei Chen Wensheng Dou Guoquan Wu and Jun Wei. 2022. Knowledge-Based Environment Dependency Inference for Python Programs. In ICSE. https:\/\/doi.org\/10.1145\/3510003.3510127 10.1145\/3510003.3510127","DOI":"10.1145\/3510003.3510127"},{"key":"e_1_2_1_51_1","doi-asserted-by":"publisher","unstructured":"Zejun Zhang Zhenchang Xing Xin Xia Xiwei Xu Liming Zhu and Qinghua Lu. 2023. Faster or Slower? Performance Mystery of Python Idioms Unveiled with Empirical Evidence. In ICSE. https:\/\/doi.org\/10.1109\/ICSE48619.2023.00130 10.1109\/ICSE48619.2023.00130","DOI":"10.1109\/ICSE48619.2023.00130"}],"container-title":["Proceedings of the ACM on Software Engineering"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/3729395","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,6,19]],"date-time":"2025-06-19T15:18:12Z","timestamp":1750346292000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3729395"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2025,6,19]]},"references-count":51,"journal-issue":{"issue":"FSE","published-print":{"date-parts":[[2025,6,19]]}},"alternative-id":["10.1145\/3729395"],"URL":"https:\/\/doi.org\/10.1145\/3729395","relation":{},"ISSN":["2994-970X"],"issn-type":[{"value":"2994-970X","type":"electronic"}],"subject":[],"published":{"date-parts":[[2025,6,19]]}}}