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

2024年06月14日
  • 简介
    仓库级代码补全具有挑战性,因为它涉及到仓库中多个文件的复杂上下文。迄今为止,研究人员提出了两种技术类别来增强基于LLM的仓库级代码补全,即检索增强生成(RAG)和静态分析集成。本研究通过调查静态分析集成在基于LLM的仓库级代码补全中的有效性和效率,进行了第一项静态分析集成的研究。我们首先实现了一个支持可扩展和可定制多个静态分析策略集成到LLM-based仓库级代码补全完整流程的框架STALL+;基于STALL+,我们通过在最新的仓库级代码补全基准CrossCodeEval上包括不同的代码LLMs进行了广泛的实验。我们的研究结果表明,在提示阶段集成文件级依赖性的效果最好,而在后处理阶段集成的效果最差。此外,我们观察到静态分析在动态语言和静态语言之间有不同的改进,即对于Java,最佳组合是提示阶段和解码阶段的集成,而对于Python,最佳组合是提示阶段和后处理阶段的集成,考虑到静态分析动态语言的局限性。此外,我们发现RAG和静态分析集成之间的互补性以及它们在组合后的成本效益。
  • 图表
  • 解决问题
    静态分析集成在LLM-based代码补全中的有效性和效率如何?
  • 关键思路
    本文通过对不同阶段的代码补全进行研究,提出了一个可扩展和可定制化的静态分析框架STALL+,并在CrossCodeEval数据集上进行了广泛的实验,发现在提示阶段集成文件级依赖的效果最好。此外,针对静态语言和动态语言,我们观察到不同的静态分析策略的不同改进效果。最后,我们发现RAG和静态分析集成之间的互补性以及它们的成本效益。
  • 其它亮点
    本文提出了一个可扩展和可定制化的静态分析框架STALL+,并在CrossCodeEval数据集上进行了广泛的实验。实验结果表明,在提示阶段集成文件级依赖的效果最好。此外,针对静态语言和动态语言,我们观察到不同的静态分析策略的不同改进效果。最后,我们发现RAG和静态分析集成之间的互补性以及它们的成本效益。
  • 相关研究
    最近的相关研究包括:1. CodeBERT: A Pre-Trained Model for Programming and Natural Language Processing;2. Deep Code Comment Generation;3. Code Completion with Neural Attention and Pointer Networks;4. A Survey of Machine Learning for Big Code and Naturalness。
PDF
原文
点赞 收藏 评论 分享到Link

沙发等你来抢

去评论