Skip to content

gallegomiguel/Clone_Benchmark

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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

About

Proyecto de comparación de redes neuronales profundas para la detección de clones de código.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages