How to Design a Program Repair Bot? Insights from the Repairnator Project

@article{Urli2017HowTD,
  title={How to Design a Program Repair Bot? Insights from the Repairnator Project},
  author={Simon Urli and Zhongxing Yu and Lionel Seinturier and Monperrus Martin},
  journal={2018 IEEE/ACM 40th International Conference on Software Engineering: Software Engineering in Practice Track (ICSE-SEIP)},
  year={2017},
  pages={95-104}
}
  • Simon Urli, Zhongxing Yu, Monperrus Martin
  • Published 1 May 2017
  • Computer Science
  • 2018 IEEE/ACM 40th International Conference on Software Engineering: Software Engineering in Practice Track (ICSE-SEIP)
Program 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… 

Figures and Tables from this paper

Towards s/engineer/bot: Principles for Program Repair Bots
TLDR
This work draws on the understanding of patch generation, validation, and real world software development interactions to identify six principles that bear on engineering repair bots and discuss related design challenges for integrating human workflows.
Towards s/engineer/bot: principles for program repair bots
TLDR
This work draws on the understanding of patch generation, validation, and real world software development interactions to identify six principles that bear on engineering repair bots and discuss related design challenges for integrating human workflows.
Explainable Software Bot Contributions: Case Study of Automated Bug Fixes
  • Monperrus Martin
  • Computer Science
    2019 IEEE/ACM 1st International Workshop on Bots in Software Engineering (BotSE)
  • 2019
TLDR
It is suggested that software bot contributions must explainable, that they must be put into the context of the global software development conversation.
What to Expect from Code Review Bots on GitHub?: A Survey with OSS Maintainers
TLDR
Study of how project maintainers experience code review bots reveals that the most frequent expectations include enhancing the feedback bots provide to developers, reducing the maintenance burden for developers, and enforcing code coverage.
iFixR: bug report driven program repair
TLDR
This work investigates a new repair pipeline, iFixR, driven by bug reports, where bug reports are fed to an IR-based fault localizer; patches are generated from fix patterns and validated via regression testing; and a prioritized list of generated patches is proposed to developers.
Trust Enhancement Issues in Program Repair
TLDR
Examining existing test-suite based program repair tools finds that they cannot produce high-quality patches within a top-10 ranking and an acceptable time period of 1 hour, and notes that producing repairs within anacceptable time-bound is very much dependent on leveraging an abstract search space representation of a rich enough search space.
How to trust auto-generated code patches? A developer survey and empirical assessment of existing program repair tools
TLDR
Examining existing test-suite based program repair tools finds that they cannot produce high-quality patches within a top-10 ranking and an acceptable time period of 1 hour, and notes that producing repairs within anacceptable time-bound is very much dependent on leveraging an abstract search space representation of a rich enough search space.
BEARS: An Extensible Java Bug Benchmark for Automatic Program Repair Studies
TLDR
BEARS, a project for collecting and storing bugs into an extensible bug benchmark for automatic repair studies in Java, is presented, and the version 1.0 of BEARS is delivered, which contains 251 reproducible bugs collected from 72 projects that use the Travis CI and Maven build environment.
Automated program repair can relieve programmers from the burden of manually fixing the ever-increasing number of programming mistakes
TLDR
A software developer is ready to push a highly anticipated new feature to the shared code repository, an important milestone in her career as a developer, but learns the build system rejected the commit.
...
1
2
3
4
5
...

References

SHOWING 1-10 OF 36 REFERENCES
DirectFix: Looking for Simple Program Repairs
TLDR
This paper presents a novel semantics-based repair method that generates the simplest patch such that the program structure of the buggy program is maximally preserved and fuses fault localization and repair generation into one step.
ASTOR: A Program Repair Library for Java
TLDR
Astor is a publicly available program repair library that includes the implementation of three notable repair approaches (jGenProg2, jKali and jMutRepair) and is envision that the research community will use Astor for setting up comparative evaluations and explore the design space of automatic repair for Java.
ASTOR: a program repair library for Java (demo)
TLDR
Astor is a publicly available program repair library that includes the implementation of three notable repair approaches (jGenProg, jKali and jMutRepair) and is envision that the research community will use Astor for setting up comparative evaluations and explore the design space of automatic repair for Java.
Is the cure worse than the disease? overfitting in automated program repair
TLDR
This paper evaluates two well-studied repair tools, GenProg and TrpAutoRepair, on a publicly available benchmark of bugs, each with a human-written patch, and finds that the tools are unlikely to improve the proportion of independent tests passed, and that the quality of the patches is proportional to the coverage of the test suite used during repair.
Automatic Software Repair
TLDR
This article considers behavioral repair where test suites, contracts, models, and crashing inputs are taken as oracle, and state repair, also known as runtime repair or runtime recovery, with techniques such as checkpoint and restart, reconfiguration, and invariant restoration.
Disrupting developer productivity one bot at a time
TLDR
The modern Bot landscape is outlined and a preliminary cognitive support framework is proposed that can be used to understand these roles and to reflect on the impact of Bots in software development on productivity.
SemFix: Program repair via semantic analysis
TLDR
This paper presents an automated repair method based on symbolic execution, constraint solving and program synthesis, which reports a higher success-rate than genetic programming based repair, and produces a repair faster.
Accelerating Software Engineering Research Adoption with Analysis Bots
TLDR
This paper proposes that SE analyses can be deployed as analysis bots, and focuses on two specific benefits of such an approach: (1) analysis bots can help evaluate analysis techniques in a less controlled, and more realistic context, and (2) analysis Bots provide an interface for developers to "subscribe" to new research techniques without needing to trust the implementation, the developer of the new tool, or to install the analysis tool locally.
Test Case Generation for Program Repair: A Study of Feasibility and Effectiveness
TLDR
The results indicate that test case generation can change the resulting patch, but is not effective at turning incorrect patches into correct ones, and this will lead to future research to build test-case generation techniques that are tailored to automatic repair systems.
Automatic patch generation learned from human-written patches
TLDR
A novel patch generation approach, Pattern-based Automatic program Repair (Par), using fix patterns learned from existing human-written patches to generate program patches automatically, which is more acceptable than GenProg.
...
1
2
3
4
...