Publication Type
Journal Article
Version
acceptedVersion
Publication Date
1-2023
Abstract
Stack Overflow has been heavily used by software developers to seek programming-related information. More and more developers use Community Question and Answer forums, such as Stack Overflow, to search for code examples of how to accomplish a certain coding task. This is often considered to be more efficient than working from source documentation, tutorials, or full worked examples. However, due to the complexity of these online Question and Answer forums and the very large volume of information they contain, developers can be overwhelmed by the sheer volume of available information. This makes it hard to find and/or even be aware of the most relevant code examples to meet their needs. To alleviate this issue, in this work, we present a query-driven code recommendation tool, named Que2Code, that identifies the best code snippets for a user query from Stack Overflow posts. Our approach has two main stages: (i) semantically equivalent question retrieval and (ii) best code snippet recommendation. During the first stage, for a given query question formulated by a developer, we first generate paraphrase questions for the input query as a way of query boosting and then retrieve the relevant Stack Overflow posted questions based on these generated questions. In the second stage, we collect all of the code snippets within questions retrieved in the first stage and develop a novel scheme to rank code snippet candidates from Stack Overflow posts via pairwise comparisons. To evaluate the performance of our proposed model, we conduct a large-scale experiment to evaluate the effectiveness of the semantically equivalent question retrieval task and best code snippet recommendation task separately on Python and Java datasets in Stack Overflow. We also perform a human study to measure how real-world developers perceive the results generated by our model. Both the automatic and human evaluation results demonstrate the promising performance of our model, and we have released our code and data to assist other researchers.
Keywords
Software engineering, Software evolution, Maintaining software
Discipline
Artificial Intelligence and Robotics | Software Engineering | Theory and Algorithms
Research Areas
Cybersecurity; Intelligent Systems and Optimization; Software and Cyber-Physical Systems
Publication
ACM Transactions on Software Engineering and Methodology
Volume
32
Issue
3
First Page
1
Last Page
42
ISSN
1049-331X
Identifier
10.1145/3550150
Publisher
Association for Computing Machinery (ACM)
Citation
GAO, Zhipeng; XIA, Xin; LO, David; GRUNDY, John C.; ZHANG, Xindong; and XING, Zhenchang.
I know what you are searching for: Code snippet recommendation from Stack Overflow posts. (2023). ACM Transactions on Software Engineering and Methodology. 32, (3), 1-42.
Available at: https://ink.library.smu.edu.sg/sis_research/8507
Creative Commons License
This work is licensed under a Creative Commons Attribution-NonCommercial-No Derivative Works 4.0 International License.
Additional URL
https://doi.org/10.1145/3550150
Included in
Artificial Intelligence and Robotics Commons, Software Engineering Commons, Theory and Algorithms Commons