Skip to content

Latest commit

 

History

History
116 lines (93 loc) · 6.56 KB

File metadata and controls

116 lines (93 loc) · 6.56 KB

Clone Benchmarking: ASTNN vs. CodeBERT

Identificación de clones de código mediante árboles de sintaxis frente a transformers.

Repositorio utilizado para la ejecución del benchmark entre la arquitectura ad-hoc de ASTNN frente a un transformer preentrenado con código como lo es CodeBERT. El análisis experimental y conceptual del flujo de trabajo se encuentra en nuestra memoria de trabajo: "Más Allá de la Sintaxis: Evaluación de CodeBERT frente a Métodos Basados en AST en BigCloneBench" disponible aquí.

🚀 Guía de Inicio Rápido

1. Preparación de los datos

  1. Descarga el dataset: Enlace a Google Drive

  2. Añádelos al proyecto: Descomprime los archivos y añádelos a las siguientes carpetas del directorio:

    Clone_Benchmarking/
    │
    ├── astnn/
    │   ├── ...
    │   ├── bcb_funcs_all.tsv       <- Enlace
    │   ├── bcb_pair_ids.pkl        <- Enlace
    │   ├── ast.pkl                 <- Enlace
    │   └── data
    │       └── train
    │           ├── blocks.pkl      <- Enlace
    │           └── train_.pkl      <- Enlace
    │
    └── codebert/
        └── codebert_train_10.csv   <- Enlace
    

2. Crear entorno virtual (recomendado)

En la terminal Windows, dentro de la carpeta del proyecto:

python -m venv venv
venv\Scripts\activate

En la terminal Linux o Mac, dentro de la carpeta del proyecto:

python3 -m venv venv
source venv/bin/activate

3. Instalación de dependencias

pip install -r requirements.txt

4. Ejecuta el benchmarking

python3 evaluation.py

📂 Estructura del proyecto

    Clone_Benchmarking/
    │
    ├── README.md
    ├── requirements.txt
    ├── evaluation.py
    ├── resultados_benchmarking.txt         <- Generado con evaluation.py
    ├── .gitignore
    ├── LICENSE
    │
    ├── data_scripts/
    │   ├── reduce_dataset.py
    │   └── README.md
    │
    ├── astnn/
    │   ├── model.py
    │   ├── train.py
    │   ├── pipeline.py
    │   ├── tree.py
    │   ├── utils.py
    │   ├── config.py
    │   ├── bcb_funcs_all.tsv               <- Enlace
    │   ├── bcb_pair_ids.pkl                <- Enlace
    │   ├── ast.pkl                         <- Enlace
    │   └── data
    │       └── train
    │           ├── blocks_10percent.pkl    <- Enlace
    │           └── train_.pkl              <- Enlace
    │
    └── codebert/
        ├── train_codebert.py
        └── codebert_train_10.csv           <- Enlace

🏷️ Créditos

@inproceedings{zhang2019novel,
title={A novel neural source code representation based on abstract syntax tree},
author={Zhang, Jian and Wang, Xu and Zhang, Hongyu and Sun, Hailong and Wang, Kaixuan and Liu, Xudong},
booktitle={Proceedings of the 41st International Conference on Software Engineering},
pages={783--794},
year={2019},
organization={IEEE Press}
}

Autores: Miguel Gallego, Andrea Mejía e Isabel Escribano

Fecha: 26 Jan 2026

Logo UPM