skip to main content
10.1145/3385412.3386001acmconferencesArticle/Chapter ViewAbstractPublication PagespldiConference Proceedingsconference-collections
research-article
Open access

Semantic code search via equational reasoning

Published: 11 June 2020 Publication History

Abstract

We present a new approach to semantic code search based on equational reasoning, and the Yogo tool implementing this approach. Our approach works by considering not only the dataflow graph of a function, but also the dataflow graphs of all equivalent functions reachable via a set of rewrite rules. In doing so, it can recognize an operation even if it uses alternate APIs, is in a different but mathematically-equivalent form, is split apart with temporary variables, or is interleaved with other code. Furthermore, it can recognize when code is an instance of some higher-level concept such as iterating through a file. Because of this, from a single query, Yogo can find equivalent code in multiple languages. Our evaluation further shows the utility of Yogo beyond code search: encoding a buggy pattern as a Yogo query, we found a bug in Oracle’s Graal compiler which had been missed by a hand-written static analyzer designed for that exact kind of bug. Yogo is built on the Cubix multi-language infrastructure, and currently supports Java and Python.

References

[1]
Sushil Krishna Bajracharya, Joel Ossher, and Cristina Videira Lopes. 2010. Leveraging Usage Similarity for Effective Retrieval of Examples in Code Repositories. In Proceedings of the 18th ACM SIGSOFT International Symposium on Foundations of Software Engineering, 2010.
[2]
157–166.
[3]
Don S. Batory, Rui C. Gonçalves, Bryan Marker, and Janet Siegmund. 2013. Dark Knowledge and Graph Grammars in Automated Software Design. In Software Language Engineering - 6th International Conference, SLE 2013, Indianapolis, IN, USA, October 26-28, 2013. Proceedings. 1–18.
[4]
Andrew Begel. 2007. Codifier: A Programmer-Centric Search User Interface. In Proceedings of the Workshop on Human-Computer Interaction and Information Retrieval. 23–24.
[5]
Pavol Bielik, Veselin Raychev, and Martin T. Vechev. 2016. PHOG: Probabilistic Model for Code. In Proceedings of the 33nd International Conference on Machine Learning, ICML 2016, New York City, NY, USA, June 19-24, 2016. 2933–2942.
[6]
Julien Brunel, Damien Doligez, René Rydhof Hansen, Julia L. Lawall, and Gilles Muller. 2009. A Foundation for Flow-Based Program Matching: Using Temporal Logic and Model Checking. In Proceedings of the 36th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, POPL 2009, Savannah, GA, USA, January 21-23, 2009.
[7]
114–126.
[8]
Jose Cambronero, Hongyu Li, Seohyun Kim, Koushik Sen, and Satish Chandra. 2019. When Deep Learning Met Code Search. In Proceedings of the 2019 27th ACM Joint Meeting on European Software Engineering Conference and Symposium on the Foundations of Software Engineering (ESEC/FSE 2019). ACM, New York, NY, USA, 964–974.
[9]
Shaunak Chatterjee, Sudeep Juvekar, and Koushik Sen. 2009. SNIFF: A Search Engine for Java Using Free-Form Queries. In Proceedings of the 12th International Conference on Fundamental Approaches to Software Engineering. York, UK, 385– 400. https://parlab.eecs.berkeley.edu/sites/all/parlab/files/sniff{_}0. pdfhttp://link.springer.com/10.1007/978-3-642-00593-0{_}26
[10]
Seokwoo Choi, Heewan Park, Hyun-il Lim, and Taisook Han. 2009. A static API birthmark for Windows binary executables. Journal of Systems and Software 82, 5 (2009), 862–873.
[11]
Yaniv David and Eran Yahav. 2014. Tracelet-Based Code Search in Executables. In ACM SIGPLAN Conference on Programming Language Design and Implementation, PLDI ’14. 349–360.
[12]
David Detlefs, Greg Nelson, and James B Saxe. 2005. Simplify: A Theorem Prover for Program Checking. J. ACM 52, 3 (2005), 365–743. https://www.hpl.hp.com/techreports/2003/HPL-2003-148.pdf
[13]
Frederico Araújo Durão, Taciana A. Vanderlei, Eduardo Santana de Almeida, and Silvio Romero de Lemos Meira. 2008. Applying a Semantic Layer in a Source Code Search Tool. In Proceedings of the 2008 ACM Symposium on Applied Computing (SAC), Fortaleza, Ceara, Brazil, March 16-20, 2008. 1151–1157.
[14]
Yu Feng, Ruben Martins, Yuepeng Wang, Isil Dillig, and Thomas W. Reps. 2017. Component-Based Synthesis for Complex APIs. In Proceedings of the 44th ACM SIGPLAN Symposium on Principles of Programming Languages, POPL 2017, Paris, France, January 18-20, 2017. 599–612.
[15]
Jeanne Ferrante and Joe D Warren. 1987. The Program Dependence Graph and Its Use in Optimization. ACM Transactions on Programming Languages and Systems 9, 3 (1987), 319–349.
[16]
Charles L Forgy. 1982. Rete: A Fast Algorithm for the Many Pattern/Many Object Pattern Match Problem. Artificial Intelligence 19 (1982), 17–37. http://www.csl.sri.com/users/mwfong/Technical/ RETEMatchAlgorithm-ForgyOCR.pdf
[17]
Mark Gabel, Lingxiao Jiang, and Zhendong Su. 2008. Scalable detection of semantic clones. In 30th International Conference on Software Engineering (ICSE 2008), Leipzig, Germany, May 10-18, 2008. 321–330.
[18]
Joel Galenson, Philip Reames, Rastislav Bodík, Björn Hartmann, and Koushik Sen. 2014. CodeHint: Dynamic and Interactive Synthesis of Code Snippets. In 36th International Conference on Software Engineering, ICSE ’14, Hyderabad, India - May 31 - June 07, 2014. 653–663.
[19]
Isabel Garcia-Contreras, José F. Morales, and Manuel V. Hermenegildo. 2016. Semantic Code Browsing. TPLP 16, 5-6 (2016), 721–737.
[20]
Xiaodong Gu, Hongyu Zhang, and Sunghun Kim. 2018. Deep Code Search. In Proceedings of the 40th International Conference on Software Engineering, ICSE 2018. 933–944.
[21]
Tihomir Gvero, Viktor Kuncak, Ivan Kuraj, and Ruzica Piskac. 2013. Complete Completion Using Types and Weights. In ACM SIGPLAN Conference on Programming Language Design and Implementation, PLDI ’13, Seattle, WA, USA, June 16-19, 2013. 27–38.
[22]
Robert J. Hall. 1993. Generalized Behavior-Based Retrieval. In Proceedings of the 15th International Conference on Software Engineering, Baltimore, Maryland, USA, May 17-21, 1993. 371–380.
[23]
Hamel Husain and Ho-Hsiang Wu. 2018. Towards Natural Language Semantic Code Search. https://github.blog/2018-09-18-towardsnatural-language-semantic-code-search/.
[24]
Yoshiki Higo and Shinji Kusumoto. 2011. Code Clone Detection on Specialized PDGs with Heuristics. In 15th European Conference on Software Maintenance and Reengineering, CSMR 2011, 1-4 March 2011, Oldenburg, Germany. 75–84.
[25]
Reid Holmes and Gail C. Murphy. 2005. Using Structural Context to Recommend Source Code Examples. In 27th International Conference on Software Engineering (ICSE 2005), 15-21 May 2005, St. Louis, Missouri, USA. 117–125.
[26]
Susan Horwitz. 1990. Identifying the Semantic and Textual Differences Between Two Versions of a Program. In Proceedings of the ACM SIGPLAN’90 Conference on Programming Language Design and Implementation (PLDI), White Plains, New York, USA, June 20-22, 1990.
[27]
234–245.
[28]
Ira Baxter and Randall Matthias. 2017. Dow Chemical awards contract extension to Semantic Designs for Process Control Software Reengineering. http://www.semdesigns.com/Announce/DOW_ PRWebRelease_May2017_14309535.pdf.
[29]
Lingxiao Jiang and Zhendong Su. 2009. Automatic Mining of Functionally Equivalent Code Fragments via Random Testing. In Proceedings of the Eighteenth International Symposium on Software Testing and Analysis, ISSTA 2009, Chicago, IL, USA, July 19-23, 2009. 81–92.
[30]
Renhe Jiang, Zhengzhao Chen, Zejun Zhang, Yu Pei, Minxue Pan, and Tian Zhang. 2018. Semantics-Based Code Search Using Input/Output Examples. In 18th IEEE International Working Conference on Source Code Analysis and Manipulation, SCAM 2018, Madrid, Spain, September 23-24, 2018. 92–102.
[31]
Shoaib Kamil, Alvin Cheung, Shachar Itzhaky, and Armando Solar-Lezama. 2016. Verified Lifting of Stencil Computations. In Proceedings of the 37th ACM SIGPLAN Conference on Programming Language Design and Implementation, PLDI 2016. 711–726.
[32]
Deepak Kapur and Paliath Narendran. 1987. Matching, Unification and Complexity. ACM SIGSAM Bulletin 21, 4 (1987), 6–9.
[33]
Vineeth Kashyap, David Bingham Brown, Ben Liblit, David Melski, and Thomas W. Reps. 2017. Source Forager: A Search Engine for Similar Source Code. CoRR abs/1706.02769 (2017). arXiv: 1706.02769 http://arxiv.org/abs/1706.02769
[34]
Iman Keivanloo, Juergen Rilling, and Ying Zou. 2014. Spotting Working Code Examples. In 36th International Conference on Software Engineering, ICSE ’14. 664–675.
[35]
Heejung Kim, Yungbum Jung, Sunghun Kim, and Kwangkeun Yi. 2011. MeCC: Memory Comparison-based Clone Detector. In Proceedings of the 33rd International Conference on Software Engineering, ICSE 2011, Waikiki, Honolulu, HI, USA, May 21-28, 2011. 301–310.
[36]
Kisub Kim, Dongsun Kim, Tegawendé F. Bissyandé, Eunjong Choi, Li Li, Jacques Klein, and Yves Le Traon. 2018. FaCoY - A Code-to-Code PLDI ’20, June 15–20, 2020, London, UK Varot Premtoon, James Koppel, and Armando Solar-Lezama Search Engine. In Proceedings of the 40th International Conference on Software Engineering - ICSE ’18. ACM Press, New York, New York, USA, 946–957.
[37]
Raghavan Komondoor and Susan Horwitz. 2001. Using Slicing to Identify Duplication in Source Code. In Static Analysis, 8th International Symposium, SAS 2001, Paris, France, July 16-18, 2001, Proceedings. 40– 56.
[38]
James Koppel, Varot Premtoon, and Armando Solar-Lezama. 2018. One Tool, Many Languages: Language-Parametric Transformation with Incremental Parametric Syntax. Proceedings of the ACM on Programming Languages 2, OOPSLA (2018), 122.
[39]
Jens Krinke and Lehrstuhl Softwaresysteme. 2001. Identifying Similar Code with Program Dependence Graphs. In Proceedings of the Eighth Working Conference on Reverse Engineering. Washington, DC.
[40]
Dietrich Kuske and Nicole Schweikardt. 2017. First-Order Logic with Counting. In 32nd Annual ACM/IEEE Symposium on Logic in Computer Science, LICS 2017, Reykjavik, Iceland, June 20-23, 2017. 1–12.
[41]
Xuan Li, Zerui Wang, Qianxiang Wang, Shoumeng Yan, Tao Xie, and Hong Mei. 2016. Relationship-Aware Code Search for JavaScript Frameworks. In Proceedings of the 24th ACM SIGSOFT International Symposium on Foundations of Software Engineering, FSE 2016. 690–701.
[42]
Chao Liu, Chen Chen, Jiawei Han, and Philip S. Yu. 2006. GPLAG: Detection of Software Plagiarism by program Dependence Graph Analysis. In Proceedings of the Twelfth ACM SIGKDD International Conference on Knowledge Discovery and Data Mining, Philadelphia, PA, USA, August 20-23, 2006. 872–881.
[43]
Jason Liu, Seohyun Kim, Vijayaraghavan Murali, Swarat Chaudhuri, and Satish Chandra. 2019. Neural Query Expansion for Code Search. In Proceedings of the 3rd ACM SIGPLAN International Workshop on Machine Learning and Programming Languages (MAPL 2019). ACM, New York, NY, USA, 29–37.
[44]
Fei Lv, Hongyu Zhang, Jian-Guang Lou, Shaowei Wang, Dongmei Zhang, and Jianjun Zhao. 2015. CodeHow: Effective Code Search Based on API Understanding and Extended Boolean Model (E). In 30th IEEE/ACM International Conference on Automated Software Engineering. 260–270.
[45]
David Mandelin, Lin Xu, Rastislav Bodík, and Doug Kimelman. 2005. Jungloid Mining: Helping to Navigate the API Jungle. In Proceedings of the ACM SIGPLAN 2005 Conference on Programming Language Design and Implementation, Chicago, IL, USA, June 12-15, 2005. 48–61.
[46]
Panagiotis Manolios. 2001. Mechanical Verification of Reactive Systems. (2001).
[47]
Andrian Marcus and Jonathan I. Maletic. 2001. Identification of High-Level Concept Clones in Source Code. In 16th IEEE International Conference on Automated Software Engineering (ASE 2001), 26-29 November 2001, Coronado Island, San Diego, CA, USA. 107–114.
[48]
Lee Martie, André van der Hoek, and Thomas Kwak. 2017. Understanding the Impact of Support for Iteration on Code Search. In Proceedings of the 2017 11th Joint Meeting on Foundations of Software Engineering, ESEC/FSE 2017, Paderborn, Germany, September 4-8, 2017. 774–785.
[49]
Michael C. Martin, V. Benjamin Livshits, and Monica S. Lam. 2005. Finding Application Errors and Security Flaws Using PQL: A Program Query Language. In Proceedings of the 20th Annual ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications, OOPSLA 2005, October 16-20, 2005, San Diego, CA, USA. 365–383.
[50]
Collin McMillan, Mark Grechanik, Denys Poshyvanyk, Qing Xie, and Chen Fu. 2011. Portfolio: Finding Relevant Functions and Their Usage. In Proceedings of the 33rd International Conference on Software Engineering, ICSE 2011. 111–120.
[51]
Na Meng, Miryung Kim, and Kathryn S. McKinley. 2013. LASE: Locating and Applying Systematic Edits by Learning from Examples. In 35th International Conference on Software Engineering, ICSE ’13, San Francisco, CA, USA, May 18-26, 2013. 502–511. ICSE.2013.6606596
[52]
Alon Mishne, Sharon Shoham, and Eran Yahav. 2012. Typestate-Based Semantic Code Search over Partial Programs. In Proceedings of the 27th Annual ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications, OOPSLA 2012,. 997–1016.
[53]
Greg Nelson and Derek C. Oppen. 1979. Simplification by Cooperating Decision Procedures. ACM Trans. Program. Lang. Syst. 1, 2 (1979), 245–257.
[54]
Greg Nelson and Derek C. Oppen. 1980. Fast Decision Procedures Based on Congruence Closure. J. ACM 27, 2 (1980), 356–364.
[55]
Anh Tuan Nguyen and Tien N. Nguyen. 2015. Graph-Based Statistical Language Model for Code. In 37th IEEE/ACM International Conference on Software Engineering, ICSE 2015, Florence, Italy, May 16-24, 2015, Volume 1. 858–868.
[56]
Anh Tuan Nguyen, Tung Thanh Nguyen, Hoan Anh Nguyen, Ahmed Tamrawi, Hung Viet Nguyen, Jafar M. Al-Kofahi, and Tien N. Nguyen. 2012. Graph-Based Pattern-Oriented, Context-Sensitive Source Code Completion. In 34th International Conference on Software Engineering, ICSE 2012, June 2-9, 2012, Zurich, Switzerland. 69–79.
[57]
Yoann Padioleau, Julia L. Lawall, and Gilles Muller. 2007. SmPL: A Domain-Specific Language for Specifying Collateral Evolutions in Linux Device Drivers. Electr. Notes Theor. Comput. Sci. 166 (2007), 47–62.
[58]
Soya Park, Amy X. Zhang, and David R. Karger. 2018. Post-literate Programming: Linking Discussion and Code in Software Development Teams. In The 31st Annual ACM Symposium on User Interface Software and Technology Adjunct Proceedings, UIST 2018, Berlin, Germany, October 14-17, 2018. 51–53.
[59]
Santanu Paul and Atul Prakash. 1994. A Framework for Source Code Search Using Program Patterns. IEEE Trans. Software Eng. 20, 6 (1994), 463–475.
[60]
Andy Podgurski and Lynn Pierce. 1992. Behavior Sampling: A Technique for Automated Retrieval of Reusable Components. In Proceedings of the 14th International Conference on Software Engineering, Melbourne, Australia, May 11-15, 1992. 349–360.
[61]
Varot Premtoon. 2019. Multi-Language Code Search. Ph.D. Dissertation. Massachusetts Institute of Technology. 7582
[62]
Cosmin A Radoi. 2018. Toward Automatic Programming. Ph.D. Dissertation. Ph. D. thesis, University of Illinois at Urbana-Champaign.
[63]
Mukund Raghothaman, Yi Wei, and Youssef Hamadi. 2016. SWIM: Synthesizing What I Mean: Code Search and Idiomatic Snippet Synthesis. In Proceedings of the 38th International Conference on Software Engineering, ICSE 2016, Austin, TX, USA, May 14-22, 2016. 357–367.
[64]
Dhavleesh Rattan, Rajesh Kumar Bhatia, and Maninder Singh. 2013. Software clone detection: A systematic review. Information & Software Technology 55, 7 (2013), 1165–1199.
[65]
Veselin Raychev, Martin T. Vechev, and Eran Yahav. 2014. Code Completion with Statistical Language Models. In ACM SIGPLAN Conference on Programming Language Design and Implementation, PLDI ’14, Edinburgh, United Kingdom - June 09 - 11, 2014. 419–428.
[66]
Steven P. Reiss. 2009. Semantics-Based Code Search. In 31st International Conference on Software Engineering, ICSE 2009, May 16-24, 2009, Vancouver, Canada, Proceedings. 243–253.
[67]
Charles Rich and Richard C Waters. 1988. The Programmer’s Apprentice. Computer 21j, 11 (1988), 10–25.
[68]
Eugene J. Rollins and Jeannette M. Wing. 1991. Specifications as Search Keys for Software Libraries. In Logic Programming, Proceedings of the Eigth International Conference, Paris, France, June 24-28, 1991. 173–187.
[69]
Chanchal Kumar Roy and James R Cordy. 2007. A Survey on Software Clone Detection Research. QueenâĂŹs School of Computing TR 541, 115 (2007), 64–68. Semantic Code Search via Equational Reasoning PLDI ’20, June 15–20, 2020, London, UK
[70]
Colin Runciman and Ian Toyn. 1989. Retrieving Re-Usable Software Components by Polymorphic Type. In Proceedings of the fourth international conference on Functional programming languages and computer architecture, FPCA 1989. 166–173.
[71]
Saksham Sachdev, Hongyu Li, Sifei Luan, Seohyun Kim, Koushik Sen, and Satish Chandra. 2018. Retrieval on Source Code: A Neural Code Search. In Proceedings of the 2nd ACM SIGPLAN International Workshop on Machine Learning and Programming Languages, MAPL@PLDI 2018.
[72]
[73]
Caitlin Sadowski, Kathryn T. Stolee, and Sebastian G. Elbaum. 2015. How developers search for code: a case study. In Proceedings of the 2015 10th Joint Meeting on Foundations of Software Engineering, ESEC/FSE 2015, Bergamo, Italy, August 30 - September 4, 2015. 191–201.
[74]
Tobias Sager, Abraham Bernstein, Martin Pinzger, and Christoph Kiefer. 2006. Detecting Similar Java Classes Using Tree Algorithms. In Proceedings of the 2006 International Workshop on Mining Software Repositories, MSR 2006, Shanghai, China, May 22-23, 2006. 65–71.
[75]
Naiyana Sahavechaphan and Kajal T. Claypool. 2006. XSnippet: mining For sample code. In Proceedings of the 21th Annual ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications, OOPSLA 2006, October 22-26, 2006, Portland, Oregon, USA. 413–430.
[76]
Vaibhav Saini, Farima Farmahinifarahani, Yadong Lu, Pierre Baldi, and Cristina V. Lopes. 2018. Oreo: Detection of Clones in the Twilight Zone. In Proceedings of the 2018 ACM Joint Meeting on European Software Engineering Conference and Symposium on the Foundations of Software Engineering, ESEC/SIGSOFT FSE 2018, Lake Buena Vista, FL, USA, November 04-09, 2018. 354–365.
[77]
Hitesh Sajnani, Vaibhav Saini, Jeffrey Svajlenko, Chanchal K. Roy, and Cristina V. Lopes. 2016. SourcererCC: Scaling Code Clone Detection to Big-Code. In Proceedings of the 38th International Conference on Software Engineering, ICSE 2016. 1157–1168.
[78]
Philipp Schügerl. 2011. Scalable Clone Detection Using Description Logic. In Proceeding of the 5th ICSE International Workshop on Software Clones, IWSC 2011, Waikiki, Honolulu, HI, USA, May 23, 2011. 47–53.
[79]
Raphael Sirres, Tegawendé F. Bissyandé, Dongsun Kim, David Lo, Jacques Klein, Kisub Kim, and Yves Le Traon. 2018. Augmenting and structuring user queries to support efficient free-form code search. In Proceedings of the 40th International Conference on Software Engineering, ICSE 2018, Gothenburg, Sweden, May 27 - June 03, 2018. 945.
[80]
Aishwarya Sivaraman, Tianyi Zhang, Guy Van den Broeck, and Miryung Kim. 2019. Active Inductive Logic Programming for Code Search. In Proceedings of the 41st International Conference on Software Engineering, ICSE 2019, Montreal, QC, Canada, May 25-31, 2019. 292– 303.
[81]
Kathryn T Stolee, Sebastian Elbaum, and Daniel Dobos. 2014. Solving the Search for Source Code. ACM Transactions on Software Engineering and Methodology (TOSEM) 23, 3 (2014), 26.
[82]
Jeffrey Svajlenko and Chanchal K. Roy. 2015. Evaluating Clone Detection Tools with BigCloneBench. In 2015 IEEE International Conference on Software Maintenance and Evolution, ICSME 2015, Bremen, Germany, September 29 - October 1, 2015. 131–140. 2015.7332459
[83]
Ross Tate, Michael Stepp, and Sorin Lerner. 2010. Generating Compiler Optimizations from Proofs. In Proceedings of the 37th ACM SIGPLANSIGACT Symposium on Principles of Programming Languages, POPL 2010, Madrid, Spain, January 17-23, 2010. 389–402. 1145/1706299.1706345
[84]
Ross Tate, Michael Stepp, Zachary Tatlock, and Sorin Lerner. 2009. Equality Saturation: A New Approach to Optimization. In Proceedings of the Symposium on Principles of Programming Languages. Savannah, GA.
[85]
Suresh Thummalapenta and Tao Xie. 2007. PARSEWeb: A Programmer Assistant for Reusing Open Source Code on the Web. In 22nd IEEE/ACM International Conference on Automated Software Engineering (ASE 2007), November 5-9, 2007, Atlanta, Georgia, USA. 204–213.
[86]
Rahul Venkataramani, Allahbaksh M. Asadullah, Vasudev D. Bhat, and Basavaraju Muddu. 2013. Latent Co-development Analysis Based Semantic Search for Large Code Repositories. In 2013 IEEE International Conference on Software Maintenance. 372–375.
[87]
Mathieu Verbaere, Elnar Hajiyev, and Oege de Moor. 2007. Improve Software Quality with SemmleCode: An Eclipse Plugin for Semantic Code Search. In Companion to the 22nd Annual ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications, OOPSLA 2007, October 21-25, 2007, Montreal, Quebec, Canada. 880–881.
[88]
Shaowei Wang, David Lo, and Lingxiao Jiang. 2011. Code Search via Topic-Enriched Dependence Graph Matching. In 18th Working Conference on Reverse Engineering, WCRE 2011. 119–123.
[89]
Xiaoyin Wang, David Lo, Jiefeng Cheng, Lu Zhang, Hong Mei, and Jeffrey Xu Yu. 2010. Matching Dependence-Related Queries in the System Dependence Graph. In ASE 2010, 25th IEEE/ACM International Conference on Automated Software Engineering, Antwerp, Belgium, September 20-24, 2010. 457–466.
[90]
Louis Wasserman. 2013. Scalable, Example-Based Refactorings with Refaster. In Proceedings of the 2013 ACM Workshop on Refactoring Tools, WRT@SPLASH 2013, Indianapolis, IN, USA, October 27, 2013. 25–28.
[91]
John Whaley and Monica S. Lam. 2004. Cloning-Based Context-Sensitive Pointer Alias Analysis Using Binary Decision Diagrams. In Proceedings of the ACM SIGPLAN 2004 Conference on Programming Language Design and Implementation 2004, Washington, DC, USA, June 9-11, 2004. 131–144.
[92]
Martin White, Michele Tufano, Christopher Vendome, and Denys Poshyvanyk. 2016. Deep Learning Code Fragments for Code Clone Detection. In Proceedings of the 31st IEEE/ACM International Conference on Automated Software Engineering, ASE 2016. 87–98.
[93]
Wikipedia. 2019. Google Code Search — Wikipedia, The Free Encyclopedia. http://en.wikipedia.org/w/index.php?title=Google%20Code% 20Search&oldid=904263675. [Online; accessed 24-August-2019].
[94]
Thomas Würthinger, Christian Wimmer, Andreas Wöß, Lukas Stadler, Gilles Duboscq, Christian Humer, Gregor Richards, Doug Simon, and Mario Wolczko. 2013. One VM to rule them all. In ACM Symposium on New Ideas in Programming and Reflections on Software, Onward! 2013, part of SPLASH ’13, Indianapolis, IN, USA, October 26-31, 2013. 187–204.
[95]
Tao Xie and Jian Pei. 2006. MAPO: Mining API Usages from Open Source Repositories. In Proceedings of the 2006 International Workshop on Mining Software Repositories, MSR 2006, Shanghai, China, May 22-23, 2006. 54–57.
[96]
Kuat Yessenov, Ivan Kuraj, and Armando Solar-Lezama. 2017. DemoMatch: API Discovery from Demonstrations. In Proceedings of the 38th ACM SIGPLAN Conference on Programming Language Design and Implementation, PLDI 2017, Barcelona, Spain, June 18-23, 2017. 64–78.
[97]
Kuat Yessenov, Zhilei Xu, and Armando Solar-Lezama. 2011. Data-Driven Synthesis for Object-Oriented Frameworks. In Proceedings of the 26th Annual ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications, OOPSLA 2011,. 65–82.
[98]
Feng Zhang, Haoran Niu, Iman Keivanloo, and Ying Zou. 2018. Expanding Queries for Code Search Using Semantically Related API Class-names. IEEE Trans. Software Eng. 44, 11 (2018), 1070–1082.

Cited By

View all
  • (2025)An intent-enhanced feedback extension model for code searchInformation and Software Technology10.1016/j.infsof.2024.107589177(107589)Online publication date: Jan-2025
  • (2024)Fast and Optimal Extraction for Sparse Equality GraphsProceedings of the ACM on Programming Languages10.1145/36898018:OOPSLA2(2551-2577)Online publication date: 8-Oct-2024
  • (2024)Syntactic Code Search with Sequence-to-Tree Matching: Supporting Syntactic Search with Incomplete Code FragmentsProceedings of the ACM on Programming Languages10.1145/36564608:PLDI(2051-2072)Online publication date: 20-Jun-2024
  • Show More Cited By

Recommendations

Comments

Please enable JavaScript to view thecomments powered by Disqus.

Information & Contributors

Information

Published In

cover image ACM Conferences
PLDI 2020: Proceedings of the 41st ACM SIGPLAN Conference on Programming Language Design and Implementation
June 2020
1174 pages
ISBN:9781450376136
DOI:10.1145/3385412
This work is licensed under a Creative Commons Attribution International 4.0 License.

Sponsors

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 11 June 2020

Permissions

Request permissions for this article.

Check for updates

Badges

Author Tags

  1. code search
  2. equational reasoning

Qualifiers

  • Research-article

Conference

PLDI '20
Sponsor:

Acceptance Rates

Overall Acceptance Rate 406 of 2,067 submissions, 20%

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)309
  • Downloads (Last 6 weeks)37
Reflects downloads up to 24 Oct 2024

Other Metrics

Citations

Cited By

View all
  • (2025)An intent-enhanced feedback extension model for code searchInformation and Software Technology10.1016/j.infsof.2024.107589177(107589)Online publication date: Jan-2025
  • (2024)Fast and Optimal Extraction for Sparse Equality GraphsProceedings of the ACM on Programming Languages10.1145/36898018:OOPSLA2(2551-2577)Online publication date: 8-Oct-2024
  • (2024)Syntactic Code Search with Sequence-to-Tree Matching: Supporting Syntactic Search with Incomplete Code FragmentsProceedings of the ACM on Programming Languages10.1145/36564608:PLDI(2051-2072)Online publication date: 20-Jun-2024
  • (2024)Arfa: An Agile Regime-Based Floating-Point Optimization Approach for Rounding ErrorsProceedings of the 33rd ACM SIGSOFT International Symposium on Software Testing and Analysis10.1145/3650212.3680378(1516-1528)Online publication date: 11-Sep-2024
  • (2024)Data Augmentation for Supervised Code Translation LearningProceedings of the 21st International Conference on Mining Software Repositories10.1145/3643991.3644923(444-456)Online publication date: 15-Apr-2024
  • (2024)Guided Equality SaturationProceedings of the ACM on Programming Languages10.1145/36329008:POPL(1727-1758)Online publication date: 5-Jan-2024
  • (2024) Wasm-MutateComputers and Security10.1016/j.cose.2024.103731139:COnline publication date: 16-May-2024
  • (2023)Equality Saturation Theory Exploration à la CarteProceedings of the ACM on Programming Languages10.1145/36228347:OOPSLA2(1034-1062)Online publication date: 16-Oct-2023
  • (2023)Towards Top-Down Automated Development in Limited Scopes: A Neuro-Symbolic Framework from Expressibles to ExecutablesProceedings of the 31st ACM Joint European Software Engineering Conference and Symposium on the Foundations of Software Engineering10.1145/3611643.3613076(2072-2076)Online publication date: 30-Nov-2023
  • (2023)Big Code Search: A BibliographyACM Computing Surveys10.1145/360490556:1(1-49)Online publication date: 26-Aug-2023
  • Show More Cited By

View Options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Get Access

Login options

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media