论文
SemLoc:自由形式 LLM 故障定位推理的结构化代码依据
SemLoc: Structured Grounding of Free-Form LLM Reasoning for Fault Localization
摘要
故障定位可识别导致观察到的故障的程序位置。现有技术使用句法谱(从执行结构派生的信号,例如语句覆盖率、控制流分歧或依赖可达性)对可疑代码进行排名。这些信号因语义错误而崩溃,其中失败和通过的执行遵循相同的代码路径,仅在语义意图是否得到满足方面有所不同。最近基于 LLM 的方法引入了语义推理,但产生了随机的、不可验证的输出,这些输出无法在测试之间系统地交叉引用或区分根本原因和级联效应。我们提出了 SemLoc,一种基于结构化语义基础的故障定位框架。 SemLoc 将自由形式的 LLM 推理转换为封闭的中间表示,将每个推断的属性绑定到类型化的程序锚点,从而实现运行时检查和程序结构的归因。它执行检测程序来构建语义违规谱(一个受测试约束的矩阵),从中可以类似于基于覆盖的方法得出可疑度分数。反事实验证步骤进一步修剪过度近似的约束并隔离主要因果违规。我们在 SemFault-250 上评估 SemLoc,这是一个包含 250 个具有单一语义错误的 Python 程序的语料库。 SemLoc 优于五个基于覆盖、缩减和 LLM 的基线,实现了 42.8% 的 Top-1 准确度和 68% 的 Top-3 准确度,同时将可执行行的检查减少到 7.6%。反事实验证可额外提高 12% 的准确度,并识别主要因果语义约束。