SRepair:基于大语言模型的函数级别APR技术

分类:大语言模型 | 热度:18 ℃

来自南方科技大学和快手的研究人员发布关于自动化程序修复(Automated Program Repair,简称APR)的研究,特别是基于大语言模型(Large Language Models,简称LLMs)的函数级别(function-level)APR技术。函数级别的APR意味着不仅仅是修复代码中的单个错误或一小段代码,而是修复整个函数中的所有错误。这项技术对于软件开发者来说非常有用,因为它可以自动生成潜在的修复补丁,减少开发者修复程序中缺陷的工作量。

主要功能:

  • 自动生成补丁:APR技术能够自动为发现的软件缺陷生成潜在的修复补丁。
  • 学习提升性能:通过学习过去的修复案例,这些技术能够提升修复的性能和准确性。

主要特点:

  1. 零样本学习(Zero-Shot Learning):即使没有提供特定任务的先前例子,LLMs也能够执行函数级别的APR。
  2. 少样本学习(Few-Shot Learning):通过提供少量的示例,可以进一步提升LLMs在特定APR任务上的性能。
  3. 辅助修复相关信息:利用错误报告、触发测试等辅助信息可以显著提高修复性能。

工作原理:

  • 大型语言模型:这些模型通过在大规模数据集上训练,学习了大量的编程语言模式和结构。
  • 生成和验证(Generate-and-Validate Paradigm):APR技术首先定位程序中的错误,然后生成补丁,并通过测试套件验证这些补丁的可行性。
  • 链式思考(Chain of Thought):一种提示技术,通过引导模型逐步分析问题并生成自然语言修复建议。

具体应用场景:

假设你是一名软件开发者,在你的程序中发现了一个函数没有按预期工作。使用APR技术,你可以上传有问题的函数代码到APR系统。系统将分析代码,利用其学习到的知识生成一个或多个潜在的修复方案。然后,它会运行这些方案通过你的测试套件,以验证它们是否能够修复错误。如果测试通过,你将得到一个或多个可行的补丁,你可以选择其中一个来应用到你的代码中。

论文中提出的SRepair技术是一个基于LLM的函数级别APR技术,它使用了一个双LLM框架,利用辅助修复相关信息来提高修复性能。SRepair在Defects4J数据集中成功修复了300个单函数错误,并且在没有昂贵的语句级故障定位信息的情况下,成功修复了32个多函数错误,这在APR技术中尚属首次。

简而言之,这项研究推动了自动化程序修复技术的发展,使得开发者可以更高效地修复软件中的缺陷,特别是那些涉及整个函数的复杂错误。

声明: 猎游人 每天为你带来最新的游戏和硬件打折情报,帮你精心挑选值得玩的游戏,让您的钱花的更值!本站信息大部分来自于网友爆料,如果您发现了优质的游戏或好的价格,不妨爆料给我们吧(谢绝任何商业爆料)! 点此爆料

0条评论

Hi,您需要填写昵称和邮箱!
姓名 (必填)
邮箱 (必填)
网站

暂时木有评论