论文笔记——An Empirical Study of Supplementary Bug Fixes

2023-11-02 08:32

本文主要是介绍论文笔记——An Empirical Study of Supplementary Bug Fixes,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

An Empirical Study of Supplementary Bug Fixes

这篇文章关于patch的不完整所做的一个study,整理出来了认为对自己比较关键的地方,以供以后参考。
文章思路:
abstract、introduction、介绍相关工作、描述study 目标和分析方法、呈现empirical(经验的)结果、讨论有效性的威胁、总结study。

abstract

1、omission的errors比commission的对于开发人员来说更难detect到
2、There have been very few studies on why errors of omission occur in practice and how such errors could be prevented.
现在有很少的工作针对为什么会出现遗漏的错误和这些错误如何被阻止。
3、本文针对三个软件(Eclipse JDT core, Eclipse SWT, and Mozilla)的研究表明已经修复的漏洞存在着大量的(a significant portion of,22%-33%)有着多次的修复。
4、手工分析(manual inspection) 表明出现遗漏的错误的原因是多种多样的:
missed porting changes, incorrect handling of conditional statements,
or incomplete refactorings(错过了移植更改,错误处理条件语句,
或不完整的重构)。
5、列出来发现了什么:比如二次补丁和初始补丁一般距离很远,或者没有直接依赖关系,比如调用,访问什么的。

introduction

1、先介绍了之前的工作如何降低或者阻止遗漏的错误的发生,引用了很多篇文章,比如:
(1)code clones of an existing bug fix to reduce potential missed updates
(2)use the dependency structure of a change set to suggest where additional changes need to be made
(3)predict additional change locations based on historical co-change patterns derived from version histories
(4)predict additional change locations based on cochange patterns and the dependency-graph of a change set in conjunction
作者自己说之前的工作都在大量的假设建议额外改变位置,但是没有工作来研究在实际中多久和为什么会有不完整的patch出现。
2、所以作者的工作
调查和总结现有后续补丁的特征——来应用到附加修补或者纠正现有patch,调研需要后续补丁的漏洞的百分比,他们的严重水平,和初始patch的关系,位置,历史版本号等。
/3、contribution:先提出问题然后得出结论。
(1)多少个bugs需要后续patch?
用调研的三个软件的百分比说明了,没有说具体数目。
(2)不完整的补丁的共同原因?
随机取100个有后续补丁的例子,检查他们的内容和相对应的初始patch。手工分析得出来结论,多种多样的:“missed porting changes, incorrect handling of conditional statements, and incomplete refactorings”,发现不完整的patch的大小和文件的数量大于规律的patch,而且更加零散。
(3)后续补丁和初始补丁相似么?
用了CCFinder,比较后续补丁和初始补丁,发现只有很少的代码相同。
(4)后续补丁相比初始补丁在哪个位置?
一部分有直接关系,比如调用,访问,剩下的没有直接的依赖关系或者没有重合。

related work

Errors of Omission

之前的工作如何分析遗漏的错误

Empirical Studies of the Extent of Supplementary Bug Fixes

发现最难的bug的类型是concurrency的,多次给补丁打patch占据一个可观的数目,

Change Recommendation Systems for Supplementary Fixes

study approach

介绍一下研究的三个软件(Eclipse JDT core, Eclipse SWT and Mozilla)的特点,用什么语言写的,作用,包括的产品。
研究的年份,介绍了之前的研究发现了什么,怎么进行研究的方法,流程,具体的操作步骤,用什么工具进行的步骤,拿出一个例子解释流程。
给bugs分成两类,只打过一次patch和打过多次patch的。

results

分四个部分,介绍多次patch的bug数目和严重性;通过100个不完整的patch手工分析出来的成因;用代码克隆检测分析是否后续patch和初次patch有关联的地方;调查后续patch和初次patch的位置关系。

How Many Bugs Require Supplementary Patches?

用表展现,具体bug的数目,对应patch的次数…
得出结论:相当一部分的bugs需要多次patch,需要更多的开发者去解决这些问题。

What Are The Common Causes of Incomplete Bug Fixes?

为了更好地理解为什么遗漏的errors会在实际中出现,对incomplete patch和regular patch抽象出来了特征,随机选择了100个incomplete patches,inspected their patch contents, the structural dependence relations between an incomplete patch and its supplementary patches, and the associated bug reports。下面是发现:针对每个发现举出来了一个例子对应:

  1. An initial patch is ported to a different component or branch.
  2. The conditional statement of an initial fix is not correct.
  3. Code elements referring to or being referenced by changed code (i.e., calls, accesses, or extends) are later updated
  4. An initial patch is reverted
  5. Two different parts calling different subclasses of the same type are not updated together
  6. Incomplete refactoring induces a supplementary patch.
  7. The locations of incomplete and supplementary fixes are related but cannot be checked using the Java compiler.
  8. An initial patch is refactored during supplementary fixes.
  9. The comment is improved to explain an initial patch in detail.
  10. Others.
    然后得到结论:“The common causes of incomplete fixes are diverse. Incomplete patches are larger in size and more scattered than regular patches.”

Are Supplementary Bug Fixes Similar to Corresponding Initial Fixes?

调查不一致的克隆管理引起补充错误修复的频率,measure the content similarity
between a supplementary patch and its initial patch。用svndiff和CCFinder工具来跟踪patches和识别最初patch和后续patch的cloning relationship。
得出结论:Predicting a supplementary fix location using code clone analysis alone is insufficient.

Where Is The Location of Supplementary Bug Fixes in Relation to Initial Fixes?

结论;About 15% of supplementary change locations are beyond the scope of the direct neighbors of initial patch locations.

Discussion

Identification of Cloned Patches

在本文的研究中,a supplementary fix revision is regarded as a cloned patch when it has similar code chunk from an initial patch, longer than five lines. However, it is possible that only few lines of a supplementary patch is similar to the initial patch.

Relationships among Supplementary Patches

The Studied Period of Bug Reports

New Tools for Reducing Incomplete Bug Fixes.

本文工作表明,相当数量的不完整的patch由于不能覆盖所有情况的patch导致的,表示changed block的control flows的不同的工具可以缓解这种情况。

Conclusions

为了调查为什么会出现遗漏的错误和这些错误怎么样能够被阻止,我们调研了不完整patch和后续patch的特征。
Incomplete patches tend to be larger and more scattered than regular patches。
出现遗漏的errors的原因是多种多样的:
including missed porting changes, incorrect handling of conditional statements, or incomplete refactorings。

这篇关于论文笔记——An Empirical Study of Supplementary Bug Fixes的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/329393

相关文章

AI hospital 论文Idea

一、Benchmarking Large Language Models on Communicative Medical Coaching: A Dataset and a Novel System论文地址含代码 大多数现有模型和工具主要迎合以患者为中心的服务。这项工作深入探讨了LLMs在提高医疗专业人员的沟通能力。目标是构建一个模拟实践环境,人类医生(即医学学习者)可以在其中与患者代理进行医学

【学习笔记】 陈强-机器学习-Python-Ch15 人工神经网络(1)sklearn

系列文章目录 监督学习:参数方法 【学习笔记】 陈强-机器学习-Python-Ch4 线性回归 【学习笔记】 陈强-机器学习-Python-Ch5 逻辑回归 【课后题练习】 陈强-机器学习-Python-Ch5 逻辑回归(SAheart.csv) 【学习笔记】 陈强-机器学习-Python-Ch6 多项逻辑回归 【学习笔记 及 课后题练习】 陈强-机器学习-Python-Ch7 判别分析 【学

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识

论文翻译:arxiv-2024 Benchmark Data Contamination of Large Language Models: A Survey

Benchmark Data Contamination of Large Language Models: A Survey https://arxiv.org/abs/2406.04244 大规模语言模型的基准数据污染:一项综述 文章目录 大规模语言模型的基准数据污染:一项综述摘要1 引言 摘要 大规模语言模型(LLMs),如GPT-4、Claude-3和Gemini的快

论文阅读笔记: Segment Anything

文章目录 Segment Anything摘要引言任务模型数据引擎数据集负责任的人工智能 Segment Anything Model图像编码器提示编码器mask解码器解决歧义损失和训练 Segment Anything 论文地址: https://arxiv.org/abs/2304.02643 代码地址:https://github.com/facebookresear

数学建模笔记—— 非线性规划

数学建模笔记—— 非线性规划 非线性规划1. 模型原理1.1 非线性规划的标准型1.2 非线性规划求解的Matlab函数 2. 典型例题3. matlab代码求解3.1 例1 一个简单示例3.2 例2 选址问题1. 第一问 线性规划2. 第二问 非线性规划 非线性规划 非线性规划是一种求解目标函数或约束条件中有一个或几个非线性函数的最优化问题的方法。运筹学的一个重要分支。2

【C++学习笔记 20】C++中的智能指针

智能指针的功能 在上一篇笔记提到了在栈和堆上创建变量的区别,使用new关键字创建变量时,需要搭配delete关键字销毁变量。而智能指针的作用就是调用new分配内存时,不必自己去调用delete,甚至不用调用new。 智能指针实际上就是对原始指针的包装。 unique_ptr 最简单的智能指针,是一种作用域指针,意思是当指针超出该作用域时,会自动调用delete。它名为unique的原因是这个

查看提交历史 —— Git 学习笔记 11

查看提交历史 查看提交历史 不带任何选项的git log-p选项--stat 选项--pretty=oneline选项--pretty=format选项git log常用选项列表参考资料 在提交了若干更新,又或者克隆了某个项目之后,你也许想回顾下提交历史。 完成这个任务最简单而又有效的 工具是 git log 命令。 接下来的例子会用一个用于演示的 simplegit

记录每次更新到仓库 —— Git 学习笔记 10

记录每次更新到仓库 文章目录 文件的状态三个区域检查当前文件状态跟踪新文件取消跟踪(un-tracking)文件重新跟踪(re-tracking)文件暂存已修改文件忽略某些文件查看已暂存和未暂存的修改提交更新跳过暂存区删除文件移动文件参考资料 咱们接着很多天以前的 取得Git仓库 这篇文章继续说。 文件的状态 不管是通过哪种方法,现在我们已经有了一个仓库,并从这个仓

忽略某些文件 —— Git 学习笔记 05

忽略某些文件 忽略某些文件 通过.gitignore文件其他规则源如何选择规则源参考资料 对于某些文件,我们不希望把它们纳入 Git 的管理,也不希望它们总出现在未跟踪文件列表。通常它们都是些自动生成的文件,比如日志文件、编译过程中创建的临时文件等。 通过.gitignore文件 假设我们要忽略 lib.a 文件,那我们可以在 lib.a 所在目录下创建一个名为 .gi