Leveraging LLMs for Multi-File DSL Code Generation: An Industrial Case Study

📄 arXiv: 2604.24678v1 📥 PDF

作者: Sivajeet Chand, Kevin Nguyen, Peter Kuntz, Alexander Pretschner

分类: cs.SE, cs.AI

发布日期: 2026-04-27

备注: Accepted at EASE'26


💡 一句话要点

利用LLM生成多文件DSL代码:宝马工业案例研究

🎯 匹配领域: 支柱九:具身大模型 (Embodied Foundation Models)

关键词: 多文件代码生成 领域特定语言 大型语言模型 代码库级更改 参数高效微调

📋 核心要点

  1. 现有方法难以利用LLM生成跨多文件的DSL代码,尤其是在企业级代码库中,缺乏对文件间依赖关系的有效建模。
  2. 论文提出了一种端到端的pipeline,将DSL文件夹结构编码为JSON,并利用指令调优的LLM进行多文件代码生成和修改。
  3. 实验表明,通过QLoRA微调,LLM在多文件输出上实现了高精确匹配准确率和结构保真度,显著提升了DSL代码生成的质量。

📝 摘要(中文)

大型语言模型(LLMs)在通用代码生成方面表现出色,但它们在企业领域特定语言(DSLs)中的适用性仍未得到充分探索,特别是对于从单个自然语言(NL)指令生成跨多个文件和文件夹结构的代码库级更改。我们报告了宝马公司的一个工业案例研究,该研究将面向代码的LLM调整为生成和修改基于Xtext的DSL的项目根DSL工件,该DSL驱动下游Java/TypeScript代码生成。我们开发了一个端到端pipeline,用于数据集构建、多文件任务表示、模型适配和评估。我们将DSL文件夹层次结构编码为结构化的、路径保留的JSON,从而允许在代码库规模上进行单响应生成,并学习跨文件依赖关系。我们评估了两个指令调优的代码LLM(Qwen2.5-Coder和DeepSeek-Coder,7B)在三种配置下:基线提示、一次性上下文学习和参数高效微调(QLoRA)。除了标准相似性指标外,我们还引入了特定于任务的度量,以评估编辑正确性和代码库结构保真度。微调在模型和指标上产生了最显著的收益,在我们的多文件输出保留集上实现了高精确匹配准确率、显著的编辑相似性和1.00的结构保真度。同时,一次性上下文学习提供了比基线提示更小但一致的改进。我们通过专家开发者调查和使用现有代码生成器的基于执行的检查进一步验证了实际效用。

🔬 方法详解

问题定义:论文旨在解决企业级DSL代码生成中,大型语言模型难以处理跨多个文件和文件夹结构的代码库级更改的问题。现有方法无法有效建模文件间的依赖关系,导致生成的代码难以满足实际需求。

核心思路:论文的核心思路是将DSL文件夹层次结构编码为结构化的、路径保留的JSON格式,从而允许LLM在代码库规模上进行单响应生成,并学习跨文件依赖关系。通过这种方式,LLM可以更好地理解代码库的整体结构和文件之间的关系,从而生成更准确、更完整的代码。

技术框架:论文提出的技术框架包含以下几个主要模块:1) 数据集构建:构建包含自然语言指令和对应的多文件DSL代码的数据集。2) 多文件任务表示:将DSL文件夹层次结构编码为JSON格式。3) 模型适配:使用指令调优的LLM(Qwen2.5-Coder和DeepSeek-Coder)进行训练。4) 评估:使用标准相似性指标和特定于任务的度量(编辑正确性和代码库结构保真度)评估模型性能。

关键创新:论文最重要的技术创新点在于将DSL文件夹层次结构编码为JSON格式,从而允许LLM学习跨文件依赖关系。这种方法使得LLM能够更好地理解代码库的整体结构,从而生成更准确、更完整的代码。此外,论文还提出了特定于任务的度量,用于评估编辑正确性和代码库结构保真度。

关键设计:论文使用了QLoRA(Quantization-aware Low-Rank Adaptation)进行参数高效微调,降低了训练成本。实验中,使用了Qwen2.5-Coder和DeepSeek-Coder (7B) 两个模型,并比较了基线提示、一次性上下文学习和QLoRA微调三种配置。评估指标包括精确匹配准确率、编辑相似性和结构保真度。

🖼️ 关键图片

fig_0
fig_1
fig_2

📊 实验亮点

实验结果表明,通过QLoRA微调,LLM在多文件输出上实现了显著的性能提升。在保留集上,模型实现了高精确匹配准确率和1.00的结构保真度。此外,一次性上下文学习也提供了比基线提示更小但一致的改进。专家开发者调查和基于执行的检查进一步验证了该方法的实际效用。

🎯 应用场景

该研究成果可应用于各种领域特定语言(DSL)的代码生成,尤其是在需要处理复杂文件结构和跨文件依赖关系的企业级应用中。它可以提高代码生成的效率和质量,降低开发成本,并加速软件开发过程。未来,该方法可以扩展到其他类型的代码生成任务,例如API文档生成、测试用例生成等。

📄 摘要(原文)

Large language models (LLMs) perform strongly on general-purpose code generation, yet their applicability to enterprise domain-specific languages (DSLs) remains underexplored, especially for repository-scale change generation spanning multiple files and folder structures from a single natural-language (NL) instruction. We report an industrial case study at BMW that adapts code-oriented LLMs to generate and modify project-root DSL artifacts for an Xtext-based DSL that drives downstream Java/TypeScript code generation. We develop an end-to-end pipeline for dataset construction, multi-file task representation, model adaptation, and evaluation. We encode DSL folder hierarchies as structured, path-preserving JSON, allowing single-response generation at repository scale and learning cross-file dependencies. We evaluate two instruction-tuned code LLMs (Qwen2.5-Coder and DeepSeek-Coder, 7B) under three configurations: baseline prompting, one-shot in-context learning, and parameter-efficient fine-tuning (QLoRA). Beyond standard similarity metrics, we introduce task-specific measures that assess edit correctness and repository structural fidelity. Fine-tuning yields the most significant gains across models and metrics, achieving high exact-match accuracy, substantial edit similarity, and structural fidelity of 1.00 on our held-out set for multi-file outputs. At the same time, one-shot in-context learning provides smaller but consistent improvements over baseline prompting. We further validate practical utility via an expert developer survey and an execution-based check using the existing code generator.