Giter VIP home page Giter VIP logo

vqr's Introduction

VQR Replication of Experiments

VQR

VQR

Automated Software Vulnerability Repair Through Vulnerability Queries

Table of contents

  1. How to replicate
  2. License
  3. Citation

How to replicate

Environment Setup

First of all, clone this repository to your local machine and access the main dir via the following command:

git clone https://github.com/AVR-VQR/VQR.git
cd VQR

Then, install the python dependencies via the following command:

pip install -r requirements.txt
cd VQR/transformers
pip install .
cd ../..
  • We highly recommend you check out this installation guide for the "torch" library so you can install the appropriate version on your device.

  • To utilize GPU (optional), you also need to install the CUDA library, you may want to check out this installation guide.

  • Python 3.9.7 is recommended, which has been fully tested without issues.

Datasets

data...

Replication of Experiments

Download necessary data and unzip via the following command:

cd data
sh download_data.sh 
cd ..

Reproduce Main Results (Section 4.5.1 in the paper)

  • VQR (proposed approach)

    • Inference
    cd VQR/saved_models/checkpoint-best-loss
    sh download_models.sh
    cd ../..
    sh run_test.sh
    cd ..
    
    • Retrain Localization Model
    cd VQR
    sh run_pretrain_loc.sh
    sh run_train_loc.sh
    cd ..
    
    • Retrain Repair Model
    cd VQR
    sh run_pretrain.sh
    sh run_train.sh
    sh run_test.sh
    cd ..
    
  • VulRepair

    • Inference
    cd baselines/VulRepair/saved_models/checkpoint-best-loss
    sh download_models.sh
    cd ../..
    sh run_test.sh
    cd ../..
    
    • Retrain
    cd baselines/VulRepair
    sh run_pretrain.sh
    sh run_train.sh
    sh run_test.sh
    cd ../..
    
  • TFix

    • Inference
    cd baselines/TFix/saved_models/checkpoint-best-loss
    sh download_models.sh
    cd ../..
    sh run_test.sh
    cd ../..
    
    • Retrain
    cd baselines/TFix
    sh run_pretrain.sh
    sh run_train.sh
    sh run_test.sh
    cd ../..
    
  • GraphCodeBERT

    • Inference
    cd baselines/GraphCodeBERT/saved_models/checkpoint-best-loss
    sh download_models.sh
    cd ../..
    sh run_test.sh
    cd ../..
    
    • Retrain
    cd baselines/GraphCodeBERT
    sh run_pretrain.sh
    sh run_train.sh
    sh run_test.sh
    cd ../..
    
  • CodeBERT

    • Inference
    cd baselines/CodeBERT/saved_models/checkpoint-best-loss
    sh download_models.sh
    cd ../..
    sh run_test.sh
    cd ../..
    
    • Retrain
    cd baselines/CodeBERT
    sh run_pretrain.sh
    sh run_train.sh
    sh run_test.sh
    cd ../..
    
  • VRepair

    • Inference
    cd baselines/VRepair/saved_models/checkpoint-best-loss
    sh download_models.sh
    cd ../..
    sh run_test.sh
    cd ../..
    
    • Retrain
    cd baselines/VRepair
    sh run_pretrain.sh
    sh run_train.sh
    sh run_test.sh
    cd ../..
    
  • SequenceR

    • Inference
    cd baselines/SequenceR/saved_models/checkpoint-best-loss
    sh download_models.sh
    cd ../..
    sh run_test.sh
    cd ../..
    
    • Retrain
    cd baselines/SequenceR
    sh run_pretrain.sh
    sh run_train.sh
    sh run_test.sh
    cd ../..
    

Ablation - Vulnerability Query Mask (Section 4.5.2-(1) in the paper)

  • Vul Mask Encoder + Vul Mask Decoder (proposed approach - VQR)

    • Inference
    cd VQR/saved_models/checkpoint-best-loss
    sh download_models.sh
    cd ../..
    sh run_test_no_bug.sh
    cd ..
    
    • Retrain
    cd VQR
    sh run_pretrain.sh
    sh run_train.sh
    sh run_test.sh
    cd ..
    
  • Vul Mask Encoder

    • Inference
    cd ablation_mask/Vul_mask_enc_only/saved_models/checkpoint-best-loss
    sh download_models.sh
    cd ../..
    sh run_test.sh
    cd ../..
    
    • Retrain
    cd ablation_mask/Vul_mask_enc_only/saved_models/checkpoint-best-loss
    sh download_models.sh
    cd ../..
    sh run_pretrain.sh
    sh run_train.sh
    sh run_test.sh
    cd ../..
    
  • Vul Mask Decoder

    • Inference
    cd ablation_mask/Vul_mask_cross_only/saved_models/checkpoint-best-loss
    sh download_models.sh
    cd ../..
    sh run_test.sh
    cd ../..
    
    • Retrain
    cd ablation_mask/Vul_mask_enc_only/saved_models/checkpoint-best-loss
    sh download_models.sh
    cd ../..
    sh run_pretrain.sh
    sh run_train.sh
    sh run_test.sh
    cd ../..
    
  • Perfect Mask Encoder + Perfect Mask Decoder

    • Inference
    cd ablation_mask/Vul_perfect_mask/saved_models/checkpoint-best-loss
    sh download_models.sh
    cd ../..
    sh run_test.sh
    cd ../..
    
    • Retrain
    cd ablation_mask/Vul_mask_enc_only/saved_models/checkpoint-best-loss
    sh download_models.sh
    cd ../..
    sh run_pretrain.sh
    sh run_train.sh
    sh run_test.sh
    cd ../..
    

Ablation - Pre-training on Bug-fix Data (Section 4.5.2-(2) in the paper)

  • VQR (proposed approach)

    • Inference
    cd VQR/saved_models/checkpoint-best-loss
    sh download_models.sh
    cd ../..
    sh run_test_no_bug.sh
    cd ..
    
    • Retrain
    sh run_train_no_bug.sh
    sh run_test_no_bug.sh
    cd ..
    
  • VulRepair

    • Inference
    cd baselines/VulRepair/saved_models/checkpoint-best-loss
    sh download_models.sh
    cd ../..
    sh run_test_no_bug.sh
    cd ../..
    
    • Retrain
    sh run_train_no_bug.sh
    sh run_test_no_bug.sh
    cd ../..
    
  • TFix

    • Inference
    cd baselines/TFix/saved_models/checkpoint-best-loss
    sh download_models.sh
    cd ../..
    sh run_test_no_bug.sh
    cd ../..
    
    • Retrain
    sh run_train_no_bug.sh
    sh run_test_no_bug.sh
    cd ../..
    
  • GraphCodeBERT

    • Inference
    cd baselines/GraphCodeBERT/saved_models/checkpoint-best-loss
    sh download_models.sh
    cd ../..
    sh run_test_no_bug.sh
    cd ../..
    
    • Retrain
    sh run_train_no_bug.sh
    sh run_test_no_bug.sh
    cd ../..
    
  • CodeBERT

    • Inference
    cd baselines/CodeBERT/saved_models/checkpoint-best-loss
    sh download_models.sh
    cd ../..
    sh run_test_no_bug.sh
    cd ../..
    
    • Retrain
    sh run_train_no_bug.sh
    sh run_test_no_bug.sh
    cd ../..
    
  • VRepair

    • Inference
    cd baselines/VRepair/saved_models/checkpoint-best-loss
    sh download_models.sh
    cd ../..
    sh run_test_no_bug.sh
    cd ../..
    
    • Retrain
    sh run_train_no_bug.sh
    sh run_test_no_bug.sh
    cd ../..
    
  • SequenceR

    • Inference
    cd baselines/SequenceR/saved_models/checkpoint-best-loss
    sh download_models.sh
    cd ../..
    sh run_test_no_bug.sh
    cd ../..
    
    • Retrain
    sh run_train_no_bug.sh
    sh run_test_no_bug.sh
    cd ../..
    

License

MIT License

Citation

under review

vqr's People

Contributors

anon-team avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.