On the Limitations of Embedding Based Methods for Measuring Functional Correctness for Code Generation
Atharva Naik
TL;DR
This study critically evaluates embedding-based evaluation of NL2Code systems, focusing on CodeBERTScore as a proxy for functional correctness. Using HumanEval and MBPP across ten diverse models, it shows only a weak link to actual execution success while strongly reflecting editing effort, challenging the use of embedding-based metrics as functional correctness surrogates. The work demonstrates robustness to perturbations but limited discriminative power for correctness and advocates pursuing reference-free or execution-based evaluation methods (e.g., CodeScore, RealHumanEval) to better capture real-world coding productivity and correctness. Overall, embedding-based metrics appear more suitable for measuring syntactic similarity and editing effort than true functional equivalence in generated code.
Abstract
The task of code generation from natural language (NL2Code) has become extremely popular, especially with the advent of Large Language Models (LLMs). However, efforts to quantify and track this progress have suffered due to a lack of reliable metrics for functional correctness. While popular benchmarks like HumanEval have test cases to enable reliable evaluation of correctness, it is time-consuming and requires human effort to collect test cases. As an alternative several reference-based evaluation metrics have been proposed, with embedding-based metrics like CodeBERTScore being touted as having a high correlation with human preferences and functional correctness. In our work, we analyze the ability of embedding-based metrics like CodeBERTScore to measure functional correctness and other helpful constructs like editing effort by analyzing outputs of ten models over two popular code generation benchmarks. Our results show that while they have a weak correlation with functional correctness (0.16), they are strongly correlated (0.72) with editing effort.
