skip to main content
10.1145/2950290.2983955acmconferencesArticle/Chapter ViewAbstractPublication PagesfseConference Proceedingsconference-collections
short-paper

Bing developer assistant: improving developer productivity by recommending sample code

Published:01 November 2016Publication History

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.

References

  1. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  2. P.L. Buse and W. Weimer. “Synthesizing API Usage Examples,” In Proc. ICSE’12, pp 782-792, 2012. Google ScholarGoogle ScholarDigital LibraryDigital Library
  3. R.Holmes and G. C. Murphy. “Using structural context to recommend source code examples,” In Proc. ICSE, 2005, pp. 117-125. Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  5. Krugle code search. {Online}. Available: http://www.krugle.com/Google ScholarGoogle Scholar
  6. Ohloh code search. {Online}. Available: https://code.ohloh.net/Google ScholarGoogle Scholar
  7. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  8. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  9. M.P. Robillard, “What makes APIs hard to learn? Answers from developers,” IEEE Software, vol. 26, no. 6, pp. 27–34, 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. M.P. Robillard and R. DeLine. A Field Study of API Learning Obstacles. Empirical Soft. Engin., 16(6): 703-732, 2011. Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. S. E. Sim and R. Gallardo-Valencia, Finding Source Code on the Web for Remix and Reuse, Springer, 2013. Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  13. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  14. S.Thummalapenta, T. Xie. “PARSEWeb: a programmer assistant for reusing open source code on the web,” In Proc. ASE 2007, pp. 204-213. Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  16. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  17. 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 ScholarGoogle Scholar
  18. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  19. Y. M. Mileva, V. Dallmeier, and A. Zeller, “Mining API popularity,” in Testing–Practice and Research Techniques. Springer, 2010, pp. 173–180. Google ScholarGoogle ScholarDigital LibraryDigital Library
  20. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  21. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  22. 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 ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. Bing developer assistant: improving developer productivity by recommending sample code

    Recommendations

    Comments

    Login options

    Check if you have access through your login credentials or your institution to get full access on this article.

    Sign in
    • Published in

      cover image ACM Conferences
      FSE 2016: Proceedings of the 2016 24th ACM SIGSOFT International Symposium on Foundations of Software Engineering
      November 2016
      1156 pages
      ISBN:9781450342186
      DOI:10.1145/2950290

      Copyright © 2016 ACM

      Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

      Publisher

      Association for Computing Machinery

      New York, NY, United States

      Publication History

      • Published: 1 November 2016

      Permissions

      Request permissions about this article.

      Request Permissions

      Check for updates

      Qualifiers

      • short-paper

      Acceptance Rates

      Overall Acceptance Rate17of128submissions,13%

    PDF Format

    View or Download as a PDF file.

    PDF

    eReader

    View online with eReader.

    eReader