Skip to content

BATS, an unsupervised learning based system to predict patch correctness by checking patch Behaviour Against failing Test Specification.

License

Notifications You must be signed in to change notification settings

HaoyeTianCoder/BATS

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Predicting Patch Correctness Based on the Similarity of Failing Test Cases

@article{tian2022predicting,
  title={Predicting Patch Correctness Based on the Similarity of Failing Test Cases},
  author={Tian, Haoye and Li, Yinghua and Pian, Weiguo and Kabore, Abdoul Kader and Liu, Kui and Habib, Andrew and Klein, Jacques and Bissyand{\'e}, Tegawend{\'e} F},
  journal={ACM Transactions on Software Engineering and Methodology},
  year={2022},
  publisher={ACM New York, NY},
  url = {https://doi.org/10.1145/3511096}, 
  doi = {10.1145/3511096}

Paper Link: https://dl.acm.org/doi/10.1145/3511096

BATS

BATS, an unsupervised learning based system to predict patch correctness by checking patch Behaviour Against failing Test Specification.

Ⅰ) Requirements

  • Data. Download the BATS_Dataset from data in Zenodo. Set up self.path_generated_patch in experiment/config.py with the path of the downloaded PatchCollectingV1_sliced.

  • Code2Vec representation model.

    1. Download the trained model and uncompress the file. wget https://s3.amazonaws.com/code2vec/model/java14m_model.tar.gz tar -xvzf java14m_model.tar.gz
    2. Update the variable MODEL_MODEL_LOAD_PATH in ./word2vector.py according to destination folder of trained model
  • BERT model.

    • BERT model client&server: 24-layer, 1024-hidden, 16-heads, 340M parameters. download it here.
    • Environment for BERT server (different from reproduction)
      • python 3.7
      • pip install tensorflow==1.14
      • pip install bert-serving-client==1.10.0
      • pip install bert-serving-server==1.10.0
      • pip install protobuf==3.20.1
      • Launch BERT server via bert-serving-start -model_dir "Path2BertModel"/wwm_cased_L-24_H-1024_A-16 -num_worker=2 -max_seq_len=360

Ⅱ) Reproduction

Follow the experiment/README.md to obtain the experimental results in the paper.

Ⅲ) Custom Prediction

To predict the correctness of your custom patches, you are welcome to use the prediction interface.

python main.py predict $cut-off $bug_id $path2patch

For instance:

python main.py predict 0.8 Chart_26 "path2dataset"/BATS_DataSet/PatchCollectingV1_sliced/PraPR/Correct/Chart/26/patch1

About

BATS, an unsupervised learning based system to predict patch correctness by checking patch Behaviour Against failing Test Specification.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published