Reading Group on Automatic Program Repair

Reading Group on Automatic Program Repair

The problem of automatically synthesizing patches that fix bugs in programs is a recent hot topic in Software Engineering, intersecting to semantics and verification, and (simultaneously) to AI and machine learning. In this reading group, we will be looking at papers that use search-based techniques (learning) and testing to fix programs, and some that use more semantics oriented methods (symbolic execution, synthesis).

Sessions

Date TimeRoomPapersPresenter
30 April 201914:00-15:30 5A01Automatically finding patches using genetic programming

GenProg: A generic method for automatic software repair
Mahsa Varshosaz
14 May 1914:00-15:30 5A01SemFix: program repair via semantic analysis

Angelix: scalable multiline program patch synthesis via symbolic analysis
Andrzej Wasowski

Mahsa Varshosaz
21 May 1914:00-15:30 3A05Automated Atomicity-Violation Fixing

Nopol and DynaMoth: Automatic Repair of Conditional Statement Bugs in Java Programs, (abstract below)
Alfredo Cruz


Thomas Durieux
04 June 19 14:00-15:30 3A01Repairing Programs with Semantic Code Search


Safe memory-leak fixing for C programs
Alfredo Cruz

Holger Stadel Borum
11 June 19 14:00-15:30 3A01A systematic study of automated program repair: Fixing 55 out of 105 bugs for $8 each

Nopol: Automatic repair of conditional statement bugs in Java programs
Holger Stadel Borum

Alfredo Cruz
18 June 19 14:00-15:305A09Automatic Software Repair: A SurveyMahsa Varshosaz
24 July 199:15-11:004A05Automatic Patch Generation by Learning Correct CodeAlfredo Cruz
7 August 199:30-11:004D05Staged program repair with condition synthesis

Information about Talks

The abstract of the talk “Nopol and DynaMoth: Automatic Repair of Conditional Statement Bugs in Java Programs”:

Nopol and Dynamoth are two approaches to automatic repair of buggy conditional statements (i.e., if-then-else statements). This approaches take a buggy program as well as a test suite as input and generates a patch with a conditional expression as output. The test suite is required to contain passing test cases to model the expected behavior of the program and at least one failing test case that reveals the bug to be repaired. The process of Nopol and Dynamoth consists of three major phases. First, they employ angelic fix localization to identify expected values of a condition during the test execution. Second, collect variables and their actual values, including primitive data types and objected-oriented features (e.g., nullness checks), to serve as building blocks for patch generation. Third, Nopol encodes these collected data into an instance of a Satisfiability Modulo Theory (SMT) problem; then a feasible solution to the SMT instance is translated back into a code patch. Dynamoth dynamically generates the patches by combining expression with logic and mathematic operator (+,-, ==, …). We evaluate Nopol and Dynamoth on 22 real-world bugs (16 bugs with a buggy if conditions and six bugs with missing preconditions) on two large open-source projects, namely Apache Commons Math and Apache Commons Lang and on Defects4J. Empirical analysis on these bugs shows that our approaches can effectively fix bugs with buggy if conditions and missing preconditions but have tendency to overfit generic Defects4J bugs. 



Organizers

Andrzej Wasowski
Mahsa Varshosaz



This activity is sponsored by INSIGHT, a research project funded by Danmarks Frie Forskningsfond | Teknologi og Produktion

  • Next Post