SnipGen: A Mining Repository Framework for Evaluating LLMs for Code
Daniel Rodriguez-Cardenas, Alejandro Velasco, Denys Poshyvanyk
TL;DR
SnipGen tackles the data-contamination problem in evaluating LLMs for code by mining recent GitHub commits to assemble fresh, method-level testbeds augmented with tailored prompts. It integrates a seven-dimensional data-point schema with eight prompt templates, enabling single- and multi-step prompting across code completion, commit generation, and code summarization. The framework generates six SE-task testbeds from ~227K data points and demonstrates practical utility through case studies (Galeras, SyntaxEval, ASTxplainer), highlighting how prompt design and model characteristics influence performance and explainability. By releasing the framework, generated testbeds, and prompt-generated datasets, SnipGen provides a reproducible, contamination-aware evaluation pipeline for advancing robust LLM assessment in software engineering contexts.
Abstract
Language Models (LLMs), such as transformer-based neural networks trained on billions of parameters, have become increasingly prevalent in software engineering (SE). These models, trained on extensive datasets that include code repositories, exhibit remarkable capabilities for SE tasks. However, evaluating their effectiveness poses significant challenges, primarily due to the potential overlap between the datasets used for training and those employed for evaluation. To address this issue, we introduce SnipGen, a comprehensive repository mining framework designed to leverage prompt engineering across various downstream tasks for code generation. SnipGen aims to mitigate data contamination by generating robust testbeds and crafting tailored data points to assist researchers and practitioners in evaluating LLMs for code-related tasks. In our exploratory study, SnipGen mined approximately 227K data points from 338K recent code changes in GitHub commits, focusing on method-level granularity. SnipGen features a collection of prompt templates that can be combined to create a Chain-of-Thought-like sequence of prompts, enabling a nuanced assessment of LLMs' code generation quality. By providing the mining tool, the methodology, and the dataset, SnipGen empowers researchers and practitioners to rigorously evaluate and interpret LLMs' performance in software engineering contexts.
