# LApredict **Repository Path**: ecust-dp/lapredict ## Basic Information - **Project Name**: LApredict - **Description**: Code replication for the paper: Deep just-in-time defect prediction: how far are we? - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-01-07 - **Last Updated**: 2024-06-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # LApredict #### 介绍 Code replication for the ISSTA 2021 paper: Deep just-in-time defect prediction: how far are we? #### 系统环境 **P40-1**_高性能计算平台应用名称:gym CPU:10 核 RAM:100 GB GPU:NVIDIA Tesla P40 24G OS:Ubuntu 18.04 **P40-2**_高性能计算平台应用名称:Tensorflow_GPU CPU:10 核 RAM:64 GB GPU:NVIDIA Tesla P40 24G OS:CentOS 7.7 **3090**_高性能计算平台应用名称:Desktop_GPU CPU:10 核 RAM:20 GB GPU:Nvidia GeForce RTX 3090 OS:CentOS 7.8 #### 环境配置 ```git clone https://gitee.com/ecust-dp/lapredict.git``` ```cd lapredict``` ```conda create -n LApredict python=3.7``` ```conda activate LApredict``` ```pip install -r requirements.txt``` ```pip install torch==1.5.0+cu101 -f https://download.pytorch.org/whl/torch_stable.html``` or Manually download the **torch-1.5.0+cu101-cp37-cp37m-linux_x86_64.whl** from [https://download.pytorch.org/whl/torch/](https://download.pytorch.org/whl/torch/) and upload it to Path/to/lapredict. Then ```pip install torch-1.5.0+cu101-cp37-cp37m-linux_x86_64.whl``` #### 使用说明 **Table 1: Dataset statistics** ![img.png](ResultAnalysis/Dataset_Statistics.png) ```cd DeepJIT``` ```python run.py -RQ1_T2 -train_deepjit``` ```python run.py -RQ1_T2 -pred_deepjit``` ```python run.py -RQ1_T2 -train_cc2vec``` ```python run.py -RQ1_T2 -pred_cc2vec``` ```cd ..``` ```cd ResultAnalysis``` ```python cp.py -RQ1_T2``` ```python analysis.py -RQ1_T2``` python run.py -RQ1_T3 -train_deepjit python run.py -RQ1_T3 -pred_deepjit python run.py -RQ1_T4 -train_cc2vec python run.py -RQ1_T4 -pred_cc2vec python run.py -RQ2_T5 -train_deepjit python run.py -RQ2_T5 -pred_deepjit python run.py -RQ2_T5 -train_cc2vec python run.py -RQ2_T5 -pred_cc2vec python run.py -RQ2_F5 -train_deepjit python run.py -RQ2_F5 -pred_deepjit python run.py -RQ2_F5 -train_cc2vec python run.py -RQ2_F5 -pred_cc2vec python run.py -RQ2_F6 -train_deepjit python run.py -RQ2_F6 -pred_deepjit python run.py -RQ4_T8 -train_deepjit python run.py -RQ4_T8 -pred_deepjit #### 结果对比 **Table 2: Replication study results for DeepJIT and CC2Vec** ![img.png](ResultAnalysis/RQ1-T2/Paper.png) S.D.: standard deviation values of 5-fold cross validation runs **Repliacation experiment results of Table 2** ![img.png](ResultAnalysis/RQ1-T2/Replication_results.png) **Notes:** 1. Results of CC2Vec are exactly the same for different P40s, while this is not for DeepJIT. #### 补充材料 cv0-4: 5-fold cross validation 10-50k: training sets containing historical commits, constructed in the reverse chronological order, for each studied project, and fixat most recent 2k samples for testing. cross: cross-project data: historical data from all the other adopted projects rather than the project under prediction for training a classifier. CAM: Class Activation Mapping **Dataset Structure Example: openstack** ``` . ├── openstack │   ├── 10k │   │   ├── cc2vec │   │   │   ├── openstack_all_dextend.pkl │   │   │   ├── openstack_all_dextend_raw.pkl │   │   │   ├── openstack_all.pkl │   │   │   ├── openstack_dict.pkl │   │   │   ├── openstack_test_dextend.pkl │   │   │   ├── openstack_test_dextend_raw.pkl │   │   │   ├── openstack_test.pkl │   │   │   ├── openstack_train_dextend.pkl │   │   │   ├── openstack_train_dextend_raw.pkl │   │   │   └── openstack_train.pkl │   │   ├── deepjit │   │   │   ├── openstack_all.pkl │   │   │   ├── openstack_all_raw.pkl │   │   │   ├── openstack_dict.pkl │   │   │   ├── openstack_test.pkl │   │   │   ├── openstack_test_raw.pkl │   │   │   ├── openstack_train.pkl │   │   │   └── openstack_train_raw.pkl │   │   ├── feature │   │   │   └── openstack_dict.pkl │   │   ├── openstack_dict.pkl │   │   └── openstack_k_feature.csv │   ├── 20k │   │   ├── cc2vec │   │   │   ├── openstack_all_dextend.pkl │   │   │   ├── openstack_all_dextend_raw.pkl │   │   │   ├── openstack_all.pkl │   │   │   ├── openstack_dict.pkl │   │   │   ├── openstack_test_dextend.pkl │   │   │   ├── openstack_test_dextend_raw.pkl │   │   │   ├── openstack_test.pkl │   │   │   ├── openstack_train_dextend.pkl │   │   │   ├── openstack_train_dextend_raw.pkl │   │   │   └── openstack_train.pkl │   │   ├── deepjit │   │   │   ├── openstack_all.pkl │   │   │   ├── openstack_all_raw.pkl │   │   │   ├── openstack_dict.pkl │   │   │   ├── openstack_test.pkl │   │   │   ├── openstack_test_raw.pkl │   │   │   ├── openstack_train.pkl │   │   │   └── openstack_train_raw.pkl │   │   ├── feature │   │   │   └── openstack_dict.pkl │   │   ├── openstack_dict.pkl │   │   └── openstack_k_feature.csv │   ├── 30k │   │   ├── cc2vec │   │   │   ├── openstack_all_dextend.pkl │   │   │   ├── openstack_all_dextend_raw.pkl │   │   │   ├── openstack_all.pkl │   │   │   ├── openstack_dict.pkl │   │   │   ├── openstack_test_dextend.pkl │   │   │   ├── openstack_test_dextend_raw.pkl │   │   │   ├── openstack_test.pkl │   │   │   ├── openstack_train_dextend.pkl │   │   │   ├── openstack_train_dextend_raw.pkl │   │   │   └── openstack_train.pkl │   │   ├── deepjit │   │   │   ├── openstack_all.pkl │   │   │   ├── openstack_all_raw.pkl │   │   │   ├── openstack_dict.pkl │   │   │   ├── openstack_test.pkl │   │   │   ├── openstack_test_raw.pkl │   │   │   ├── openstack_train.pkl │   │   │   └── openstack_train_raw.pkl │   │   ├── feature │   │   │   └── openstack_dict.pkl │   │   ├── openstack_dict.pkl │   │   └── openstack_k_feature.csv │   ├── 40k │   │   ├── cc2vec │   │   │   ├── openstack_all_dextend.pkl │   │   │   ├── openstack_all_dextend_raw.pkl │   │   │   ├── openstack_all.pkl │   │   │   ├── openstack_dict.pkl │   │   │   ├── openstack_test_dextend.pkl │   │   │   ├── openstack_test_dextend_raw.pkl │   │   │   ├── openstack_test.pkl │   │   │   ├── openstack_train_dextend.pkl │   │   │   ├── openstack_train_dextend_raw.pkl │   │   │   └── openstack_train.pkl │   │   ├── deepjit │   │   │   ├── openstack_all.pkl │   │   │   ├── openstack_all_raw.pkl │   │   │   ├── openstack_dict.pkl │   │   │   ├── openstack_test.pkl │   │   │   ├── openstack_test_raw.pkl │   │   │   ├── openstack_train.pkl │   │   │   └── openstack_train_raw.pkl │   │   ├── feature │   │   │   └── openstack_dict.pkl │   │   ├── openstack_dict.pkl │   │   └── openstack_k_feature.csv │   ├── 50k │   │   ├── cc2vec │   │   │   ├── openstack_all_dextend.pkl │   │   │   ├── openstack_all_dextend_raw.pkl │   │   │   ├── openstack_all.pkl │   │   │   ├── openstack_dict.pkl │   │   │   ├── openstack_test_dextend.pkl │   │   │   ├── openstack_test_dextend_raw.pkl │   │   │   ├── openstack_test.pkl │   │   │   ├── openstack_train_dextend.pkl │   │   │   ├── openstack_train_dextend_raw.pkl │   │   │   └── openstack_train.pkl │   │   ├── deepjit │   │   │   ├── openstack_all.pkl │   │   │   ├── openstack_all_raw.pkl │   │   │   ├── openstack_dict.pkl │   │   │   ├── openstack_test.pkl │   │   │   ├── openstack_test_raw.pkl │   │   │   ├── openstack_train.pkl │   │   │   └── openstack_train_raw.pkl │   │   ├── feature │   │   │   └── openstack_dict.pkl │   │   ├── openstack_dict.pkl │   │   └── openstack_k_feature.csv │   ├── cam │   │   └── deepjit │   │   ├── openstack_dict.pkl │   │   ├── openstack_test.pkl │   │   └── openstack_train.pkl │   ├── cc2vec │   │   ├── openstack_all_dextend.pkl │   │   ├── openstack_all_dextend_raw.pkl │   │   ├── openstack_all.pkl │   │   ├── openstack_dict.pkl │   │   ├── openstack_test_cc2ftr.pkl │   │   ├── openstack_test_dextend_eval.pkl │   │   ├── openstack_test_dextend.pkl │   │   ├── openstack_test_dextend_raw.pkl │   │   ├── openstack_test.pkl │   │   ├── openstack_train_cc2ftr.pkl │   │   ├── openstack_train_dextend.pkl │   │   ├── openstack_train_dextend_raw.pkl │   │   └── openstack_train.pkl │   ├── cross │   │   ├── cc2vec │   │   │   ├── openstack_all_dextend.pkl │   │   │   ├── openstack_all_dextend_raw.pkl │   │   │   ├── openstack_all.pkl │   │   │   ├── openstack_dict.pkl │   │   │   ├── openstack_test_cc2ftr.pkl │   │   │   ├── openstack_test_dextend_eval.pkl │   │   │   ├── openstack_test_dextend.pkl │   │   │   ├── openstack_test_dextend_raw.pkl │   │   │   ├── openstack_test.pkl │   │   │   ├── openstack_train_cc2ftr.pkl │   │   │   ├── openstack_train_dextend.pkl │   │   │   ├── openstack_train_dextend_raw.pkl │   │   │   └── openstack_train.pkl │   │   ├── deepjit │   │   │   ├── openstack_all.pkl │   │   │   ├── openstack_all_raw.pkl │   │   │   ├── openstack_dict.pkl │   │   │   ├── openstack_test.pkl │   │   │   ├── openstack_test_raw.pkl │   │   │   ├── openstack_train.pkl │   │   │   └── openstack_train_raw.pkl │   │   ├── feature │   │   │   └── openstack_dict.pkl │   │   ├── k_test.csv │   │   ├── k_train.csv │   │   ├── openstack_dict.pkl │   │   └── openstack_k_feature.csv │   ├── cv0 │   │   ├── cc2vec │   │   │   ├── openstack_dict.pkl │   │   │   ├── openstack_test_dextend.pkl │   │   │   ├── openstack_test_dextend_raw.pkl │   │   │   ├── openstack_test.pkl │   │   │   ├── openstack_train_dextend.pkl │   │   │   ├── openstack_train_dextend_raw.pkl │   │   │   └── openstack_train.pkl │   │   └── deepjit │   │   ├── openstack_dict.pkl │   │   ├── openstack_test.pkl │   │   ├── openstack_test_raw.pkl │   │   ├── openstack_train.pkl │   │   └── openstack_train_raw.pkl │   ├── cv1 │   │   ├── cc2vec │   │   │   ├── openstack_dict.pkl │   │   │   ├── openstack_test_dextend.pkl │   │   │   ├── openstack_test_dextend_raw.pkl │   │   │   ├── openstack_test.pkl │   │   │   ├── openstack_train_dextend.pkl │   │   │   ├── openstack_train_dextend_raw.pkl │   │   │   └── openstack_train.pkl │   │   └── deepjit │   │   ├── openstack_dict.pkl │   │   ├── openstack_test.pkl │   │   ├── openstack_test_raw.pkl │   │   ├── openstack_train.pkl │   │   └── openstack_train_raw.pkl │   ├── cv2 │   │   ├── cc2vec │   │   │   ├── openstack_dict.pkl │   │   │   ├── openstack_test_dextend.pkl │   │   │   ├── openstack_test_dextend_raw.pkl │   │   │   ├── openstack_test.pkl │   │   │   ├── openstack_train_dextend.pkl │   │   │   ├── openstack_train_dextend_raw.pkl │   │   │   └── openstack_train.pkl │   │   └── deepjit │   │   ├── openstack_dict.pkl │   │   ├── openstack_test.pkl │   │   ├── openstack_test_raw.pkl │   │   ├── openstack_train.pkl │   │   └── openstack_train_raw.pkl │   ├── cv3 │   │   ├── cc2vec │   │   │   ├── openstack_dict.pkl │   │   │   ├── openstack_test_dextend.pkl │   │   │   ├── openstack_test_dextend_raw.pkl │   │   │   ├── openstack_test.pkl │   │   │   ├── openstack_train_dextend.pkl │   │   │   ├── openstack_train_dextend_raw.pkl │   │   │   └── openstack_train.pkl │   │   └── deepjit │   │   ├── openstack_dict.pkl │   │   ├── openstack_test.pkl │   │   ├── openstack_test_raw.pkl │   │   ├── openstack_train.pkl │   │   └── openstack_train_raw.pkl │   ├── cv4 │   │   ├── cc2vec │   │   │   ├── openstack_dict.pkl │   │   │   ├── openstack_test_dextend.pkl │   │   │   ├── openstack_test_dextend_raw.pkl │   │   │   ├── openstack_test.pkl │   │   │   ├── openstack_train_dextend.pkl │   │   │   ├── openstack_train_dextend_raw.pkl │   │   │   └── openstack_train.pkl │   │   └── deepjit │   │   ├── openstack_dict.pkl │   │   ├── openstack_test.pkl │   │   ├── openstack_test_raw.pkl │   │   ├── openstack_train.pkl │   │   └── openstack_train_raw.pkl │   ├── deepjit │   │   ├── openstack_all.pkl │   │   ├── openstack_all_raw.pkl │   │   ├── openstack_dict.pkl │   │   ├── openstack_test.pkl │   │   ├── openstack_test_raw.pkl │   │   ├── openstack_train.pkl │   │   └── openstack_train_raw.pkl │   ├── feature │   │   └── openstack_dict.pkl │   ├── old │   │   ├── cc2vec │   │   │   ├── openstack_all_dextend.pkl │   │   │   ├── openstack_all_dextend_raw.pkl │   │   │   ├── openstack_all.pkl │   │   │   ├── openstack_dict.pkl │   │   │   ├── openstack_test_dextend.pkl │   │   │   ├── openstack_test_dextend_raw.pkl │   │   │   ├── openstack_test.pkl │   │   │   ├── openstack_train_dextend.pkl │   │   │   ├── openstack_train_dextend_raw.pkl │   │   │   └── openstack_train.pkl │   │   ├── deepjit │   │   │   ├── openstack_all.pkl │   │   │   ├── openstack_all_raw.pkl │   │   │   ├── openstack_dict.pkl │   │   │   ├── openstack_test.pkl │   │   │   ├── openstack_test_raw.pkl │   │   │   ├── openstack_train.pkl │   │   │   └── openstack_train_raw.pkl │   │   ├── feature │   │   │   └── openstack_dict.pkl │   │   ├── openstack_dict.pkl │   │   └── openstack_k_feature.csv │   ├── openstack_dict.pkl │   ├── openstack_k_feature.csv │   └── original │   ├── cc2vec │   │   ├── openstack_dict.pkl │   │   ├── openstack_test_dextend.pkl │   │   ├── openstack_test.pkl │   │   ├── openstack_train_dextend.pkl │   │   └── openstack_train.pkl │   ├── deepjit │   │   ├── openstack_dict.pkl │   │   ├── openstack_test.pkl │   │   ├── openstack_test_raw.pkl │   │   ├── openstack_train.pkl │   │   └── openstack_train_raw.pkl │   ├── openstack_dict.pkl │   ├── original_test.pkl │   └── original_train.pkl ```