33 research outputs found
How to Design a Program Repair Bot? Insights from the Repairnator Project
update for oadoi on Nov 02 2018International audienceProgram repair research has made tremendous progress over the last few years, and software development bots are now being invented to help developers gain productivity. In this paper, we investigate the concept of a " program repair bot " and present Repairnator. The Repairnator bot is an autonomous agent that constantly monitors test failures, reproduces bugs, and runs program repair tools against each reproduced bug. If a patch is found, Repairnator bot reports it to the developers. At the time of writing, Repairnator uses three different program repair systems and has been operating since February 2017. In total, it has studied 11 317 test failures over 1 609 open-source software projects hosted on GitHub, and has generated patches for 17 different bugs. Over months, we hit a number of hard technical challenges and had to make various design and engineering decisions. This gives us a unique experience in this area. In this paper, we reflect upon Repairnator in order to share this knowledge with the automatic program repair community
Explainable Software Bot Contributions: Case Study of Automated Bug Fixes
In a software project, esp. in open-source, a contribution is a valuable
piece of work made to the project: writing code, reporting bugs, translating,
improving documentation, creating graphics, etc. We are now at the beginning of
an exciting era where software bots will make contributions that are of similar
nature than those by humans. Dry contributions, with no explanation, are often
ignored or rejected, because the contribution is not understandable per se,
because they are not put into a larger context, because they are not grounded
on idioms shared by the core community of developers. We have been operating a
program repair bot called Repairnator for 2 years and noticed the problem of
"dry patches": a patch that does not say which bug it fixes, or that does not
explain the effects of the patch on the system. We envision program repair
systems that produce an "explainable bug fix": an integrated package of at
least 1) a patch, 2) its explanation in natural or controlled language, and 3)
a highlight of the behavioral difference with examples. In this paper, we
generalize and suggest that software bot contributions must explainable, that
they must be put into the context of the global software development
conversation
Repairnator patches programs automatically
Repairnator is a bot. It constantly monitors software bugs discovered during
continuous integration of open-source software and tries to fix them
automatically. If it succeeds in synthesizing a valid patch, Repairnator
proposes the patch to the human developers, disguised under a fake human
identity. To date, Repairnator has been able to producepatches that were
accepted by the human developers and permanently merged into the code base.
This is a milestone for human-competitiveness in software engineering research
on automatic program repair.Comment: arXiv admin note: substantial text overlap with arXiv:1810.0580
A Comprehensive Study of Code-removal Patches in Automated Program Repair
Automatic Program Repair (APR) techniques can promisingly help reducing the
cost of debugging. Many relevant APR techniques follow the
generate-and-validate approach, that is, the faulty program is iteratively
modified with different change operators and then validated with a test suite
until a plausible patch is generated. In particular, Kali is a
generate-and-validate technique developed to investigate the possibility of
generating plausible patches by only removing code. Former studies show that
indeed Kali successfully addressed several faults. This paper addresses the
case of code-removal patches in automated program repair investigating the
reasons and the scenarios that make their creation possible, and the
relationship with patches implemented by developers. Our study reveals that
code-removal patches are often insufficient to fix bugs, and proposes a
comprehensive taxonomy of code-removal patches that provides evidence of the
problems that may affect test suites, opening new opportunities for researchers
in the field of automatic program repair.Comment: New version of the manuscrip
SapFix: Automated End-To-End Repair at Scale
We report our experience with SapFix: the first deployment of automated end-to-end fault fixing, from test case design through to deployed repairs in production code. We have used SapFix at Facebook to repair 6 production systems, each consisting of tens of millions of lines of code, and which are collectively used by hundreds of millions of people worldwide