Neurosymbolic Repo-level Code Localization

📄 arXiv: 2604.16021v1 📥 PDF

作者: Xiufeng Xu, Xiufeng Wu, Zejun Zhang, Yi Li

分类: cs.SE, cs.AI

发布日期: 2026-04-17


💡 一句话要点

提出LogicLoc,结合神经符号推理解决代码库级代码定位中的关键词作弊问题。

🎯 匹配领域: 支柱九:具身大模型 (Embodied Foundation Models)

关键词: 代码定位 神经符号推理 大型语言模型 Datalog 关键词作弊

📋 核心要点

  1. 现有代码定位方法易受关键词作弊影响,过度依赖词汇匹配,缺乏真正的结构推理能力。
  2. LogicLoc结合大型语言模型和Datalog逻辑推理,从代码库提取事实,生成可验证的Datalog程序。
  3. LogicLoc在KA-LogicQuery上显著优于现有方法,同时保持了在传统基准上的竞争力,并降低了资源消耗。

📝 摘要(中文)

代码定位是自主软件工程的基石。现有方法在真实问题基准测试中表现出色,但存在严重的关键词作弊偏差,模型依赖于表面的词汇匹配而非真正的结构推理。为解决此问题,论文形式化了关键词无关的逻辑代码定位(KA-LCL)挑战,并引入KA-LogicQuery诊断基准,要求结构推理且不提供命名提示。评估表明,现有方法在KA-LogicQuery上性能急剧下降,暴露了其缺乏确定性推理能力。论文提出LogicLoc,一种新型代理框架,结合大型语言模型和Datalog的严格逻辑推理进行精确定位。LogicLoc从代码库中提取程序事实,并利用LLM合成Datalog程序,通过解析器门控验证和基于突变的中间规则诊断反馈来确保正确性和效率。验证后的程序由高性能推理引擎执行,从而在全自动闭环工作流程中实现准确且可验证的定位。实验结果表明,LogicLoc在KA-LogicQuery上显著优于SOTA方法,同时在流行的面向问题的基准测试中保持了竞争力。LogicLoc通过将结构遍历卸载到确定性引擎,降低了迭代LLM推理的开销,从而以更低的token消耗和更快的执行速度实现了卓越的性能。

🔬 方法详解

问题定义:论文旨在解决代码定位任务中,现有方法过度依赖关键词匹配(如文件名、函数名)而忽略代码结构的问题。这种“关键词作弊”现象导致模型在缺乏关键词提示的情况下性能大幅下降,无法进行真正的逻辑推理。现有方法的痛点在于缺乏对代码结构的深入理解和确定性的推理能力。

核心思路:论文的核心思路是将大型语言模型(LLM)的自然语言理解能力与Datalog逻辑推理的严谨性相结合。LLM负责从代码库中提取程序事实并生成Datalog程序,而Datalog推理引擎则负责执行这些程序,从而实现基于代码结构的精确代码定位。这种神经符号结合的方法旨在克服现有方法对关键词的过度依赖,并提高代码定位的准确性和可靠性。

技术框架:LogicLoc框架包含以下主要模块:1) 代码库分析器:从代码库中提取程序事实,例如函数调用关系、变量定义等。2) Datalog程序生成器:利用LLM将自然语言描述的问题转化为Datalog程序。3) 解析器门控验证器:验证生成的Datalog程序是否符合语法规则。4) 基于突变的中间规则诊断反馈:通过对Datalog程序进行突变测试,识别并修复程序中的错误。5) Datalog推理引擎:执行验证后的Datalog程序,输出代码定位结果。整个流程是一个闭环系统,通过迭代优化Datalog程序,最终实现准确的代码定位。

关键创新:LogicLoc的关键创新在于将LLM的生成能力与Datalog的确定性推理能力相结合,构建了一个神经符号推理框架。与现有方法相比,LogicLoc能够更好地理解代码结构,并进行更可靠的逻辑推理。此外,LogicLoc还引入了解析器门控验证和基于突变的中间规则诊断反馈机制,确保生成的Datalog程序的正确性和效率。

关键设计:Datalog程序生成器的prompt设计至关重要,需要引导LLM生成符合语法规则且能够有效解决问题的Datalog程序。解析器门控验证器使用Datalog解析器来检查生成的程序是否符合语法规则。基于突变的中间规则诊断反馈机制通过对Datalog程序进行随机突变,并观察推理结果的变化,来识别程序中的错误。Datalog推理引擎采用高性能的推理算法,以提高代码定位的效率。

🖼️ 关键图片

fig_0
fig_1
fig_2

📊 实验亮点

LogicLoc在KA-LogicQuery基准测试上显著优于现有SOTA方法,验证了其在关键词无关的代码定位方面的优势。同时,LogicLoc在传统的面向问题的基准测试中也保持了竞争力。更重要的是,LogicLoc通过将结构遍历卸载到确定性引擎,降低了迭代LLM推理的开销,从而以更低的token消耗和更快的执行速度实现了卓越的性能。具体性能数据未知。

🎯 应用场景

LogicLoc可应用于自动化软件维护、代码缺陷定位、代码理解和代码生成等领域。通过提高代码定位的准确性和效率,可以显著降低软件开发和维护的成本,并提高软件质量。该研究对于提升自主软件工程能力具有重要意义,并为未来的神经符号推理研究提供了新的思路。

📄 摘要(原文)

Code localization is a cornerstone of autonomous software engineering. Recent advancements have achieved impressive performance on real-world issue benchmarks. However, we identify a critical yet overlooked bias: these benchmarks are saturated with keyword references (e.g. file paths, function names), encouraging models to rely on superficial lexical matching rather than genuine structural reasoning. We term this phenomenon the Keyword Shortcut. To address this, we formalize the challenge of Keyword-Agnostic Logical Code Localization (KA-LCL) and introduce KA-LogicQuery, a diagnostic benchmark requiring structural reasoning without any naming hints. Our evaluation reveals a catastrophic performance drop of state-of-the-art approaches on KA-LogicQuery, exposing their lack of deterministic reasoning capabilities. We propose LogicLoc, a novel agentic framework that combines large language models with the rigorous logical reasoning of Datalog for precise localization. LogicLoc extracts program facts from the codebase and leverages an LLM to synthesize Datalog programs, with parser-gated validation and mutation-based intermediate-rule diagnostic feedback to ensure correctness and efficiency. The validated programs are executed by a high-performance inference engine, enabling accurate and verifiable localization in a fully automated, closed-loop workflow. Experimental results demonstrate that LogicLoc significantly outperforms SOTA methods on KA-LogicQuery while maintaining competitive performance on popular issue-driven benchmarks. Notably, LogicLoc attains superior performance with significantly lower token consumption and faster execution by offloading structural traversal to a deterministic engine, reducing the overhead of iterative LLM inference.