Code Execution with Pre-trained Language Models
This work addresses a fundamental gap in code intelligence for developers and researchers by integrating execution traces into pre-trained models, though it is incremental as it builds on existing Transformer architectures.
The paper tackles the problem of enabling pre-trained language models to understand and perform code execution, which is often overlooked in code intelligence, by developing CodeExecutor, a Transformer model that uses code execution pre-training and curriculum learning, achieving promising performance on a new Python dataset and showing benefits for tasks like zero-shot code-to-code search and text-to-code generation.
Code execution is a fundamental aspect of programming language semantics that reflects the exact behavior of the code. However, most pre-trained models for code intelligence ignore the execution trace and only rely on source code and syntactic structures. In this paper, we investigate how well pre-trained models can understand and perform code execution. We develop a mutation-based data augmentation technique to create a large-scale and realistic Python dataset and task for code execution, which challenges existing models such as Codex. We then present CodeExecutor, a Transformer model that leverages code execution pre-training and curriculum learning to enhance its semantic comprehension. We evaluate CodeExecutor on code execution and show its promising performance and limitations. We also demonstrate its potential benefits for code intelligence tasks such as zero-shot code-to-code search and text-to-code generation. Our analysis provides insights into the learning and generalization abilities of pre-trained models for code execution.