论文学习_Getafix: learning to fix bugs automatically

1. 引言

研究背景:现代生产代码库极其复杂并且不断更新。静态分析器可以帮助开发人员发现代码中的潜在问题(在本文的其余部分中称为错误),这对于在这些大型代码库中保持高代码质量是必要的。虽然通过静态分析尽早发现错误是有帮助的,但修复这些错误的问题在实践中仍然主要是手动任务,阻碍了静态分析工具的采用。

现存问题:大多数静态分析器都会查找常见错误类别的实例,例如潜在的空取消引用、流行 API 的错误使用或特定语言结构的误用。研究团队观察到,针对特定错误类别的修复通常彼此相似:它们有一个模式。也就是说,过去人类对同一错误类别的修复可能会提供有关如何修复该错误类别的未来实例的见解。鉴于这一观察,是否可以通过学习过去的修复来自动修复发现的错误?

研究内容:论文通过学习过去的修复来解决自动修复常见错误类别实例的问题。论文假设两个输入:(1)修复特定类型错误的一组更改,例如来自代码库的版本历史记录。这些变化可以作为训练数据来学习修复模式。(2) 一段带有我们要修复的静态分析警告的代码。仅给出这两个输入,问题是预测解决方案,以类似于或等于人类开发人员所做的方式解决静态分析警告。通过自动生成修复程序并仅将是否应用修复程序的最终决定留给人类,可以大大减少解决静态分析器指出的错误所花费的总体工作量。

论文专注于那些具有不平凡但重复性修复的错误。一方面,有些错误类别通常意味着特定的修复。例如,对于建议某个字段为最终结果的警告,实施自动修复建议非常简单。这种自动修复可以由该规则的作者在静态分析器中定义,而不需要知道应用该规则的特定上下文;事实上,有些容易出错规则带有自动修复功能。另一方面,一些错误需要复杂的、特定于应用程序的修复,例如用户进行一系列特定交互后 UI 选项卡不显示的问题。在这里,论文的目标是介于这两个极端之间的错误类别,其中找到修复程序并非易事,但典型的修复程序属于一组重复出现的修复模式。对于此类错误类别,通常存在不止一种方法来解决问题,并且解决错误类别的特定实例的正确方法取决于上下文,例如,静态分析警告周围的代码。

作为本工作中针对的错误类别的一个示例,请考虑 NullPointerExceptions 仍然是 Java 和其他语言中最普遍的错误之一。如果静态分析器警告潜在的空取消引用,开发人员可以通过各种方式解决该问题。上图显示了空取消引用错误修复的三个匿名示例,这些示例分别向现有 if 条件添加了一个连接、用三元运算替换了调用以及添加了提前返回。虽然所有这些修复都引入了某种空检查,但确切的修复在很大程度上取决于现有的代码。除了这些示例之外,还有更多方法可以修复空取消引用错误,例如,通过添加新的 if 语句或以分离方式扩展现有的 if 条件。学习所有这些修复模式并决定将哪一种模式应用于给定的错误代码是一个不小的问题。论文的工作旨在自动修复大规模工业软件开发中的错误。 这种设置会带来一些有趣的挑战:

  • 为了减少修复错误所花费的人力时间,该方法可能只提出少量潜在的修复方案,最好只提出一个修复方案。
  • 为了使此修复为开发人员所接受,建议的修复应该类似于人类:与人类开发人员将实现的修复非常相似或完全相同。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/374554.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

51单片机STC89C52RC——16.1 五线四相步进电机

目录 目的/效果 一,STC单片机模块 二,步进电机 2.2 什么是步进电机? 2.2.1 步进电机驱动板 静态参数 动态参数 2.2.2 五线四相 单相激励步进 双相激励步进 混合激励驱动 2.3 细分驱动 2.4 通过数字信号控制旋转位置和转速。 2…

第一次参加数学建模竞赛新手小白备赛经验贴

2024年暑假已经来临,下半年的数学建模竞赛非常多,许多同学可能是第一次参赛,对于如何准备感到迷茫和无从下手。在这种情况下,我们将分享一些备赛的小技巧,帮助大家在这个暑假更好的入门,即便是零基础的小白…

resistronic焊接机RMF10 RE120安装SSK10说明操作

resistronic焊接机RMF10 RE120安装SSK10说明操作

新零售起盘案例「半藏酱酒」布局路径,半藏总院分院招商模式

在当前白酒市场中,一款名为半藏酒的酒品以其独特的新零售模式引起了广泛关注。这种模式不同于传统销售方式,通过多种创新玩法,实现了销售与品牌推广的双重目标,让我们一起来看看细节。 半藏酒的分级代理制度将代理商分为两个层级&…

如何录制屏幕视频?4款软件,轻松录屏

在数字化飞速发展的时代,如何录制屏幕视频已经成为我们工作、学习和娱乐中不可省略的一个重要问题。无论是制作教学教程还是录制游戏视频等,屏幕视频录制都为我们提供了极大的便利。今天,就让我们一起探索如何录制屏幕视频的精彩方式&#xf…

Go 1.19.4 函数-Day 08

1. 函数概念和调用原理 1.1 基本介绍 函数是基本的代码块,用于执行一个任务。 Go 语言最少有个 main() 函数。 你可以通过函数来划分不同功能,逻辑上每个函数执行的是指定的任务。 函数声明告诉了编译器函数的名称,返回类型,和参…

单片机中有FLASH为啥还需要EEROM?

在开始前刚好我有一些资料,是我根据网友给的问题精心整理了一份「单片机的资料从专业入门到高级教程」, 点个关注在评论区回复“888”之后私信回复“888”,全部无偿共享给大家!!! 一是EEPROM操作简单&…

Java版Flink使用指南——将消息写入到RabbitMQ的队列中

大纲 新建工程新增依赖 编码自动产生数据写入RabbitMQ 测试工程代码 在 《Java版Flink使用指南——从RabbitMQ中队列中接入消息流》一文中,我们介绍了如何使用Java在Flink中读取RabbitMQ中的数据,并将其写入日志中。本文将通过代码产生一些数据&#xf…

未解之谜----macOS版fiddler everywhere 如何将当前会话保存成一个txt文件查看

如图,这是win版的保存方式,mac上面根本没有这个按钮,找的很崩溃

nx软件许可优化解决方案

Nx软件介绍 来自SiemensPLM 的 NX使企业能够通过新一代数字化产品开发系统实现向产品全生命周期管理转型的目标。 NX 包含了企业中应用最广泛的集成应用套件,用于产品设计、工程和制造全范围的开发过程。 如今制造业所面临的挑战是,通过产品开发的技术创…

【数据结构】排序——快速排序

前言 本篇博客我们继续介绍一种排序——快速排序,让我们看看快速排序是怎么实现的 💓 个人主页:小张同学zkf ⏩ 文章专栏:数据结构 若有问题 评论区见📝 🎉欢迎大家点赞👍收藏⭐文章 ​ 目录 …

LinK3D: Linear Keypoints Representation for 3D LiDAR Point Cloud【翻译与解读】

LinK3D: Linear Keypoints Representation for 3D LiDAR Point Cloud 摘要 特征提取和匹配是许多机器人视觉任务的基本组成部分,如 2D 或 3D 目标检测、识别和配准。2D 特征提取和匹配已取得巨大成功。然而,在 3D 领域,当前方法由于描述性差…

Python-找客户软件

软件功能 请求代码: 填充表格: 可以search全国各个区县的所有企业信息,过滤手机号、查看是否续存/在业状态。方便找客户。 支持定-制-其他引-留-阮*件(XHSS,DYY,KS,Bi-li*Bi-li) V*…

HTML 标签简写和全称及其对应的中文说明和实例

<!DOCTYPE html> <html lang"zh-CN"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>HTML 标签简写及全称</title><style>…

【web前端HTML+CSS+JS】--- CSS学习笔记02

一、CSS&#xff08;层叠样式表&#xff09;介绍 1.优势 2.定义解释 如果有多个选择器共同作用的话&#xff0c;只有优先级最高那层样式决定最终的效果 二、无语义化标签 div和span&#xff1a;只起到描述的作用&#xff0c;不带任何样式 三、标签选择器 1.标签/元素选择器…

2.4G芯片开发的遥控玩具方案介绍 东莞酷得

玩具从早期的简单功能&#xff0c;到现如今各种各样的智能操作&#xff0c;发展的速度也是飞速的。随着玩具市场的逐步完善与推进&#xff0c;中国的智能玩具市场也出现了很多远程遥控玩具。遥控玩具也是从最初的有线到现在的无线&#xff0c;从地上跑的到天上飞的&#xff0c;…

N6 word2vec文本分类

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊# 前言 前言 上周学习了训练word2vec模型&#xff0c;这周进行相关实战 1. 导入所需库和设备配置 import torch import torch.nn as nn import torchvision …

3,区块链加密(react+区块链实战)

3&#xff0c;区块链加密&#xff08;react区块链实战&#xff09; 3.1 哈希3.2 pow-pos-dpos3.3非对称加密&#xff08;1&#xff09;对称加密AES&#xff08;2&#xff09;非对称加密RSA 3.4 拜占庭将军3.5 P2P网络3.6 区块链 3.1 哈希 密码学&#xff0c;区块链的技术名词 …

四川赤橙宏海商务信息咨询有限公司抖音电商服务靠谱吗?

在数字化浪潮席卷全球的今天&#xff0c;电商行业蓬勃发展&#xff0c;各种新兴电商平台层出不穷。其中&#xff0c;抖音电商以其独特的社交属性和庞大的用户基础&#xff0c;迅速崛起为行业新星。四川赤橙宏海商务信息咨询有限公司&#xff0c;作为专注于抖音电商服务的佼佼者…

[Linux]五种IO模型(图文讲解+故事讲解)

目录 一、对IO的理解&#xff1a;等拷贝 等 拷贝 二、五种IO模型&#xff08;解释其概念&#xff09; 1.阻塞IO 2.非阻塞IO 3.信号驱动IO 4.IO多路复用 5.异步IO IO速度比较 三、一个故事让你了解五种IO模型 四、同步VS异步 阻塞VS非阻塞 同步VS异步 阻塞VS非阻…