Portfolio: finding relevant functions and their usage
By Collin McMillan, Mark Grechanik, Denys Poshyvanyk, Qing Xie, Chen Fu. International Conference on Software Engineering, 2011
375 citations recorded by the source corpus.
Different studies show that programmers are more interested in finding definitions of functions and their uses than variables, statements, or arbitrary code fragments [30, 29, 31]. Therefore, programmers require support in finding relevant functions and determining how those functions are used. Unfortunately, existing code search engines do not provide enough of this support to developers, thus reducing the effectiveness of code reuse. We provide this support to programmers in a code search system called Portfolio that retrieves and visualizes relevant functions and their usages. We have built Portfolio using a combination of models that address surfing behavior of programmer and sharing Related concepts among functions. We conducted an experiment with 49 professional programmers to compare Portfolio to Google Code Search and Koders using a standard methodology. The results show with strong statistical significance that users find more relevant functions with higher precision with Portfolio than with Google Code Search and Koders.
Subfields: Computer Networks and Communications, Information Systems, Information Systems and Management
View Paper: https://www.semanticscholar.org/paper/e819aa348aa29df6afb681d3fdd7f8c8d7560384
How researchers see this paper
The researchers whose trusted networks rank it highest, strongest advocate first. Every researcher gets a different order.
In Computer Networks and Communications
- Hongyu Zhang
- Sunghun Kim
- Xiaodong Gu
- Anh Tuan Nguyen
- Collin McMillan
- Tien Nhut Nguyen
- Hoan Anh Nguyen
- Armando Solar-Lezama
In Information Systems
- Hongyu Zhang
- Charles Sutton
- Premkumar T. Devanbu
- Miltiadis Allamanis
- Denys Poshyvanyk
- Tien Nhut Nguyen
- Anh Tuan Nguyen
- Swarat Chaudhuri
In Information Systems and Management
- Hongyu Zhang
- Collin McMillan
- Sunghun Kim
- Xiaodong Gu
- Armando Solar-Lezama
- Alexander LeClair
- James Koppel
- Siyuan Jiang
Citations in the corpus
- A Study of "Wheat" and "Chaff" in Source Code (2015, background): “Work on code search breaks the problem into three subproblems 1) how to store and index code [2, 20], 2) what queries (and results) to support [27, 28], and 3) how to filter and rank the results [2, 18, 21].”
- A Large-Scale Study on Repetitiveness, Containment, and Composability of Routines in Open-Source Projects (2016, methodology): “Portfolio [40] is a tool to find relevant functions and their usage.”
- A Neural Model for Generating Natural Language Summaries of Program Subroutines (2019, methodology): “[51] to extract the Java methods and organize them into a SQL database.”
- Portfolio: Searching for relevant functions and their usages in millions of lines of code (2013, methodology): “…implementations of these requirements in the context of speci.c programs is an extensive research area, and these techniques have used information retrieval [Marcus et al. 2004], execution information [Dit et al. 2011; Poshyvanyk et al. 2007], and formal concept analysis [Poshyvanyk et al. 2012].”
- Deep Code Search (2018, methodology): “For example, McMillan et al. [47] proposed Portfolio, a code search engine that combines keyword matching with PageR-ank to return a chain of functions.”
- Deep API learning (2016, methodology): “[28] proposed a code search tool called Portfolio that retrieves and visualizes relevant functions and their usages.”
- Semantic code search via equational reasoning (2020, methodology): “Two interesting points in this space are Portfolio [47], which refines the initial search results by running PageRank on the call-graph, and Source Forager [30], which compares functions using a weighted average of many similarity scores, including fine-grained features such as the set of shared num”
- Data-Driven Program Completion (2017, methodology): “Code search has been performed in various other se ings, using di erent code features: TRACY (David and Yahav 2014) uses k-limited static program paths (called tracelets) to search similar stripped binary code snippets, Exemplar (Grechanik et al. 2010) uses Java APIs exercised to aid code search, Po”