ABSTRACT
In programming practice, developers often need sample code in order to learn how to solve a programming-related problem. For example, how to reuse an Application Programming Interface (API) of a large-scale software library and how to implement a certain functionality. We believe that previously written code can help developers understand how others addressed the similar problems and can help them write new programs. We develop a tool called Bing Developer Assistant (BDA), which improves developer productivity by recommending sample code mined from public software repositories (such as GitHub) and web pages (such as Stack Overflow). BDA can automatically mine code snippets that implement an API or answer a code search query. It has been implemented as a free-downloadable extension of Microsoft Visual Studio and has received more than 670K downloads since its initial release in December 2014. BDA is publicly available at: http://aka.ms/devassistant.
- J. Brandt, M. Dontcheva, M. Weskamp, and S. R. Klemmer, “Example centric programming: Integrating web search into the development environment,” in Proc. CHI ’10, 2010, pp. 513–522. Google ScholarDigital Library
- P.L. Buse and W. Weimer. “Synthesizing API Usage Examples,” In Proc. ICSE’12, pp 782-792, 2012. Google ScholarDigital Library
- R.Holmes and G. C. Murphy. “Using structural context to recommend source code examples,” In Proc. ICSE, 2005, pp. 117-125. Google ScholarDigital Library
- R. Hoffmann, J. Fogarty, and D. S. Weld, “Assieme: Finding and leveraging implicit references in a web search interface for programmers,” in Proc. 20th Annual ACM Symposium on User Interface Software and Technology (UIST ’07), 2007, pp. 13–22. Google ScholarDigital Library
- Krugle code search. {Online}. Available: http://www.krugle.com/Google Scholar
- Ohloh code search. {Online}. Available: https://code.ohloh.net/Google Scholar
- F. Lv, H. Zhang, J. Lou, S. Wang, D. Zhang, and J. Zhao, "CodeHow: Effective Code Search based on API Understanding and Extended Boolean Model", in Proc. ASE 2015, Lincoln, Nebraska, Nov 2015, pp. 260-270.Google ScholarDigital Library
- C.McMillan, M. Grechanik, D. Poshyvanyk, Q. Xie, and C. Fu, “Portfolio: finding relevant functions and their usages,” In Proc. ICSE 2011, pp. 111-120. Google ScholarDigital Library
- M.P. Robillard, “What makes APIs hard to learn? Answers from developers,” IEEE Software, vol. 26, no. 6, pp. 27–34, 2009. Google ScholarDigital Library
- M.P. Robillard and R. DeLine. A Field Study of API Learning Obstacles. Empirical Soft. Engin., 16(6): 703-732, 2011. Google ScholarDigital Library
- S. E. Sim and R. Gallardo-Valencia, Finding Source Code on the Web for Remix and Reuse, Springer, 2013. Google ScholarDigital Library
- A. Sawant and A. Bacchelli, A Dataset for API Usage, in Proc. 12th Working Conference on Mining Software Repositories (MSR), 2015, pp. 506-509. Google ScholarDigital Library
- J. Stylos and B. A. Myers, “Mica: A web-search tool for finding API components and examples,” in Proceedings of the Visual Languages and Human-Centric Computing (VLHCC ’06), 2006, pp. 195–202. Google ScholarDigital Library
- S.Thummalapenta, T. Xie. “PARSEWeb: a programmer assistant for reusing open source code on the web,” In Proc. ASE 2007, pp. 204-213. Google ScholarDigital Library
- J. Wang, Y. Dang, H. Zhang, K. Chen, T. Xie, and D. Zhang. Mining succinct and high-coverage API usage patterns from source code. In Proc. of the 10th Working Conference on Mining Software Repositories, pp. 319-328, 2013. Google ScholarDigital Library
- H. Zhong, T. Xie, L. Zhang, J. Pei, H. Mei. “MAPO: mining and recommending API usage patterns,” In Proc. ECOOP 2009, pp. 318-343. Google ScholarDigital Library
- Y. Wei and N. Chandrasekaran and S. Gulwani and Y. Hamadi, Building Bing Developer Assistant, Microsoft technical report MSR-TR-2015-36, May 2015.Google Scholar
- J. Kim, S. Lee, S.-w. Hwang, and S. Kim. Towards an intelligent code search engine. In Prof. 24th AAAI Conference on Artificial Intelligence, 2010. Google ScholarDigital Library
- Y. M. Mileva, V. Dallmeier, and A. Zeller, “Mining API popularity,” in Testing–Practice and Research Techniques. Springer, 2010, pp. 173–180. Google ScholarDigital Library
- D. Dig and R. Johnson, “How do APIs evolve? a story of refactoring,” Journal of software maintenance and evolution: Research and Practice, vol. 18, no. 2, pp. 83–107, 2006. Google ScholarDigital Library
- L. Ponzanelli, A. Bacchelli, and M. Lanza, “Seahawk: Stack overflow in the IDE,” in Proceedings of ICSE 2013 (35th International Conference on Software Engineering, Tool Demo Track), pp. 1295–1298, 2013. Google ScholarDigital Library
- X. Gu, H. Zhang, D. Zhang, S. Kim. Deep API Learning, in Proc. 24th ACM SIGSOFT International Symposium on the Foundations of Software Engineering (FSE 2016), Seattle, WA, USA, November 2016. Google ScholarDigital Library
Index Terms
- Bing developer assistant: improving developer productivity by recommending sample code
Comments