STALL+: Boosting LLM-based Repository-level Code Completion with Static Analysis

Fuente: arXiv
Guardado en:
Detalles Bibliográficos
Autores principales: Liu, Junwei, Chen, Yixuan, Liu, Mingwei, Peng, Xin, Lou, Yiling
Formato: Preprint
Publicado: 2024
Materias:
Acceso en línea:
Etiquetas: Agregar Etiqueta
Sin Etiquetas, Sea el primero en etiquetar este registro!
_version_ 1866907941803655168
author Liu, Junwei
Chen, Yixuan
Liu, Mingwei
Peng, Xin
Lou, Yiling
author_facet Liu, Junwei
Chen, Yixuan
Liu, Mingwei
Peng, Xin
Lou, Yiling
contents Repository-level code completion is challenging as it involves complicated contexts from multiple files in the repository. To date, researchers have proposed two technical categories to enhance LLM-based repository-level code completion, i.e., retrieval-augmented generation (RAG) and static analysis integration. This work performs the first study on the static analysis integration in LLM-based repository-level code completion by investigating both the effectiveness and efficiency of static analysis integration strategies across different phases of code completion. We first implement a framework STALL+, which supports an extendable and customizable integration of multiple static analysis strategies into the complete pipeline of LLM-based repository-level code completion; and based on STALL+, we perform extensive experiments by including different code LLMs on the latest repository-level code completion benchmark CrossCodeEval. Our findings show that integrating file-level dependencies in prompting phase performs the best while the integration in post-processing phase performs the worse. Additionally, we observe different improvements from static analysis between dynamic languages and static languages, i.e., the best combination is prompting-phase with decoding-phase integration for Java while the best combination is prompting-phase with post-processing-phase integration for Python given the limitations of statically analyzing dynamic languages. Additionally, we find the complementarity between RAG and static analysis integration as well as their cost-effectiveness after combination.
format Preprint
id arxiv_https___arxiv_org_abs_2406_10018
institution arXiv
publishDate 2024
record_format arxiv
spellingShingle STALL+: Boosting LLM-based Repository-level Code Completion with Static Analysis
Liu, Junwei
Chen, Yixuan
Liu, Mingwei
Peng, Xin
Lou, Yiling
Software Engineering
Repository-level code completion is challenging as it involves complicated contexts from multiple files in the repository. To date, researchers have proposed two technical categories to enhance LLM-based repository-level code completion, i.e., retrieval-augmented generation (RAG) and static analysis integration. This work performs the first study on the static analysis integration in LLM-based repository-level code completion by investigating both the effectiveness and efficiency of static analysis integration strategies across different phases of code completion. We first implement a framework STALL+, which supports an extendable and customizable integration of multiple static analysis strategies into the complete pipeline of LLM-based repository-level code completion; and based on STALL+, we perform extensive experiments by including different code LLMs on the latest repository-level code completion benchmark CrossCodeEval. Our findings show that integrating file-level dependencies in prompting phase performs the best while the integration in post-processing phase performs the worse. Additionally, we observe different improvements from static analysis between dynamic languages and static languages, i.e., the best combination is prompting-phase with decoding-phase integration for Java while the best combination is prompting-phase with post-processing-phase integration for Python given the limitations of statically analyzing dynamic languages. Additionally, we find the complementarity between RAG and static analysis integration as well as their cost-effectiveness after combination.
title STALL+: Boosting LLM-based Repository-level Code Completion with Static Analysis
topic Software Engineering
url https://arxiv.org/abs/2406.10018