计算机科学 > 软件工程
[提交于 2025年7月2日
]
标题: 基于自然语言查询的结构化代码搜索
标题: Structural Code Search using Natural Language Queries
摘要: 搜索代码是开发人员执行的常见任务,以理解API、学习常见的代码模式和导航代码。目前,开发人员最常用的关键字和正则表达式进行搜索,这些方法易于使用且广泛可用。除了关键字和正则表达式之外,结构化代码搜索工具允许开发人员根据语法结构搜索代码。这在从错误查找系统地重构代码等各种应用中都有用处。然而,这些结构化代码搜索工具的操作是通过领域特定语言(DSL)编写的查询,这些语言可能难以学习和编写。我们提出允许开发人员使用自然语言进行结构化代码搜索。用自然语言表达查询提供了一种直观的代码搜索方式,并降低了入门门槛。在这项工作中,我们开发了一种新颖的通用方法,将大型语言模型(LLM)的推理能力结合起来,以解释自然语言搜索查询,并利用结构化搜索工具的强大功能来高效准确地检索相关代码。然后,我们将这种方法应用于两种结构化代码搜索DSL:Semgrep和GQL。在我们的评估中,我们构建了一个新的结构化代码搜索基准,包含10个Java项目上的400个查询。我们表明,基于使用LLM将自然语言查询转换为DSL查询的结构化代码搜索方法是有效且稳健的,在精度和召回率方面达到55% - 70%的高水平。此外,我们的方法在F1分数上比基于语义代码搜索和LLM检索的基线方法显著优越,最高可达57%和14%。
文献和引用工具
与本文相关的代码,数据和媒体
alphaXiv (什么是 alphaXiv?)
CatalyzeX 代码查找器 (什么是 CatalyzeX?)
DagsHub (什么是 DagsHub?)
Gotit.pub (什么是 GotitPub?)
Hugging Face (什么是 Huggingface?)
带有代码的论文 (什么是带有代码的论文?)
ScienceCast (什么是 ScienceCast?)
演示
推荐器和搜索工具
arXivLabs:与社区合作伙伴的实验项目
arXivLabs 是一个框架,允许合作伙伴直接在我们的网站上开发和分享新的 arXiv 特性。
与 arXivLabs 合作的个人和组织都接受了我们的价值观,即开放、社区、卓越和用户数据隐私。arXiv 承诺这些价值观,并且只与遵守这些价值观的合作伙伴合作。
有一个为 arXiv 社区增加价值的项目想法吗? 了解更多关于 arXivLabs 的信息.