train description-java program synthesis on GPU 2 with PLBART

June 22, 2022 ยท View on GitHub

Code Translation, Summarization & Synthesis

First edit the code/scripts/common_run_utils.sh file, change the ROOT_PATH to your own directory. Then place the unzipped dataset at ROOT_PATH/g4g/XLCoST_data/.

To run the code-to-code translation experiments:

cd code/scripts
# train snippet level java-python translation on GPU 0 with CodeBERT
bash run_translation.sh 0 java python snippet codebert train
# train program level csharp-cpp translation on GPU 2 with PLBART
bash run_translation.sh 2 csharp cpp snippet plbart train
# evaluate program level csharp-cpp translation on GPU 2 with CodeT5
bash run_translation.sh 2 csharp cpp snippet codet5 train

To run the code-to-text and text-to-code generation experiments:

cd code/scripts
# train java-description program summarization on GPU 0 with CodeBERT
bash run_NL_PL.sh 0 java desc program codebert train
# train description-java program synthesis on GPU 2 with PLBART
bash run_NL_PL.sh 2 desc python program plbart eval
# train python-comment snippet summarization on GPU 2 with CodeT5
bash run_NL_PL.sh 2 java comment snippet codet5 eval
# train comment-python snippet synthesis on GPU 2 with CodeT5
bash run_NL_PL.sh 2 comment python snippet codet5 train

Translation Results

Snippet Level

CodeBLEUModelC++JavaPythonC#JSPHPC
C++Naive Copy-64.5634.7963.1953.1642.5684.2
CodeBERT-84.9474.5584.9982.7968.5645.46
PLBART-83.8574.8984.5783.1968.6283.95
CodeT5-86.3576.2885.8584.3169.8790.45
JavaNaive Copy70.85-3578.4357.8142.4969.74
CodeBERT87.27-58.3992.2684.6367.2639.94
PLBART87.31-58.390.7885.4267.4472.47
CodeT588.26-74.5992.5686.2269.0282.78
PythonNaive Copy39.2231.89-31.7938.3436.0237.79
CodeBERT80.4658.5-54.7257.3865.1410.7
PLBART80.1574.15-73.573.266.1262.15
CodeT581.5678.61-78.8977.7667.5468.67
C#Naive Copy69.7878.7134.77-57.8542.5366.73
CodeBERT86.9690.1556.92-84.3867.1840.43
PLBART84.986.2769.82-85.0267.375.74
CodeT588.0691.6973.85-85.9568.9781.09
JSNaive Copy60.8259.2538.8464.27-41.5655.84
CodeBERT84.3884.4252.5784.74-66.6633.29
PLBART84.4584.969.2985.05-67.0972.65
CodeT585.0685.4873.1585.96-68.4280.49
PHPNaive Copy36.3335.6124.6236.6735.55-35.95
CodeBERT82.5881.5769.2980.9679.94-28.45
PLBART83.8781.6671.177882.94-57.39
CodeT586.3385.1273.2284.5683.56-79.3
CNaive Copy83.9365.4638.4963.0555.5541.85-
CodeBERT45.8439.6913.5539.7129.8538.88-
PLBART82.5372.3549.1675.7875.0560.86-
CodeT590.2681.8163.8183.0579.7366.32-

Program Level

CodeBLEUModelC++JavaPythonC#JSPHPC
C++Naive Copy-57.3617.6858.0253.1618.9775.91
CodeBERT-74.7324.9676.3572.9550.421.84
PLBART-75.2670.1378.0161.8567.0172.59
CodeT5-80.0371.5681.7379.4870.4485.67
JavaNaive Copy64.25-39.8772.6857.8142.5162.48
CodeBERT79.36-8.5184.4376.0251.4221.22
PLBART81.41-66.2983.3480.1467.1263.37
CodeT584.26-69.5787.7980.6769.4478.78
PythonNaive Copy37.4729.78-27.5938.4235.4835.66
CodeBERT68.8728.22-17.823.6549.318.32
PLBART74.3867.8-66.0369.364.8529.05
CodeT578.8573.15-73.3571.867.556.35
C#Naive Copy6473.6340.09-57.7942.9660.87
CodeBERT78.5282.2510.82-75.4651.7621.63
PLBART80.1781.3767.02-79.8167.1257.6
CodeT583.5985.769.52-80.569.6377.35
JSNaive Copy53.8151.7742.3154.86-42.1149.04
CodeBERT75.4372.339.1975.47-52.0819.79
PLBART80.1976.9664.1878.51-67.2467.7
CodeT582.1479.9168.4281.77-68.7674.57
PHPNaive Copy34.6231.3325.6832.8132.26-33.45
CodeBERT50.1346.8116.9249.7548.12-22.19
PLBART79.472.7761.2674.1644.26-56.23
CodeT585.5582.0972.2683.7981.72-65.86
CNaive Copy78.459.4120.259.8353.5419.75-
CodeBERT21.721.2721.119.515.6431.71-
PLBART78.4213.455.5345.1531.4725.17-
CodeT588.17**76.

Code Summarization Results

Snippet Level

BLEUModelC++JavaPythonC#JSPHPC
Code SummarizationCodeBERT14.413.133.9614.0711.8111.255.84
PLBART14.7713.76814.3710.939.077.5
CodeT517.3616.6910.7617.4414.3413.426.63

Program Level

BLEUModelC++JavaPythonC#JSPHPC
Code SummarizationCodeBERT7.685.472.047.587.677.56.64
PLBART7.656.354.869.236.786.034.14
CodeT59.628.826.327.758.2310.512.84

Code Synthesis Results

Snippet Level

CodeBLEUModelC++JavaPythonC#JSPHPC
Code SynthesisCodeBERT22.725.5312.2623.4423.8736.4710.63
PLBART34.8932.234.6229.3629.6337.5622.88
CodeT535.4833.5121.130.6429.9936.3721.93

Program Level

CodeBLEUModelC++JavaPythonC#JSPHPC
Code SynthesisCodeBERT26.5131.1424.533.3729.0939.8418.08
PLBART44.0941.5533.7740.738.3343.016.72
CodeT545.1842.7335.0243.638.6645.0234.88