conda env create --name AG-RAG python=3.9
conda activate AG-RAG
pip install -r requirements.txttips: torch version may depend on CUDA version, so you should check the version of CUDA and replace it in requirements.txt.
.
├── README.md
├── RQ1
│ ├── asserttype : The source code to get assert type result
│ ├── result : The result of RQ1
│ └── venn : The source code to generate venn diagrams
├── RQ2
│ ├── IR_retriever : The source code to get IR-retriever result
│ ├── finetuned_retriever : The source code to get finetuned-retriever result
│ ├── no_retriever: The source code to get no-retriever result
│ ├── pretrained_retriever : The source code to get pretrained-retriever result
│ └── split_result.py : aims to split result from xxx_result.txt to xxx.gold and xxx.output in RQ2
├── RQ3
│ ├── CodeBERT
│ ├── GraphCodeBERT
│ └── UniXcoder
├── dataset.tar.gz : dataset archive
├── args_config.py
├── evaluator
├── model.py
├── requirements.txt
├── run-old.sh : fine-tuned CodeT5 using AG-RAG in NewDataSet
└── run-new.sh : fine-tuned CodeT5 using AG-RAG in OldDataSet
├── run.pyYou can download the model directly through this Google Drive Link for testing, or you can use the data given above to train and test yourself.
Raw data are in dataset.tar.gz, using commands below to unzip dataset:
tar -xzcf dataset.tar.gzbash run-new.sh <gpu_ids> <passage_number>
# -- or OldDataSet --
bash run-old.sh <gpu_ids> <passage_number>
bash run-new.sh 0,1 5will use GPU0 and GPU1 to fine-tuned CodeT5, and during training retriever will retrieve 5 examplars to calculate loss.
run the commands below to metrics the result of AG-RAG:
python evaluator/acc.py <gold_file_path> <output_file_path>
python evaluator/bleu.py <gold_file_path> <output_file_path>
python evaluator/CodeBLEU/calc_code_bleu.py --refs <gold_file_path> --hyp <output_file_path> --lang javarun the commands below to get assert type results:
cd RQ1/asserttype
bash calc_assert_type_new.sh
bash calc_assert_type_old.shrun the commands below to generate venn diagrams:
cd RQ1/venn
python to_excel.py
python generate_venn.pyrun the commands below to get RQ2 results:
# RQ2 contains no_retriever, IR_retriever, pretrained_retriever, finetuned_retriever
cd RQ2/xxx
bash run-new.sh
# -- or OldDataSet --
bash run-old.shrun the commands below to get RQ3 results:
# RQ3 contains CodeBERT, GraphCodeBERT and UniXcoder
cd RQ3/xxx
bash run-new.sh <gpu_ids> <passage_number>
# -- or OldDataSet --
bash run-old.sh <gpu_ids> <passage_number>