期刊文献+
共找到15篇文章
< 1 >
每页显示 20 50 100
程序自动修复:关键问题及技术 被引量:16
1
作者 李斌 贺也平 马恒太 《软件学报》 EI CSCD 北大核心 2019年第2期244-265,共22页
程序自动修复技术能够有效地降低软件维护成本,是近年来学术研究的热点问题.待修复程序规约的刻画,对自动修复过程具有至关重要的作用.从规约的角度对程序自动修复问题和技术进行了分析梳理.从待修复程序是否具有完整的程序规约,将现有... 程序自动修复技术能够有效地降低软件维护成本,是近年来学术研究的热点问题.待修复程序规约的刻画,对自动修复过程具有至关重要的作用.从规约的角度对程序自动修复问题和技术进行了分析梳理.从待修复程序是否具有完整的程序规约,将现有修复问题分为不完全规约、完全规约和半完全规约这3大类待修复问题.以3类抽象问题为线索,梳理了不同前提假设下修复技术面临的核心问题、问题之间的联系和技术体系中的逻辑关系.分析了不完全规约程序修复问题中高精度补丁生成、规约补全和补丁择优等问题,梳理了完全规约程序修复问题中内存泄漏、资源泄露、并发错误中的数据竞争、原子性违背、顺序违背和死锁,配置错误以及特定性能错误等具体问题及研究进展,整理了半完全规约程序修复问题中多种形式的修复具体问题及研究进展.最后分析了程序自动修复面临的机遇和挑战. 展开更多
关键词 程序自动修复 静态分析 程序规约 补丁生成 测试集
在线阅读 下载PDF
面向程序自动修复的缺陷分类方法研究 被引量:2
2
作者 易昕 毛晓光 纪涛 《计算机应用研究》 CSCD 北大核心 2016年第6期1748-1751,1757,共5页
程序自动修复是近年来软件工程的研究热点,但其发展难以满足工业应用的要求。分析了自动修复技术的局限性,引入了缺陷分类的思想,并与正交缺陷分类方法相结合,提出了面向软件自动修复的缺陷分类方法(APRDC)。基于APRDC提出了自动修复技... 程序自动修复是近年来软件工程的研究热点,但其发展难以满足工业应用的要求。分析了自动修复技术的局限性,引入了缺陷分类的思想,并与正交缺陷分类方法相结合,提出了面向软件自动修复的缺陷分类方法(APRDC)。基于APRDC提出了自动修复技术集成的思想。实验中将基于APRDC与基于随机的自动修复技术集成工具作了比较。基于APRDC的方法提高了成功率并缩短了修复时间。实验结果表明了APRDC方法的有效性。 展开更多
关键词 软件缺陷 程序自动修复 缺陷分类 技术集成
在线阅读 下载PDF
一种基于StackOverflow分析的程序自动修复方法 被引量:1
3
作者 刘旭亮 钟浩 《计算机工程》 CAS CSCD 北大核心 2018年第10期95-100,共6页
现有程序缺陷修复方法缺乏充足的修复模板,多数只能修复小部分程序缺陷。为此,提出一种从StackOverflow中获取示例代码,并从示例代码中挖掘出修复样品的方法。从程序员日常开发讨论中获取与修复有关的代码对,并从中生成修复模板,该模板... 现有程序缺陷修复方法缺乏充足的修复模板,多数只能修复小部分程序缺陷。为此,提出一种从StackOverflow中获取示例代码,并从示例代码中挖掘出修复样品的方法。从程序员日常开发讨论中获取与修复有关的代码对,并从中生成修复模板,该模板丰富了自动修复工具已有的操作,能够修复更多缺陷。对Defects4J数据集进行实验验证,结果表明,该方法能够修复23个程序缺陷,优于GenProg和Nopol等工具。 展开更多
关键词 程序自动修复 真实缺陷修复 修复模板 示例代码 修复样品
在线阅读 下载PDF
基于变异和约束求解的程序缺陷自动修复方法
4
作者 董兰 洪玫 伍佳 《计算机工程与设计》 北大核心 2024年第1期88-94,共7页
为能正确高效地生成修复补丁,针对Java程序中出现频率较高的条件语句相关缺陷修复问题,将启发式搜索方法与语义约束求解方法相结合,提出一个有针对性、更高效的解决方案。针对条件语句缺失错误,采用基于组件的程序合成技术,合成满足约... 为能正确高效地生成修复补丁,针对Java程序中出现频率较高的条件语句相关缺陷修复问题,将启发式搜索方法与语义约束求解方法相结合,提出一个有针对性、更高效的解决方案。针对条件语句缺失错误,采用基于组件的程序合成技术,合成满足约束的候选条件语句;针对条件语句逻辑表达式错误,采用变异技术,生成候选逻辑表达式;针对条件语句逻辑表达式错误中,不能用变异技术修复的缺陷,使用基于组件的约束求解方法生成候选补丁。实验结果表明,所提方法有更高的补丁召回率和准确率。 展开更多
关键词 程序自动修复 变异分析 约束求解 程序合成 条件语句缺陷 补丁生成 软件调试
在线阅读 下载PDF
跟踪机制引导的C程序内存错误自动修复 被引量:1
5
作者 董玉坤 位欣欣 +1 位作者 孙玉雪 唐道龙 《计算机工程与应用》 CSCD 北大核心 2022年第19期76-87,共12页
C语言执行效率高,使用范围广泛,然而存在的安全问题也日益突出。内存错误是C程序中常见的缺陷,严重时将导致系统崩溃。传统的人工修复内存错误耗费大量人力物力,并可能在修复过程中引入新的错误。针对这个问题,提出了一种基于跟踪机制... C语言执行效率高,使用范围广泛,然而存在的安全问题也日益突出。内存错误是C程序中常见的缺陷,严重时将导致系统崩溃。传统的人工修复内存错误耗费大量人力物力,并可能在修复过程中引入新的错误。针对这个问题,提出了一种基于跟踪机制的程序自动修复方法。构建包含程序文件中变量作用分布的作用域树;提出基于全局指针的跟踪机制,通过插入全局指针跟踪发生错误的分配内存在程序中的状态;基于全局指针自动生成补丁,利用作用域树定位缺陷修复位置从而来安全地修复内存错误。基于上述过程,实现了原型工具DTSFix,并在开源程序中对其进行了评估。实验结果表明,DTSFix能够有效检测并修复程序中的真实缺陷而且不产生副作用。 展开更多
关键词 跟踪机制 程序自动修复 内存错误 作用域树
在线阅读 下载PDF
神经程序修复领域数据泄露问题的实证研究 被引量:1
6
作者 李卿源 钟文康 +2 位作者 李传艺 葛季栋 骆斌 《软件学报》 EI CSCD 北大核心 2024年第7期3071-3092,共22页
修复软件缺陷是软件工程领域一个无法回避的重要问题,而程序自动修复技术则旨在自动、准确且高效地修复存在缺陷的程序,以缓解软件缺陷所带来的问题.近年来,随着深度学习的快速发展,程序自动修复领域兴起了一种使用深度神经网络去自动... 修复软件缺陷是软件工程领域一个无法回避的重要问题,而程序自动修复技术则旨在自动、准确且高效地修复存在缺陷的程序,以缓解软件缺陷所带来的问题.近年来,随着深度学习的快速发展,程序自动修复领域兴起了一种使用深度神经网络去自动捕捉缺陷程序及其补丁之间关系的方法,被称为神经程序修复.从在基准测试上被正确修复的缺陷的数量上看,神经程序修复工具的修复性能已经显著超过了非学习的程序自动修复工具.然而,近期有研究发现:神经程序修复系统性能的提升可能得益于测试数据在训练数据中存在,即数据泄露.受此启发,为了进一步探究神经程序修复系统数据泄露的原因及影响,更公平地评估现有的系统:(1)对现有神经程序修复系统进行了系统的分类和总结,根据分类结果定义了神经程序修复系统的数据泄露,并为每个类别的系统设计了数据泄露的检测方法;(2)依照上一步骤中的数据泄露检测方法对现有模型展开了大规模检测,并探究了数据泄露对模型真实性能与评估性能间差异的影响以及对模型本身的影响;(3)分析现有神经程序修复系统数据集的收集和过滤策略,加以改进和补充,在现有流行的数据集上,基于改进后的策略构建了一个纯净的大规模程序修复训练数据集,并验证了该数据集避免数据泄露的有效性.由实验结果发现:调研的10个神经程序修复系统在基准测试集上均出现了数据泄露,其中,神经程序修复系统RewardRepair的数据泄露问题较为严重,在基准测试集Defects4J(v1.2.0)上的数据泄露达24处,泄露比例高达53.33%.此外,数据泄露对神经程序修复系统的鲁棒性也造成了影响,调研的5个神经程序修复系统均因数据泄露产生了鲁棒性降低的问题.由此可见,数据泄露是一个十分常见的问题,且会使神经程序修复系统得到不公平的性能评估结果以及影响系统在基准测试集上的鲁棒性.研究人员在训练神经程序修复模型时,应尽可能避免出现数据泄露,且要考虑数据泄露问题对神经程序修复系统性能评估产生的影响,尽可能更公平地评估系统. 展开更多
关键词 程序自动修复 神经程序修复 深度学习 数据泄露 程序修复数据集
在线阅读 下载PDF
自动程序修复方法研究述评 被引量:19
7
作者 王赞 郜健 +2 位作者 陈翔 傅浩杰 樊向宇 《计算机学报》 EI CSCD 北大核心 2018年第3期588-610,共23页
当开发人员面对大量缺陷报告无从入手的时候,自动程序修复(Automatic Program Repair,APR)可以成功完成其中一些缺陷的自动修复,从而有效减少开发人员的程序调试时间.因此自动程序修复逐渐成为当前软件维护领域中的一个研究热点并取得... 当开发人员面对大量缺陷报告无从入手的时候,自动程序修复(Automatic Program Repair,APR)可以成功完成其中一些缺陷的自动修复,从而有效减少开发人员的程序调试时间.因此自动程序修复逐渐成为当前软件维护领域中的一个研究热点并取得了一定的研究进展.该文通过对权威期刊和会议进行检索,搜集了100余篇相关论文,从现有自动程序修复的研究历程、该方法中的重要问题以及国内外相关研究团队及成果等几个方面对该领域进行了系统的总结.其中基于测试用例的自动程序修复方法是当前一种主流方法,其通过配套测试用例集来评估生成补丁的质量.论文将这类方法细分为三个阶段:软件缺陷定位阶段、生成补丁阶段和补丁评估阶段.其中软件缺陷定位阶段是自动程序修复的基础,其目标是尽可能精确识别出可能含有缺陷的语句.生成补丁阶段一般通过预先定义的修改操作对缺陷语句进行修改,代码修改操作在设定时可以考虑修复程序的自身代码、开源项目的代码或者问答网站中的知识等.补丁评价阶段则对生成的候选补丁进行评估,直到找到一个补丁可以使得所有测试用例均执行通过,并随后借助开发人员的人工分析进行最终确认.在上述三个阶段中,生成补丁阶段是自动程序修复方法的核心,论文将已有补丁生成方法细分为三类:基于搜索的方法、基于语义的方法和其他类型方法.其中基于搜索的方法在搜索空间内通过搜索生成补丁,并借助配套测试用例集对该补丁进行验证,经典的方法包括GenProg、PAR、AE、RSrepair等;基于语义的方法则借助语义信息来合成补丁,主要基于符号执行和约束求解,经典的方法包括SemFix、DirectFix、Angelix、Nopol等;而不属于上述两类方法的研究工作则被归于其他类型的方法,经典的工作包括基于问答网站和开源项目托管网站挖掘来生成补丁.而补丁评价阶段是自动程序修复方法研究的争议焦点,近两年研究人员更多关注正确补丁在搜索空间中的分布和补丁的正确性.特别是针对减少补丁的验证花销和提高补丁质量的问题做出了进一步的探索.随后论文针对特定领域的自动程序修复方法进行了总结,包括并发缺陷、数据库缺陷、空指针缺陷、数据结构缺陷、内存泄漏缺陷等的自动修复方法.其中重点分析了针对并发缺陷的自动修复方法,将已有研究工作分为数据竞争的自动修复、原子性违背的自动修复、顺序违背的自动修复和死锁的自动修复.然后论文总结了自动程序修复方法在有效性评估中经常使用的缺陷库,不难看出ManyBugs、IntroClass、Simens程序集和Defect4J是目前使用最多的缺陷库.为了方便研究人员更好的与自己提出的修复方法进行比较,论文搜集了目前已经共享的自动程序修复工具并给出了相关参考文献和具体下载地址.接着论文对国内外在程序自动修复领域比较活跃的研究小组进行了总结,并对每个研究组的主要贡献进行了总结,以方便国内外研究人员对他们的后续研究工作进行及时跟踪.最后总结全文,并依次从缺陷定位、补丁生成和评估、缺陷数量和类型、特定领域的缺陷修复以及缺陷修复在工业界中的应用这五个维度对未来的研究工作进行了展望. 展开更多
关键词 自动程序修复 软件缺陷定位 基于搜索的软件工程 约束求解 并发程序缺陷修复
在线阅读 下载PDF
程序缺陷自动修复研究进展及关键问题 被引量:1
8
作者 曹鹤玲 刘昱 +1 位作者 赵晨阳 王玉华 《小型微型计算机系统》 CSCD 北大核心 2022年第3期644-654,共11页
程序缺陷自动修复是指针对程序中存在的缺陷,自动生成相应的程序补丁,进而使程序恢复正常运行.首先,根据补丁生成方式的不同,将程序缺陷自动修复方法划分为4类,分别为基于搜索的、基于语义的、基于机器学习的以及基于错误报告驱动的程... 程序缺陷自动修复是指针对程序中存在的缺陷,自动生成相应的程序补丁,进而使程序恢复正常运行.首先,根据补丁生成方式的不同,将程序缺陷自动修复方法划分为4类,分别为基于搜索的、基于语义的、基于机器学习的以及基于错误报告驱动的程序缺陷自动修复方法.基于搜索的程序缺陷自动修复方法运用启发式算法在搜索空间内通过搜索生成程序补丁;基于语义的程序缺陷自动修复方法将修复约束作为合成程序补丁的规约,最后通过约束求解器生成程序补丁;基于机器学习的程序缺陷自动修复方法使用数据集训练并生成修复模型,通过修复模型生成程序补丁;基于错误报告驱动的程序缺陷自动修复方法通过利用程序执行以及用户反馈的错误信息生成程序补丁.本文对以上4类程序缺陷自动修复方法进行了详细阐述;其次,总结了检验程序缺陷自动修复方法及工具修复效果所用到的缺陷库;最后,分析了程序缺陷自动修复在工业界的应用现状并总结了该领域面临的关键问题及未来研究的方向. 展开更多
关键词 程序缺陷自动修复 约束求解 机器学习 错误报告 缺陷库
在线阅读 下载PDF
基于变型空间代数的自动程序修复方法 被引量:2
9
作者 徐勇 毋国庆 +1 位作者 袁梦霆 黄勃 《电子学报》 EI CAS CSCD 北大核心 2017年第10期2498-2505,共8页
基于代码枚举的自动程序修复方法借助变异算子对程序中错误语句进行变更操作,从而得到程序修复解.由于缺乏文法制导及变异算子数量的有限性,该方法的有效性有待进一步提高.本文提出一种基于变型空间代数的自动程序修复方法,即将回归测... 基于代码枚举的自动程序修复方法借助变异算子对程序中错误语句进行变更操作,从而得到程序修复解.由于缺乏文法制导及变异算子数量的有限性,该方法的有效性有待进一步提高.本文提出一种基于变型空间代数的自动程序修复方法,即将回归测试用例集视为训练实例,通过归纳学习得到程序中出错语句的修复解.具体而言,该方法包括以下特征:(1)从文法到变型空间的自动构造生成方法;(2)根据变型空间树中变型空间的不同类别,分别给出一致性定义;(3)结合静态及类型检查的变型空间代数运算.实验结果表明:与基于代码枚举及基于搜索的修复方法相比,本文提出的方法在修复成功率方面更具优势;与此同时,方法中的静态及类型检查机制可以有效地削减假设空间的规模. 展开更多
关键词 自动程序修复 变型空间代数 归纳学习 上下文无关文法 生成树
在线阅读 下载PDF
自动程序修复中的安全隐患场景及解决方案 被引量:1
10
作者 黄昱铭 马建峰 +2 位作者 刘志全 魏凯敏 冯丙文 《西安电子科技大学学报》 EI CAS CSCD 北大核心 2019年第6期147-154,共8页
为提高自动程序修复方法的修复质量,指出在自动程序修复方法修复程序缺陷过程中存在的两种安全隐患场景,即脏补丁源场景和脏测试集场景,并为两种安全隐患场景分别提出相应的解决方案,即补丁校验方案和测试集校验方案。实验结果表明,所... 为提高自动程序修复方法的修复质量,指出在自动程序修复方法修复程序缺陷过程中存在的两种安全隐患场景,即脏补丁源场景和脏测试集场景,并为两种安全隐患场景分别提出相应的解决方案,即补丁校验方案和测试集校验方案。实验结果表明,所提出的补丁校验方案能够促使自动程序修复方法获取安全性更高的补丁,所提出的测试集校验方案能够准确地定位测试集中的脏测试用例,误报率为7.20%。 展开更多
关键词 自动程序修复 静态分析 测试集 软件安全
在线阅读 下载PDF
一种基于规则的自动程序修复方法
11
作者 黄昱铭 马建峰 +2 位作者 刘志全 冯丙文 魏凯敏 《西安电子科技大学学报》 EI CAS CSCD 北大核心 2020年第4期117-123,共7页
为解决基于测试集自动程序修复方法修复缺陷正确率低的问题,提出一种基于规则的自动程序修复方法——RuleFix。该方法首先通过挖掘代码中的隐式编程规则定位缺陷位置,然后根据隐式编程规则选取合适的补丁,最后采用程序合成工具对补丁进... 为解决基于测试集自动程序修复方法修复缺陷正确率低的问题,提出一种基于规则的自动程序修复方法——RuleFix。该方法首先通过挖掘代码中的隐式编程规则定位缺陷位置,然后根据隐式编程规则选取合适的补丁,最后采用程序合成工具对补丁进行校验以保证修复结果的正确性。此外,为解决现有规则挖掘算法无法有效挖掘低频规则的问题,提出一种低频规则挖掘算法,根据已有规则推演生成新的规则,以提升规则挖掘的能力。基于所提方法实现了原型工具,并与现有的自动程序修复方法进行对比。实验结果表明,与现有的GenProg和PAR方法相比,所提方法有明显更高的修复率和正确率。 展开更多
关键词 自动程序修复 基于规则 静态分析 测试集
在线阅读 下载PDF
基于开源代码大语言模型提示的学生代码修复 被引量:4
12
作者 陈郅睿 陆雪松 《华东师范大学学报(自然科学版)》 CAS CSCD 北大核心 2024年第5期93-103,共11页
随着机器学习技术的进步,旨在学习人类修复错误代码模式的自动程序修复技术可以辅助学生修复错误代码,提高学生的自主学习效率.在过去,自动程序修复模型或是基于人工设计的符号规则,或是基于数据驱动的方法.随着具有强大自然语言理解能... 随着机器学习技术的进步,旨在学习人类修复错误代码模式的自动程序修复技术可以辅助学生修复错误代码,提高学生的自主学习效率.在过去,自动程序修复模型或是基于人工设计的符号规则,或是基于数据驱动的方法.随着具有强大自然语言理解能力和代码生成能力的大语言模型的出现,一些研究尝试使用提示工程进行自动程序修复.然而,现有研究主要评估诸如Codex和GPT-4这样的商用模型,一方面大规模使用的成本较高,另一方面在教育场景下存在数据隐私隐患.此外,这些研究大多使用简单的提示形式来评估模型修复程序的能力,且缺乏对结果的深入分析.为弥补上述工作的不足,通过提示工程评估了两个代表性的开源代码大语言模型,测试了不同的提示方法,例如思维链和少样本学习,并对结果进行了深入分析,最后提出了一些将大语言模型和编程教育场景结合的建议. 展开更多
关键词 自动程序修复 大语言模型 提示工程
在线阅读 下载PDF
基于CodeBERT和Stacking集成学习的补丁正确性验证方法
13
作者 韩威 姜淑娟 周伟 《计算机科学》 北大核心 2025年第1期250-258,共9页
近年来,自动程序修复已成为软件工程领域的重要研究课题。然而,现有的自动修复技术大多是基于补丁生成和测试的,在补丁验证环节时间成本很高。此外,由于测试套件的不完备,许多候选补丁虽然能通过测试,但实际上并不正确,从而导致补丁过... 近年来,自动程序修复已成为软件工程领域的重要研究课题。然而,现有的自动修复技术大多是基于补丁生成和测试的,在补丁验证环节时间成本很高。此外,由于测试套件的不完备,许多候选补丁虽然能通过测试,但实际上并不正确,从而导致补丁过拟合。为提高补丁验证的效率并缓解补丁过拟合的问题,提出了一种静态的补丁验证方法。该方法首先使用大型预训练模型CodeBERT自动提取缺陷代码片段和补丁代码片段的语义特征,然后使用历史缺陷修复补丁数据训练Stacking集成学习模型,训练之后的模型可以对新的缺陷修复补丁进行有效验证。在Defects4J缺陷数据集相关的1 000个补丁数据上对所提方法的验证能力进行评估。实验结果表明,该方法可以有效地验证补丁的正确性,从而提高补丁验证的效率。 展开更多
关键词 自动程序修复 补丁验证 预训练模型 集成学习 Defects4J缺陷数据集
在线阅读 下载PDF
结合Doc2Vec和BERT嵌入技术的补丁验证方法 被引量:5
14
作者 黄颖 姜淑娟 蒋婷婷 《计算机科学》 CSCD 北大核心 2022年第11期83-89,共7页
自动程序修复是近年来的研究热点并取得了一定的进展。现有的自动程序修复方法大多利用测试套件来验证补丁正确性。然而,使用测试套件验证自动程序修复方法生成的大量候选补丁不仅会造成巨大的开销,不完美的测试套件还会导致补丁的过拟... 自动程序修复是近年来的研究热点并取得了一定的进展。现有的自动程序修复方法大多利用测试套件来验证补丁正确性。然而,使用测试套件验证自动程序修复方法生成的大量候选补丁不仅会造成巨大的开销,不完美的测试套件还会导致补丁的过拟合问题,因此如何提高补丁验证效率、有效验证补丁正确性成为亟待解决的问题。为了降低补丁验证开销并提高补丁正确率,提出了结合两种嵌入技术验证补丁正确性的方法。该方法首先利用Doc2Vec计算补丁与错误代码的相似性,然后使用一个基于BERT模型的分类器过滤通过相似性筛选出的补丁中的错误补丁。为了验证所提方法的有效性,基于5个开源的Java缺陷库进行实验,结果表明该方法能够有效地验证补丁的正确性并提高验证效率。 展开更多
关键词 自动程序修复 补丁验证 代码相似性 嵌入技术
在线阅读 下载PDF
融合句嵌入模型和代码特征的补丁验证方法
15
作者 蒋婷婷 姜淑娟 韩威 《电子学报》 EI CAS CSCD 北大核心 2023年第12期3450-3456,共7页
补丁验证常用运行测试套件的方法来验证补丁正确性,然而自动修复技术生成的补丁往往数量巨大,而将每个补丁依次通过测试套件则会产生难以承受的开销.针对该问题,本文提出一个由句嵌入模型InferSent和支持向量机分类器组成的静态补丁验... 补丁验证常用运行测试套件的方法来验证补丁正确性,然而自动修复技术生成的补丁往往数量巨大,而将每个补丁依次通过测试套件则会产生难以承受的开销.针对该问题,本文提出一个由句嵌入模型InferSent和支持向量机分类器组成的静态补丁验证方法.使用InferSent提取代码静态特征并通过支持向量机分类器来预测补丁正确性.该方法更加关注代码的静态特征信息,通过对特征的提取分析,无需运行测试套件即可有效地预测自动修复工具生成的补丁的正确性.本文在多个自动修复工具生成的补丁集合上进行了验证.实验结果表明,在修复工具生成的补丁集合上,本文提出的静态补丁验证方法对补丁预测的F1值达到71.89%,相比其他两种最新静态补丁验证方法分别提高11.64%和6.43%,并在五项评价指标上均优于对比模型.表明该方法可以在不运行测试套件的情况下正确预测补丁,且具有良好的泛化能力. 展开更多
关键词 程序自动修复 补丁验证 代码静态特征 句嵌入技术 支持向量机 代码相似性
在线阅读 下载PDF
上一页 1 下一页 到第
使用帮助 返回顶部