All Projects → mechtaev → angelix

mechtaev / angelix

Licence: MIT License
Semantic program repair system for C programs

Programming Languages

java
68154 projects - #9 most used programming language
perl
6916 projects
python
139335 projects - #7 most used programming language
C++
36643 projects - #6 most used programming language
c
50402 projects - #5 most used programming language
Makefile
30231 projects

Projects that are alternatives of or similar to angelix

MSR2021-ProgramRepair
Code of our paper Applying CodeBERT for Automated Program Repair of Java Simple Bugs which is accepted to MSR 2021.
Stars: ✭ 26 (-69.05%)
Mutual labels:  program-repair
BIFI
[ICML 2021] Break-It-Fix-It: Unsupervised Learning for Program Repair
Stars: ✭ 74 (-11.9%)
Mutual labels:  program-repair
CPR
CPR: A new automated program repair technique based on concolic execution which works on patch abstraction with the sub-optimal goal of refining the patch to less over-fit the initial test cases.
Stars: ✭ 22 (-73.81%)
Mutual labels:  program-repair
logifix
Fixing static analysis violations in Java source code using Datalog
Stars: ✭ 17 (-79.76%)
Mutual labels:  program-repair
kGenProg
A High-performance, High-extensibility and High-portability APR System
Stars: ✭ 47 (-44.05%)
Mutual labels:  program-repair
GenPat
This is an automated transformation inference tool that leverages a big code corpus to guide the abstraction of transformation patterns.
Stars: ✭ 19 (-77.38%)
Mutual labels:  program-repair

Angelix

Semantics-based automated program repair tool for C programs. Angelix fixes bugs manifested by failing test cases and searches for the minimal change in order to preserve the original source code. Powered by KLEE symbolic execution engine and Z3 SMT solver.

If you use Angelix in your research project, please include the following citation:

@inproceedings{mechtaev2016angelix,
    title={Angelix: Scalable multiline program patch synthesis via symbolic analysis},
    author={Mechtaev, Sergey and Yi, Jooyong and Roychoudhury, Abhik},
    booktitle={Proceedings of the 38th International Conference on Software Engineering},
    pages={691--701},
    year={2016},
    organization={ACM}
}

Installation

Angelix is distributed in source code form and pre-installed in VirtualBox image. The VirtualBox image also contains Angelix ICSE'16 and SemFix ICSE'13 evaluation results.

Option 1: VirtualBox image

You can download VirtualBox image with pre-installed Angelix. Note that it contains an outdated version of Angelix and is distributed only for the demonstration purpose.

Please download the following files: https://s3-ap-southeast-1.amazonaws.com/angelix/angelix-icse16-v2.vbox https://s3-ap-southeast-1.amazonaws.com/angelix/angelix-icse16-v2.vdi (9.7 GB) https://s3-ap-southeast-1.amazonaws.com/angelix/md5sum.txt

Execute "md5sum -c md5sum.txt" to verify your download.

The image includes Ubuntu 14.04 64-bit with pre-installed Angelix.

The user/password are angelix/angelix.

Option 2: Build from source

The following is required to install Angelix from source code:

  • 40GB Hard drive
  • 8GB Memory
  • Ubuntu 14.04 64-bit*

* Angelix can run on other 64-bit Linux distributions, however installation scripts were tested only on Ubuntu 14.04. If you want to install Angelix on a different system, you may need to modify Makefile and activate scripts.

Clone repository recursively:

git clone --recursive https://github.com/mechtaev/angelix.git

Install dependencies:

sudo apt-get install git wget xz-utils build-essential time
sudo apt-get install curl dejagnu subversion bison flex bc libcap-dev
sudo apt-get install cmake libncurses5-dev libboost-all-dev

Install Java 8 (for Ubuntu 14.04) and Maven:

sudo apt-get install software-properties-common
sudo apt-add-repository ppa:webupd8team/java
sudo apt-get update
sudo apt-get install oracle-java8-installer
sudo apt-get install maven

Install SBT by following intructions.

Set Angelix environment:

. activate

Download and build required modules:

make default

Run tests:

make test

Documentation

To set optimal configuration for your subject, refer to the Configuration section of the manual.

Changelog

1.1 (2017-Mar-20)

Implemented enhancements:

  • New experimental synthesizer (--use-nsynth option)
  • Automatically instrumenting printf arguments with ANGELIX_OUTPUT (--instr-printf option)
  • Finding all patches (--generate-all option)
  • Improved language support

Fixed bugs:

  • Various bugs in frontend, inference and synthesis.

1.0 (2016-Jul-8)

Implemented enhancements:

  • Supported NULL pointer, break and continue statements, 64-bit long in ANGELIX_OUTPUT.

Fixed bugs:

  • Various reported bugs in frontend and localization.

icse16 (2016-Feb-19)

Initial release used to reproduce ICSE'16 experiments. Available on VirtualBox VM.

Publications

Angelix: Scalable Multiline Program Patch Synthesis via Symbolic Analysis. S. Mechtaev, J. Yi, A. Roychoudhury. ICSE'16. [pdf]

DirectFix: Looking for Simple Program Repairs. S. Mechtaev, J. Yi, A. Roychoudhury. ICSE'15. [pdf]

SemFix: Program Repair via Semantic Analysis. H.D.T. Nguyen, D. Qi, A. Roychoudhury, S. Chandra. ICSE'13. [pdf]

Contributors

Principal investigator:

  • Abhik Roychoudhury

Developers:

  • Sergey Mechtaev
  • Jooyong Yi

Contributors:

  • Shin Hwei Tan
  • Yulis
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].