ANIL KOYUNCU 8a376e4f6b changes
2020-05-25 09:40:54 +02:00
2020-05-25 09:40:54 +02:00
2020-05-25 09:40:54 +02:00
2020-05-25 09:40:54 +02:00
2020-05-25 09:40:54 +02:00
2020-05-25 09:40:54 +02:00
2020-04-09 13:31:56 +02:00
2020-04-09 14:35:58 +02:00
2020-04-10 15:28:30 +02:00
2020-04-06 21:30:39 +02:00
2020-04-10 15:28:30 +02:00
2020-04-10 15:55:12 +02:00
2020-04-06 21:30:39 +02:00

FixMiner Build StatusCoverage Status

Code of FixMiner

Reference: FixMiner: Mining Relevant Fix Patterns for Automated Program Repair (Empirical Software Engineering, doi:10.1007/s10664-019-09780-z)

Citing FixMiner

You can cite FixMiner using the following bibtex:

@article{koyuncu2020fixminer,
  title={Fixminer: Mining relevant fix patterns for automated program repair},
  author={Koyuncu, Anil and Liu, Kui and Bissyand{\'e}, Tegawend{\'e} F and Kim, Dongsun and Klein, Jacques and Monperrus, Martin and Le Traon, Yves},
  journal={Empirical Software Engineering},
  pages={1--45},
  year={2020},
  publisher={Springer}
}

FixMiner

I. Introduction

Fixminer is a systematic and automated approach to mine relevant and actionable fix patterns for automated program repair. The workflow of this technique.\label{workflow}

II. Environment setup

  • OS: macOS Mojave (10.14.3)

  • JDK8: (important!)

  • To mine from c code, srcml 1.0.0

  • Download and configure Anaconda

  • Create an python environment using the environment file

    conda env create -f environment.yml
    
  • After creating the environment, activate it. It is containing necessary dependencies for redis, and python.

    source activate fixminerEnv
    
  • Update the config.yml file with the corresponding paths in your computer. An example config.yml file could be found under

    fixminer_source/src/main/resources/config.yml
    

IV. Step-by-Step execution

Before running

  • Update config file with corresponding user paths.

  • Active the conda environment from shell

    source activate fixminerEnv
    

In order to launch FixMiner, execute fixminer.sh

bash fixminer.sh [JOB] [CONFIG_FILE]
 e.g. bash fixminer.sh  dataset4c /Users/projects/release/fixminer_source/src/main/resources/config.yml

Job Types

FixMiner needs to specify a job to run.

  1. dataset4j / dataset4c: Create a java/c mining dataset from the projects listed in subjects.csv or datasets.csv for c

  2. richEditScript: Calls the jar file produced as the results as maven package to compute Rich edit scripts. This step can be invoke natively from java or using the Launcher with appropriate arguments.

    java -jar FixPatternMiner-1.0.0-jar-with-dependencies.jar  /Users/projects/release/fixminer_source/src/main/resources/config.yml RICHEDITSCRIPT
    
  3. shapeSI: Search index creation for shapes. The output of this step is written to pairs folder which will be generated under datapath in config file

  4. compare : Calls the jar file produced as the results as maven package to compare the trees. This step can be invoke natively from java or using the Launcher with appropriate arguments.

                     ```powershell
                     java -jar FixPatternMiner-1.0.0-jar-with-dependencies.jar  /Users/projects/release/fixminer_source/src/main/resources/config.yml COMPARE
    
                     ```     
    
  5. cluster : Forms clusters of identical trees. The output of this step is written to shapes folder which will be generated under datapath in config file

Data Viewer

The data provided with replication package is listed in directory python/data The data is stored in different formats. (e.g. pickle, db, csv, etc..)

The see content of the .pickle file the following script could be used.

 import pickle as p
 import gzip
 def load_zipped_pickle(filename):
    with gzip.open(filename, 'rb') as f:
        loaded_object = p.load(f)
        return loaded_object

Usage

result = load_zipped_pickle('code/LANGbugReportsComplete.pickle')
# Result is pandas object which can be exported to several formats
# Details on how to export is listed in offical library documentation
# https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.html

S
Description
Mining Relevant Fix Patterns for Automated Program Repair
Readme 312 MiB
Languages
C 69.3%
Java 26.9%
Python 2.9%
GAP 0.5%
CSS 0.1%
Other 0.2%