Skip to main content
QUICK REVIEW

[论文解读] Code Search: A Survey of Techniques for Finding Code

Luca Di Grazia, Michael Pradel|arXiv (Cornell University)|Apr 6, 2022
Software Engineering Research被引用 6
一句话总结

本综述对代码搜索研究进行了为期30年的全面回顾,分析了查询类型、预处理、索引、检索、排序和剪枝技术。它指出了关键挑战与机遇,包括自然语言查询、跨语言搜索,以及对更优基准和评估方法的需求,以支持未来代码检索系统的研究。

ABSTRACT

The immense amounts of source code provide ample challenges and opportunities during software development. To handle the size of code bases, developers commonly search for code, e.g., when trying to find where a particular feature is implemented or when looking for code examples to reuse. To support developers in finding relevant code, various code search engines have been proposed. This article surveys 30 years of research on code search, giving a comprehensive overview of challenges and techniques that address them. We discuss the kinds of queries that code search engines support, how to preprocess and expand queries, different techniques for indexing and retrieving code, and ways to rank and prune search results. Moreover, we describe empirical studies of code search in practice. Based on the discussion of prior work, we conclude the article with an outline of challenges and opportunities to be addressed in the future.

研究动机与目标

  • 提供对过去30年代码搜索研究的全面概述,涵盖不断演进的技术与挑战。
  • 分析代码搜索引擎支持的查询类型,包括自然语言查询和基于API的查询。
  • 考察代码搜索系统中使用的预处理、索引、检索、排序和剪枝技术。
  • 识别未来代码检索与搜索引擎设计中的开放挑战与机遇。
  • 评估现有数据集与基准,强调需要更多真实、大规模且以行动为导向的评估数据。

提出的方法

  • 对过去30年代码搜索研究的系统性综述,聚焦于顶级会议与期刊(CORE A*或A类)的完整研究论文。
  • 根据查询类型、预处理、索引、检索、排序和剪枝机制对代码搜索技术进行分类。
  • 分析基于学习的方法,包括用于代码检索和代码到代码搜索的神经模型。
  • 回顾基准数据集,如CodeSearchNet、CodeXGLUE、CoSQA和BigCloneBench,包括其在评估代码搜索引擎中的应用。
  • 审视模型评估中的挑战,特别是模型在公开代码语料库上预训练时可能导致的数据泄露风险。
  • 讨论未来方向,包括无查询搜索、自动澄清问题,以及将代码补全功能集成到搜索界面中以减少用户负担。

实验结果

研究问题

  • RQ1现代代码搜索引擎支持哪些类型的查询,它们如何处理自然语言查询和基于API的查询?
  • RQ2代码搜索引擎如何对查询进行预处理和扩展以提高检索准确性?
  • RQ3代码搜索中占主导地位的索引与检索技术是什么,它们如何在大规模代码库中实现可扩展性?
  • RQ4采用何种策略对搜索结果进行排序与剪枝,以提升开发者的可用性?
  • RQ5当前基准的局限性是什么,未来数据集如何更好地反映真实开发者的使用行为?

主要发现

  • 代码搜索已发展为一个成熟的科研领域,对现实世界软件开发产生了显著影响,背后有广泛的技术与系统支持。
  • 基于学习的模型,尤其是那些在大规模代码语料库上预训练的模型,已成为现代代码搜索的核心,显著提升了检索性能。
  • CodeSearchNet和CodeXGLUE等基准已实现标准化评估,但当模型在相似数据上预训练时,存在数据泄露的风险。
  • 自然语言查询和基于API的查询日益受到支持,使开发人员能够使用高层次规范或示例进行搜索。
  • 对包含开发者交互数据(如结果选择与代码适配)的基准需求日益增长,以更真实地反映实际使用场景。
  • 未来方向包括无查询搜索、自动澄清问题,以及将代码补全功能集成到搜索界面中,以减少用户操作负担。

更好的研究,从现在开始

从阅读论文到最终审阅,大幅缩短您的研究时间。

无需绑定信用卡

本解读由 AI 生成,并经人工编辑审核。