CROKAGE: Effective Solution Recommendation for Programming Tasks by Leveraging Crowd Knowledge
Resumo
Os desenvolvedores frequentemente pesquisam exemplos de código relevantes na web para suas tarefas de programação. Não obstante, eles enfrentam três problemas principais. Primeiro, eles geralmente precisam ler e analisar vários resultados dos mecanismos de pesquisa para obter uma solução satisfatória. Em segundo lugar, a pesquisa é prejudicada devido a uma lacuna léxica entre a consulta (descrição da tarefa) e as informações na solução (p.ex., exemplo de código). Por último, a solução pode não ser compreensível, ou seja, o segmento de código pode não ser acompanhado de uma explicação sucinta. Para resolver esses três problemas, propomos o CROKAGE (Crowd Knowledge Answer Generator), uma ferramenta que recebe a descrição de uma tarefa de programação (a consulta) como entrada e fornece uma solução compreensível para a tarefa. As soluções contêm não apenas exemplos de código relevantes, mas também suas explicações sucintas escritas por desenvolvedores humanos. Avaliamos e comparamos a abordagem com dez baselines, incluindo o estado-da-arte. Mostramos que CROKAGE supera todos baselines ao sugerir soluções relevantes para 902 tarefas de programação (ou seja, consultas) de três linguagens de programação populares: Java, Python e PHP. Além disso, usamos 24 tarefas de programação (consultas) para avaliar nossas soluções com 29 desenvolvedores e confirmar que CROKAGE supera a ferramenta estado-da-arte em termos de relevância dos exemplos de código sugeridos, utilidade das explicações do código e qualidade geral da solução (código + explicação).
Referências
Huang, Q., Xia, X., Xing, Z., Lo, D., and Wang, X. (2018). API method recommendation without worrying about the task-API knowledge gap. In Proc. ASE, pages 293–304.
Xu, B., Xing, Z., Xia, X., and Lo, D. (2017). Answerbot: Automated generation of answer summary to developers’ technical questions. In Proc. ASE, pages 706–716.