Learning from Examples to Find Fully Qualified Names of API Elements in Code Snippets C M Khaled Saifullah Muhammad Asaduzzaman† Chanchal K. Roy Department of Computer Science, University of Saskatchewan, Canada †School of Computing, Queen's University, Canada fkhaled.saifullah,
[email protected] †
[email protected] Abstract—Developers often reuse code snippets from online are difficult to compile and run. According to Horton and forums, such as Stack Overflow, to learn API usages of software Parnin [6] only 1% of the Java and C# code examples included frameworks or libraries. These code snippets often contain am- in the Stack Overflow posts are compilable. Yang et al. [7] biguous undeclared external references. Such external references make it difficult to learn and use those APIs correctly. In also report that less than 25% of Python code snippets in particular, reusing code snippets containing such ambiguous GitHub Gist are runnable. Resolving FQNs of API elements undeclared external references requires significant manual efforts can help to identify missing external references or declaration and expertise to resolve them. Manually resolving fully qualified statements. names (FQN) of API elements is a non-trivial task. In this paper, Prior studies link API elements in forum discussions to their we propose a novel context-sensitive technique, called COSTER, to resolve FQNs of API elements in such code snippets. The pro- documentation using Partial Program Analysis (PPA) [8], text posed technique collects locally specific source code elements as analysis [2], [9], and iterative deductive analysis [5]. All these well as globally related tokens as the context of FQNs, calculates techniques except Baker [5], need adequate documentation or likelihood scores, and builds an occurrence likelihood dictionary discussion in online forums.