{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,4,11]],"date-time":"2026-04-11T02:14:38Z","timestamp":1775873678100,"version":"3.50.1"},"reference-count":49,"publisher":"Springer Science and Business Media LLC","issue":"2","license":[{"start":{"date-parts":[[2025,4,1]],"date-time":"2025-04-01T00:00:00Z","timestamp":1743465600000},"content-version":"tdm","delay-in-days":0,"URL":"https:\/\/www.springernature.com\/gp\/researchers\/text-and-data-mining"},{"start":{"date-parts":[[2025,4,1]],"date-time":"2025-04-01T00:00:00Z","timestamp":1743465600000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/www.springernature.com\/gp\/researchers\/text-and-data-mining"}],"content-domain":{"domain":["link.springer.com"],"crossmark-restriction":false},"short-container-title":["Int J Softw Tools Technol Transfer"],"published-print":{"date-parts":[[2025,4]]},"DOI":"10.1007\/s10009-025-00804-2","type":"journal-article","created":{"date-parts":[[2025,6,5]],"date-time":"2025-06-05T08:49:05Z","timestamp":1749113345000},"page":"267-288","update-policy":"https:\/\/doi.org\/10.1007\/springer_crossmark_policy","source":"Crossref","is-referenced-by-count":3,"title":["Lightweight and modular resource leak checking (extended version)"],"prefix":"10.1007","volume":"27","author":[{"given":"Narges","family":"Shadab","sequence":"first","affiliation":[],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Pritam","family":"Gharat","sequence":"additional","affiliation":[],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Shrey","family":"Tiwari","sequence":"additional","affiliation":[],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Michael D.","family":"Ernst","sequence":"additional","affiliation":[],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Martin","family":"Kellogg","sequence":"additional","affiliation":[],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Shuvendu K.","family":"Lahiri","sequence":"additional","affiliation":[],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Akash","family":"Lal","sequence":"additional","affiliation":[],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Manu","family":"Sridharan","sequence":"additional","affiliation":[],"role":[{"role":"author","vocabulary":"crossref"}]}],"member":"297","published-online":{"date-parts":[[2025,6,5]]},"reference":[{"key":"804_CR1","first-page":"1015","volume-title":"OOPSLA Companion: Object-Oriented Programming Systems, Languages, and Applications, Orlando, FL, USA","author":"J. Aldrich","year":"2009","unstructured":"Aldrich, J., Sunshine, J., Saini, D., Sparks, Z.: Typestate-oriented programming. In: OOPSLA Companion: Object-Oriented Programming Systems, Languages, and Applications, Orlando, FL, USA, pp.\u00a01015\u20131022 (2009)"},{"key":"804_CR2","doi-asserted-by":"publisher","first-page":"12217","DOI":"10.1109\/ACCESS.2020.2966522","volume":"8","author":"D. Amalfitano","year":"2020","unstructured":"Amalfitano, D., Riccio, V., Tramontana, P., Fasolino, A.R.: Do memories haunt you? An automated black box testing approach for detecting memory leaks in Android apps. IEEE Access 8, 12217\u201312231 (2020)","journal-title":"IEEE Access"},{"key":"804_CR3","first-page":"669","volume-title":"ASE 2015: Proceedings of the 30th Annual International Conference on Automated Software Engineering, Lincoln, NE, USA","author":"P. Barros","year":"2015","unstructured":"Barros, P., Just, R., Millstein, S., Vines, P., Dietl, W., d\u2019Amorim, M., Ernst, M.D.: Static analysis of implicit control flow: resolving Java reflection and Android intents. In: ASE 2015: Proceedings of the 30th Annual International Conference on Automated Software Engineering, Lincoln, NE, USA, pp.\u00a0669\u2013679 (2015)"},{"key":"804_CR4","first-page":"301","volume-title":"OOPSLA 2007, Object-Oriented Programming Systems, Languages, and Applications, Montreal, Canada","author":"K. Bierhoff","year":"2007","unstructured":"Bierhoff, K., Aldrich, J.: Modular typestate checking of aliased objects. In: OOPSLA 2007, Object-Oriented Programming Systems, Languages, and Applications, Montreal, Canada, pp.\u00a0301\u2013320 (2007)"},{"key":"804_CR5","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-642-36946-9","volume-title":"Aliasing in Object-Oriented Programming. Types, Analysis and Verification","author":"D. Clarke","year":"2013","unstructured":"Clarke, D., \u00d6stlund, J., Sergey, I., Wrigstad, T.: Ownership types: a survey. In: Aliasing in Object-Oriented Programming. Types, Analysis and Verification. Springer, Berlin (2013)"},{"key":"804_CR6","unstructured":"CodeQL. https:\/\/codeql.github.com"},{"issue":"1","key":"804_CR7","doi-asserted-by":"publisher","first-page":"28","DOI":"10.1587\/transinf.E96.D.28","volume":"96","author":"Z. Dai","year":"2013","unstructured":"Dai, Z., Mao, X., Lei, Y., Wan, X., Ben, K.: Resco: automatic collection of leaked resources. IEICE Trans. Inf. Syst. 96(1), 28\u201339 (2013)","journal-title":"IEICE Trans. Inf. Syst."},{"key":"804_CR8","first-page":"1","volume-title":"International Symposium on Memory Management","author":"I. Dillig","year":"2008","unstructured":"Dillig, I., Dillig, T., Yahav, E., Chandra, S.: The closer: automating resource management in Java. In: International Symposium on Memory Management, pp.\u00a01\u201310 (2008)"},{"key":"804_CR9","unstructured":"Eclipse developers: Avoiding resource leaks (2020). https:\/\/help.eclipse.org\/2020-12\/index.jsp?topic=%2Forg.eclipse.jdt.doc.user%2Ftasks%2Ftask-avoiding_resource_leaks.htm&cp%3D1_3_9_3. Accessed 3 February 2021"},{"key":"804_CR10","unstructured":"Ernst, M.D.: Nothing is better than the optional type (2016). https:\/\/homes.cs.washington.edu\/~mernst\/advice\/nothing-is-better-than-optional.html"},{"key":"804_CR11","first-page":"58","volume-title":"IWACO 2003: International Workshop on Aliasing, Confinement and Ownership in Object-Oriented Programming, Darmstadt, Germany","author":"M. F\u00e4hndrich","year":"2003","unstructured":"F\u00e4hndrich, M., Leino, K.R.M.: Heap monotonic typestates. In: IWACO 2003: International Workshop on Aliasing, Confinement and Ownership in Object-Oriented Programming, Darmstadt, Germany, pp.\u00a058\u201372 (2003)"},{"issue":"2","key":"804_CR12","doi-asserted-by":"publisher","first-page":"1","DOI":"10.1145\/1348250.1348255","volume":"17","author":"S.J. Fink","year":"2008","unstructured":"Fink, S.J., Yahav, E., Dor, N., Ramalingam, G., Geay, E.: Effective typestate verification in the presence of aliasing. ACM Trans. Softw. Eng. Methodol. 17(2), 1\u201334 (2008)","journal-title":"ACM Trans. Softw. Eng. Methodol."},{"key":"804_CR13","doi-asserted-by":"publisher","first-page":"192","DOI":"10.1145\/301618.301665","volume-title":"PLDI \u201999: Proceedings of the ACM SIGPLAN \u201999 Conference on Programming Language Design and Implementation, Atlanta, GA, USA","author":"J.S. Foster","year":"1999","unstructured":"Foster, J.S., F\u00e4hndrich, M., Aiken, A.: A theory of type qualifiers. In: PLDI \u201999: Proceedings of the ACM SIGPLAN \u201999 Conference on Programming Language Design and Implementation, Atlanta, GA, USA, pp.\u00a0192\u2013203 (1999). https:\/\/doi.org\/10.1145\/301618.301665"},{"key":"804_CR14","volume-title":"Design Patterns","author":"E. Gamma","year":"1995","unstructured":"Gamma, E., Helm, R., Johnson, R.E., Vlissides, J.: Design Patterns. Addison-Wesley, Reading (1995)"},{"issue":"4","key":"804_CR15","doi-asserted-by":"publisher","first-page":"12:1","DOI":"10.1145\/2629609","volume":"36","author":"R. Garcia","year":"2014","unstructured":"Garcia, R., Tanter, E., Wolff, R., Aldrich, J.: Foundations of typestate-oriented programming. ACM Trans. Program. Lang. Syst. 36(4), 12:1\u201344 (2014)","journal-title":"ACM Trans. Program. Lang. Syst."},{"issue":"1","key":"804_CR16","doi-asserted-by":"publisher","first-page":"678","DOI":"10.1007\/s10664-019-09731-8","volume":"25","author":"M. Ghanavati","year":"2020","unstructured":"Ghanavati, M., Costa, D., Seboek, J., Lo, D., Andrzejak, A.: Memory and resource leak defects and their repairs in Java projects. Empir. Softw. Eng. 25(1), 678\u2013718 (2020)","journal-title":"Empir. Softw. Eng."},{"key":"804_CR17","volume-title":"The Java Language Specification, Java SE","author":"J. Gosling","year":"2014","unstructured":"Gosling, J., Joy, B., Steele, G.L., Bracha, G., Buckley, A.: The Java Language Specification, Java SE, 8th edn. Addison-Wesley Professional (2014)","edition":"8"},{"key":"804_CR18","unstructured":"Infer developers: Resource leak in Java (2021). https:\/\/fbinfer.com\/docs\/checkers-bug-types#resource-leak-in-java. Accessed 4 February 2021"},{"key":"804_CR19","unstructured":"JetBrains: List of Java inspections (2020). https:\/\/www.jetbrains.com\/help\/idea\/list-of-java-inspections.html#resource-management. Accessed 5 February 2021"},{"key":"804_CR20","first-page":"1447","volume-title":"ICSE 2020, Proceedings of the 42nd International Conference on Software Engineering, Seoul, Korea","author":"M. Kellogg","year":"2020","unstructured":"Kellogg, M., Ran, M., Sridharan, M., Sch\u00e4f, M., Ernst, M.D.: Verifying object construction. In: ICSE 2020, Proceedings of the 42nd International Conference on Software Engineering, Seoul, Korea, pp.\u00a01447\u20131458 (2020)"},{"key":"804_CR21","doi-asserted-by":"publisher","first-page":"181","DOI":"10.1145\/3468264.3468576","volume-title":"ESEC\/FSE 2021: The ACM 29th Joint European Software Engineering Conference and Symposium on the Foundations of Software Engineering (ESEC\/FSE), Athens, Greece","author":"M. Kellogg","year":"2021","unstructured":"Kellogg, M., Shadab, N., Sridharan, M., Ernst, M.D.: Lightweight and modular resource leak verification. In: ESEC\/FSE 2021: The ACM 29th Joint European Software Engineering Conference and Symposium on the Foundations of Software Engineering (ESEC\/FSE), Athens, Greece, pp.\u00a0181\u2013192 (2021). https:\/\/doi.org\/10.1145\/3468264.3468576"},{"key":"804_CR22","doi-asserted-by":"publisher","first-page":"10:1","DOI":"10.4230\/DARTS.8.2.22","volume-title":"ECOOP 2022\u00a0\u2013 Object-Oriented Programming, 33rd European Conference, Berlin, Germany","author":"M. Kellogg","year":"2022","unstructured":"Kellogg, M., Shadab, N., Sridharan, M., Ernst, M.D.: Accumulation analysis. In: ECOOP 2022\u00a0\u2013 Object-Oriented Programming, 33rd European Conference, Berlin, Germany, pp.\u00a010:1\u201310:31 (2022). https:\/\/doi.org\/10.4230\/DARTS.8.2.22"},{"key":"804_CR23","volume-title":"The Rust Programming Language","author":"S. Klabnik","year":"2018","unstructured":"Klabnik, S., Nichols, C.: The Rust Programming Language (2018). https:\/\/doc.rust-lang.org\/1.50.0\/book\/"},{"issue":"6","key":"804_CR24","doi-asserted-by":"publisher","first-page":"3435","DOI":"10.1007\/s10664-019-09715-8","volume":"24","author":"Y. Liu","year":"2019","unstructured":"Liu, Y., Wang, J., Wei, L., Xu, C., Cheung, S.C., Wu, T., Yan, J., Zhang, J.: Droidleaks: a comprehensive database of resource leaks in Android apps. Empir. Softw. Eng. 24(6), 3435\u20133483 (2019)","journal-title":"Empir. Softw. Eng."},{"key":"804_CR25","doi-asserted-by":"publisher","first-page":"415","DOI":"10.1145\/2786805.2786809","volume-title":"ESEC\/FSE 2015: The 10th Joint Meeting of the European Software Engineering Conference (ESEC) and the ACM SIGSOFT Symposium on the Foundations of Software Engineering (FSE), Bergamo, Italy","author":"D. Lo","year":"2015","unstructured":"Lo, D., Nagappan, N., Zimmermann, T.: How practitioners perceive the relevance of software engineering research. In: ESEC\/FSE 2015: The 10th Joint Meeting of the European Software Engineering Conference (ESEC) and the ACM SIGSOFT Symposium on the Foundations of Software Engineering (FSE), Bergamo, Italy, pp.\u00a0415\u2013425 (2015)"},{"key":"804_CR26","unstructured":"Millstein, S.: Implement Java 8 type argument inference (2016). https:\/\/github.com\/typetools\/checker-framework\/issues\/979. Accessed 17 April 2020"},{"key":"804_CR27","unstructured":"NCQ CodeQL Query for missing Dispose calls (2024). https:\/\/github.com\/github\/codeql\/blob\/28f8874243bc110099483535633e7f4c9c2738a3\/csharp\/ql\/src\/API%20Abuse\/NoDisposeCallOnLocalIDisposable.ql. Accessed 15 October 2024"},{"key":"804_CR28","unstructured":"Oracle: The try-with-resources statement (the Java tutorials) (2020). https:\/\/docs.oracle.com\/javase\/tutorial\/essential\/exceptions\/tryResourceClose.html. Accessed 24 February 2021"},{"key":"804_CR29","doi-asserted-by":"publisher","first-page":"201","DOI":"10.1145\/1390630.1390656","volume-title":"ISSTA 2008, Proceedings of the 2008 International Symposium on Software Testing and Analysis, Seattle, WA, USA","author":"M.M. Papi","year":"2008","unstructured":"Papi, M.M., Ali, M., Correa, T.L. Jr., Perkins, J.H., Ernst, M.D.: Practical pluggable types for Java. In: ISSTA 2008, Proceedings of the 2008 International Symposium on Software Testing and Analysis, Seattle, WA, USA, pp.\u00a0201\u2013212 (2008). https:\/\/doi.org\/10.1145\/1390630.1390656"},{"key":"804_CR30","unstructured":"PMD developers: Closeresource (2021). https:\/\/pmd.github.io\/pmd-6.31.0\/pmd_rules_java_errorprone.html#closeresource. Accessed 4 February 2021"},{"key":"804_CR31","unstructured":"RLC# implementation (2024). https:\/\/github.com\/microsoft\/global-resource-leaks-codeql"},{"key":"804_CR32","unstructured":"Shadab, N.: Hdfs-15791. Possible resource leak in FSImageFormatProtobuf (2021). https:\/\/github.com\/apache\/hadoop\/pull\/2652. Accessed 16 June 2021"},{"issue":"OOPSLA2","key":"804_CR33","doi-asserted-by":"publisher","first-page":"1705","DOI":"10.1145\/3622858","volume":"7","author":"N. Shadab","year":"2023","unstructured":"Shadab, N., Gharat, P., Tiwari, S., Ernst, M.D., Kellogg, M., Lahiri, S., Lal, A., Sridharan, M.: Inference of resource management specifications. Proc. ACM Program. Lang. 7(OOPSLA2), 1705\u20131728 (2023). Article #282","journal-title":"Proc. ACM Program. Lang."},{"issue":"OOPSLA2","key":"804_CR34","doi-asserted-by":"publisher","first-page":"1705","DOI":"10.1145\/3622858","volume":"7","author":"N. Shadab","year":"2023","unstructured":"Shadab, N., Gharat, P., Tiwari, S., Ernst, M.D., Kellogg, M., Lahiri, S.K., Lal, A., Sridharan, M.: Inference of resource management specifications. Proc. ACM Program. Lang. 7(OOPSLA2), 1705\u20131728 (2023). https:\/\/doi.org\/10.1145\/3622858","journal-title":"Proc. ACM Program. Lang."},{"key":"804_CR35","doi-asserted-by":"publisher","DOI":"10.5281\/zenodo.10438985","volume-title":"Inference of Resource Management Specifications","author":"N. Shadab","year":"2023","unstructured":"Shadab, N., Gharat, P., Tiwari, S., Ernst, M.D., Kellogg, M., Lahiri, S.K., Lal, A., Sridharan, M.: Inference of Resource Management Specifications (2023). https:\/\/doi.org\/10.5281\/zenodo.10438985"},{"key":"804_CR36","unstructured":"SpotBugs developers: OBL: Method may fail to clean up stream or resource (2021). https:\/\/spotbugs.readthedocs.io\/en\/latest\/bugDescriptions.html#obl-method-may-fail-to-clean-up-stream-or-resource-obl-unsatisfied-obligation. Accessed 4 February 2021"},{"issue":"1","key":"804_CR37","doi-asserted-by":"publisher","first-page":"157","DOI":"10.1109\/TSE.1986.6312929","volume":"SE\u201312","author":"R.E. Strom","year":"1986","unstructured":"Strom, R.E., Yemini, S.: Typestate: a programming language concept for enhancing software reliability. IEEE Trans. Softw. Eng. SE\u201312(1), 157\u2013171 (1986)","journal-title":"IEEE Trans. Softw. Eng."},{"key":"804_CR38","first-page":"388","volume-title":"The Design and Evolution of C++","author":"B. Stroustrup","year":"1994","unstructured":"Stroustrup, B.: 16.5, resource management. In: The Design and Evolution of C++, pp.\u00a0388\u2013389. Pearson Education, India (1994)"},{"key":"804_CR39","unstructured":"The Apache Hadoop developers: Storageinfo.java (2018). https:\/\/github.com\/apache\/hadoop\/blob\/aa96f1871bfd858f9bac59cf2a81ec470da649af\/hadoop-hdfs-project\/hadoop-hdfs\/src\/main\/java\/org\/apache\/hadoop\/hdfs\/server\/common\/StorageInfo.java#L246. Accessed 22 February 2021"},{"key":"804_CR40","unstructured":"The Apache ZooKeeper developers: Learner.java (2020). https:\/\/github.com\/apache\/zookeeper\/blob\/c42c8c94085ed1d94a22158fbdfe2945118a82bc\/zookeeper-server\/src\/main\/java\/org\/apache\/zookeeper\/server\/quorum\/Learner.java#L465. Accessed 24 February 2021"},{"key":"804_CR41","unstructured":"The Checkstyle developers: Checkstyle\u2019s pom.xml file (2025). https:\/\/github.com\/checkstyle\/checkstyle\/blob\/20733949774a9accb7cd1a15b12da6b0eb795627\/pom.xml#L2622"},{"key":"804_CR42","first-page":"535","volume-title":"International Conference on Software Engineering (ICSE)","author":"E. Torlak","year":"2010","unstructured":"Torlak, E., Chandra, S.: Effective interprocedural resource leak detection. In: International Conference on Software Engineering (ICSE), pp.\u00a0535\u2013544 (2010)"},{"key":"804_CR43","first-page":"159","volume-title":"ACM Joint European Software Engineering Conference and Symposium on the Foundations of Software Engineering (ESEC\/FSE)","author":"A. Utture","year":"2023","unstructured":"Utture, A., Palsberg, J.: From leaks to fixes: automated repairs for resource leak warnings. In: ACM Joint European Software Engineering Conference and Symposium on the Foundations of Software Engineering (ESEC\/FSE), pp.\u00a0159\u2013171 (2023)"},{"key":"804_CR44","first-page":"389","volume-title":"Architectural Support for Programming Languages and Operating Systems (ASPLOS)","author":"K. Wang","year":"2017","unstructured":"Wang, K., Hussain, A., Zuo, Z., Xu, G.H., Sani, A.A.: Graspan: a single-machine disk-based graph system for interprocedural static analyses of large-scale systems code. In: Architectural Support for Programming Languages and Operating Systems (ASPLOS), pp.\u00a0389\u2013404 (2017)"},{"key":"804_CR45","first-page":"419","volume-title":"Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA)","author":"W. Weimer","year":"2004","unstructured":"Weimer, W., Necula, G.C.: Finding and preventing run-time error handling mistakes. In: Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA), pp.\u00a0419\u2013431 (2004)"},{"key":"804_CR46","first-page":"27","volume-title":"International Workshop on Automation of Software Test (AST)","author":"H. Wu","year":"2018","unstructured":"Wu, H., Wang, Y., Rountev, A.: Sentinel: generating GUI tests for Android sensor leaks. In: International Workshop on Automation of Software Test (AST), pp.\u00a027\u201333. IEEE (2018)"},{"key":"804_CR47","doi-asserted-by":"publisher","first-page":"64","DOI":"10.1145\/2896921.2896932","volume-title":"International Workshop on Automation of Software Test (AST)","author":"H. Zhang","year":"2016","unstructured":"Zhang, H., Wu, H., Rountev, A.: Automated test generation for detection of leaks in Android applications. In: International Workshop on Automation of Software Test (AST), pp.\u00a064\u201370 (2016)"},{"key":"804_CR48","doi-asserted-by":"crossref","unstructured":"Zuo, Z.: Personal communication (2021)","DOI":"10.1155\/2021\/6625688"},{"key":"804_CR49","first-page":"1","volume-title":"EuroSys","author":"Z. Zuo","year":"2019","unstructured":"Zuo, Z., Thorpe, J., Wang, Y., Pan, Q., Lu, S., Wang, K., Xu, G.H., Wang, L., Li, X.: Grapple: a graph system for static finite-state property checking of large-scale systems code. In: EuroSys, pp.\u00a01\u201317 (2019)"}],"container-title":["International Journal on Software Tools for Technology Transfer"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/link.springer.com\/content\/pdf\/10.1007\/s10009-025-00804-2.pdf","content-type":"application\/pdf","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/link.springer.com\/article\/10.1007\/s10009-025-00804-2\/fulltext.html","content-type":"text\/html","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/link.springer.com\/content\/pdf\/10.1007\/s10009-025-00804-2.pdf","content-type":"application\/pdf","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,6,11]],"date-time":"2025-06-11T13:18:29Z","timestamp":1749647909000},"score":1,"resource":{"primary":{"URL":"https:\/\/link.springer.com\/10.1007\/s10009-025-00804-2"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2025,4]]},"references-count":49,"journal-issue":{"issue":"2","published-print":{"date-parts":[[2025,4]]}},"alternative-id":["804"],"URL":"https:\/\/doi.org\/10.1007\/s10009-025-00804-2","relation":{},"ISSN":["1433-2779","1433-2787"],"issn-type":[{"value":"1433-2779","type":"print"},{"value":"1433-2787","type":"electronic"}],"subject":[],"published":{"date-parts":[[2025,4]]},"assertion":[{"value":"29 April 2025","order":1,"name":"accepted","label":"Accepted","group":{"name":"ArticleHistory","label":"Article History"}},{"value":"5 June 2025","order":2,"name":"first_online","label":"First Online","group":{"name":"ArticleHistory","label":"Article History"}}]}}