DeepDebug 是数据驱动的程序修复方法,其可以从 GitHub 代码库中挖掘的实际 Java 方法中学习检测和修复错误的方法。通过将错误修补构建为序列到序列的学习任务,它实现了两个步骤,即去噪预训练和有监督的微调。本方法显示出比以前的工作更好的异常检测能力,并且可以使用通用解析器进行语言无关的方法。
Apr, 2021
本文提出了一种名为元 Bug 检测的新方法,相比传统的静态分析工具和现有的基于学习的 Bug 检测工具,元 Bug 检测具有三个关键优势:泛型、自解释和样本效率。对该方法进行的全面评估表明,它能够有效地捕捉多种类型的 Bug,包括空指针解引用、数组下标越界、文件句柄泄漏以及并发程序中的数据竞争,并且优于 Facebook Infer 和 FICS 等基准方法。
Sep, 2022
利用基于注意力机制的双向循环神经网络方法提取软件故障报告中的句法和语义特征,并通过无监督学习进行调试人员分类,验证实验表明该方法相比传统的 BOW 模型和机器学习方法在排名前 10 的准确度上有所提升。
Jan, 2018
BugLab 是一种基于机器学习的、自监督学习为主的程序分析方法,通过两个模型共同训练,可以有效地发现和修复代码中的错误,提高了 2374 个真实缺陷数据集的检测和修复准确度,同时发现了 19 个以前未知的错误。
May, 2021
DeepDebug 是一种使用大型预训练变压器的自动调试方法,可通过训练反转的提交数据来生成人工合成缺陷,并通过将这些缺陷应用于功能测试,提供调试信息并改进模型的预训练,并在 QuixBugs 测试中取得良好成果。
大型语言模型能够通过代码生成和理解任务进行细粒度调整,而上下文学习技术在缺陷检测和修补中表现出色。本论文提出了代码对分类任务,其中模型接收有缺陷和无缺陷版本的代码对,从中识别出有缺陷的版本。实验证明,与判断代码片段中是否存在缺陷及其位置相比,大型语言模型更容易识别出有缺陷的代码对。
Nov, 2023
通过评估 14 个不同的嵌入模型并开发相应的漏洞定位模型,我们的研究表明,预训练策略显著影响嵌入质量,并且嵌入模型对数据的熟悉程度对漏洞定位模型的性能有着显著影响。当训练数据和测试数据来自不同的项目时,漏洞定位模型的性能会出现大幅波动。
Jun, 2024
通过深度学习加速芯片设计的调试过程,在硬件设计周期中生成出现故障的可能原因的解释,并突出显示潜在的故障源代码,实验表明其可实现对开源设计和不同类型注入故障的平均故障定位覆盖率为 82.5%。
Jan, 2024
本文提出了一种基于自然语言处理技术的方法,考虑 Bug 报告的结构化和非结构化属性,例如概述、描述、严重性、影响产品、平台和类别等信息,利用自定义数据转换器、深度神经网络和非泛化机器学习方法检索现有的相同 Bug 报告,并在大量数据来源的众多实验中展示了所提出的解决方案在召回率为 5 时的高检索准确性为 70%。
Dec, 2022
通过解释性工具、关注分析和交互矩阵分析,我们发现预训练语言模型对于潜在脆弱语句的关联性表现更好,但其对于脆弱路径的关联性较弱甚至没有,基于我们的分析,我们开发了两种突出模型输入中含有错误语义的注释方法,实验结果显示与传统微调相比,在大多数情况下我们的注释方法能够提高模型性能,并使模型与潜在脆弱语句的关联性提高高达 232%,这表明提供模型有关错误语义的信息是有帮助的并且激发了后续针对学习更复杂基于路径的错误语义的研究。