Demystifying Faulty Code with LLM: Step-by-Step Reasoning for Explainable Fault Localization

2024年03月15日
  • 简介
    故障定位是一个关键的过程,涉及识别导致程序故障的具体程序元素。手动确定与故障相关的类、方法或语句等元素是费力且耗时的。为了克服这个挑战,开发了各种故障定位工具。这些工具通常生成一个可疑程序元素的排名列表。然而,仅凭这些信息是不足够的。一项先前的研究强调,自动化故障定位应该提供解释。在本研究中,我们研究了可解释的故障定位的逐步推理。我们探索了大型语言模型(LLM)在帮助开发人员推理代码方面的潜力。我们提出了FuseFL,它利用多种信息组合来增强LLM结果,这些信息包括基于频谱的故障定位结果、测试用例执行结果和代码说明(即给定代码的说明)。我们使用Refactory数据集中的有缺陷的代码进行了调查。首先,我们评估了自动故障定位的性能。我们的结果表明,在Top-1成功定位故障的数量上,与基线相比,成功定位故障的数量增加了30%以上。为了评估FuseFL生成的解释,我们创建了一个人类解释的数据集,其中提供了为什么特定代码行被认为是有缺陷的逐步推理,该数据集包括324个有缺陷的代码文件和600个有缺陷行的解释。此外,我们还进行了人类研究来评估解释。我们发现,在30个随机抽样的案例中,对于22个案例,FuseFL生成了正确的解释。
  • 图表
  • 解决问题
    自动故障定位的可解释性方法
  • 关键思路
    使用大型语言模型(LLM)结合谱分析、测试用例执行结果和代码描述,提出FuseFL方法来增强自动故障定位的可解释性,进而帮助开发人员理解代码故障的原因和位置。
  • 其它亮点
    实验使用Refactory数据集,结果表明FuseFL方法可以在Top-1中成功定位故障的数量上增加30%以上。同时,作者还创建了包含324个故障代码文件和600个故障行的人类解释数据集,并进行了人类研究以评估FuseFL的解释结果,发现在30个样本中,FuseFL生成了22个正确的解释。
  • 相关研究
    近期的相关研究包括:1. "A Survey on Automated Fault Localization Techniques";2. "An Empirical Comparison of Fault Localization Techniques Across Different Programming Languages";3. "Improving Spectrum-based Fault Localization with Weighted Faulty Executions"等。
PDF
原文
点赞 收藏 评论 分享到Link

沙发等你来抢

去评论