-
公开(公告)号:CN112463424B
公开(公告)日:2023-06-02
申请号:CN202011265976.3
申请日:2020-11-13
Applicant: 扬州大学
IPC: G06F11/07 , G06F8/70 , G06F18/214 , G06N20/00
Abstract: 本发明公开了一种基于图的端到端程序修复方法,属于软件调试领域,该方法包括:缺陷数据集构建;缺陷程序切片;缺陷代码图嵌入;构建和训练Graph2Seq模型;利用训练好的Graph2Seq模型生成修复补丁并验证补丁的正确性。本发明提出的方法使用图表征代码,可以充分挖掘代码缺陷语句及其上下文之间的语法、语义关联,更好地学习缺陷的特征,从而生成质量更高、可读性更强的修复补丁,达到自动修复程序缺陷的目的,能极大提升自动程序修复的效率。
-
公开(公告)号:CN113741886A
公开(公告)日:2021-12-03
申请号:CN202110879818.5
申请日:2021-08-02
Applicant: 扬州大学
IPC: G06F8/35 , G06F8/41 , G06F8/72 , G06F16/951 , G06K9/62
Abstract: 本发明公开了一种基于图的语句级程序修复方法及系统,属于软件调试领域。本发明首先提取缺陷代码及补丁、规范代码以构建训练及预训练的数据集;对数据集预处理并预训练编程语言模型;利用编程语言模型进行数据嵌入,构建并训练基于Graph‑to‑Sequence架构的翻译模型;使用训练完成的翻译模型生成缺陷语句的补丁。本发明使用融合源代码多种特征的代码图表征代码,结合了预训练模型学习代码规范并加快翻译模型训练收敛速度,可以优化缺陷语句的上下文表示,使翻译模型能够更好地学习缺陷语句与正确语句之间的语法语义关联信息,从而更好地表征缺陷修复的语义,生成遵循编程语言规范的高质量修复补丁以自动化地修复缺陷程序,能够极大降低缺陷修复的成本。
-
公开(公告)号:CN112463424A
公开(公告)日:2021-03-09
申请号:CN202011265976.3
申请日:2020-11-13
Applicant: 扬州大学
Abstract: 本发明公开了一种基于图的端到端程序修复方法,属于软件调试领域,该方法包括:缺陷数据集构建;缺陷程序切片;缺陷代码图嵌入;构建和训练Graph2Seq模型;利用训练好的Graph2Seq模型生成修复补丁并验证补丁的正确性。本发明提出的方法使用图表征代码,可以充分挖掘代码缺陷语句及其上下文之间的语法、语义关联,更好地学习缺陷的特征,从而生成质量更高、可读性更强的修复补丁,达到自动修复程序缺陷的目的,能极大提升自动程序修复的效率。
-
公开(公告)号:CN113741886B
公开(公告)日:2023-09-26
申请号:CN202110879818.5
申请日:2021-08-02
Applicant: 扬州大学
IPC: G06F8/35 , G06F8/41 , G06F8/72 , G06F16/951 , G06F18/214
Abstract: 本发明公开了一种基于图的语句级程序修复方法及系统,属于软件调试领域。本发明首先提取缺陷代码及补丁、规范代码以构建训练及预训练的数据集;对数据集预处理并预训练编程语言模型;利用编程语言模型进行数据嵌入,构建并训练基于Graph‑to‑Sequence架构的翻译模型;使用训练完成的翻译模型生成缺陷语句的补丁。本发明使用融合源代码多种特征的代码图表征代码,结合了预训练模型学习代码规范并加快翻译模型训练收敛速度,可以优化缺陷语句的上下文表示,使翻译模型能够更好地学习缺陷语句与正确语句之间的语法语义关联信息,从而更好地表征缺陷修复的语义,生成遵循编程语言规范的高质量修复补丁以自动化地修复缺陷程序,能够极大降低缺陷修复的成本。
-
公开(公告)号:CN114546828A
公开(公告)日:2022-05-27
申请号:CN202210049022.1
申请日:2022-01-17
Applicant: 扬州大学
IPC: G06F11/36 , G06F8/65 , G06F40/211 , G06F40/289 , G06F40/30 , G06N3/04 , G06N3/08
Abstract: 本发明公开了一种基于预训练模型的方法级程序修复系统及修复方法,包括构建训练数据集;对预训练模型GraphCodeBert进行训练得到训练好的GraphCodeBert模型;对基于Sequence‑to‑Sequence架构的翻译模型进行训练得到训练好的翻译模型;将新的存在缺陷的程序进行处理并输入至训练好的翻译模型中,输出通过测试用例的候选补丁序列,并将输出的候选补丁序列作为正确补丁。本发明使用了预训练模型GraphCodeBert,可以挖掘源代码中缺陷语句及其上下文之间的语法、语义和结构信息,能够更好地学习缺陷的特征,从而提高代码补丁的质量。
-
-
-
-