论文
SCRBench:从语义等价扩展到代码改动原因与改动序列推理
SCRBench: Beyond Equivalence Checking for Semantic Change Reasoning in Code
摘要
了解代码更改如何影响程序语义是语言模型中代码推理的核心方面。通常通过询问两个程序在语义上是否等效来评估,但是是/否答案并不能揭示模型是否知道哪个代码更改导致了语义差异,或者哪个代码更改序列产生了修改后的程序。我们研究了两个直接提出这些问题的任务,诊断语义变化和重建代码变化序列,以及检测语义等价性。我们构建了 SCRBench,通过应用保留或改变程序语义的代码更改序列生成 67,658 个 Python 程序对,并在含4500个程序对的分层子集上评估五种语言模型。检测语义等价性会暴露出较弱的模型,其准确性随着变化的积累而下降,但最强的模型仍接近上限。诊断语义变化揭示了等价准确性隐藏的弱点:等价准确度为 94.71% 的模型只能诊断 54.44% 的语义变化。重建代码更改序列要困难得多:最好的模型只能为 39.27%的程序对重建准确的序列,并且当应用五次更改时,没有模型超过 1.11%。因此,高等价准确性高估了模型对代码更改的语义影响的推理能力。
