Semantic code search via equational reasoning
Name
3385412.3386001.pdf
Description
Published version
Size
469.73 KB
Format
Adobe PDF
Checksum (MD5)
8755bceee6584e0bec2bfdaebbda882f
Author(s) • •
Premtoon, Varot
Koppel, James
Solar-Lezama, Armando
Date Issued
June 6, 2020
Journal
Proceedings of the ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI)
Publisher
ACM
Citation
Premtoon, Varot, Koppel, James and Solar-Lezama, Armando. 2020. "Semantic code search via equational reasoning." Proceedings of the ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI).
Version
Final published version
Abstract
© 2020 Owner/Author. 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.
MIT Department
Massachusetts Institute of Technology. Department of Electrical Engineering and Computer Science
Massachusetts Institute of Technology. Computer Science and Artificial Intelligence Laboratory
Terms of Use
Creative Commons Attribution 4.0 International license
Persistent DSpace Link
DOI of Published Version
https://doi.org/10.1145/3385412.3386001