Page 16 - 《软件学报》2026年第7期
P. 16
赵英全 等: 基于大语言模型的 Java 新特性测试程序生成 2701
常会包含展示新特性典型使用方法的代码示例, 这对于生成高质量、真实有效的新特性代码片段至关重要.
JEP 126: Lambda Expressions & Virtual Extension Methods 标题
…
Release 8 版本信息
Component tools / javac
Summary
Add lambda expressions (closures) and supporting features, including method references,
enhanced type inference, and virtual extension methods, to the Java programming 总结
language and platform…
Motivation
…
A prototypical example of the internal iteration style is a sequence of filter-map-reduce
operations such as:
动机
int maxFooWeight =
collection.filter ( /* isFoo Predicate as a lambda */)
.map ( /* Map a Foo to its weight with a lambda */)
.max (); /* Reduction step */…
Description
The in-progress OpenJDK project page for Project Lambda and corresponding JSR have the most 描述
up-to-date information about the details of the effort…
Goals Non-Goals Alternatives Testing Risks and Assumptions Dependences Impact
图 3 JEP 126 提案内容示例
然而, 直接将完整的 JEP 描述文本输入大模型进行处理, 往往会面临两个挑战: 一方面, JEP 中包含大量背景
性、实现性或非关键性的信息, 容易干扰大模型对测试重点的识别, 削弱生成结果对目标语言特性的聚焦程度, 从
而影响测试的有效性; 另一方面, JEP 文本通常篇幅较长, 直接传入会显著增加 Token 消耗, 造成计算资源的浪费,
进而降低测试的效率. 因此, 有必要对 JEP 内容进行精炼和结构化处理, 过滤掉与目标无关的信息, 确保大模型能
够聚焦于被测语言特性本身. 为此, LumiX 充分利用大模型在自然语言理解与压缩方面的能力, 对 Java 语言中新
引入特性的使用方式进行提炼与总结, 生成高度浓缩的使用描述, 从而在保证信息完整性的前提下显著提升测试
任务的针对性与效率. 具体来说, LumiX 设计了一套针对 JEP 解析的大模型提示词模板, 用于自动提取并总结对
JEP 的使用描述. 为了最大程度地保障提取信息的准确性和一致性, LumiX 采用提示词工程 (prompt engineering)
中的常用实践方法, 系统化地构造提示词的不同要素, 包括角色设定、任务描述、提案内容以及输出格式的定义.
以此引导大模型正确、高效地理解 JEP, 并总结出新特性的使用描述, 为后续代码生成任务提供参考.
图 4 展示了 LumiX 生成新特性使用的总结提示词示例. 在该示例中, LumiX 首先将大模型设定为精通自然语
言处理, 编程语言以及软件工程的角色, 以确保大模型能够从专业的角度出发, 准确地捕获 JEP 中的关键信息. 现
有研究表明 [37] , 合理的角色设定能够有效提升大模型的任务完成质量, 使其在特定的任务中表现更加出色. 通过
赋予其专家身份, 可以引导大模型用更精确的术语总结 JEP 使用描述, 减少无关信息的干扰. 其次, LumiX 在提示
词中明确指定具体的任务, 即总结 JEP 中的新特性使用描述, 并强调总结的内容将用于后续的代码生成任务. 最
后, 为了确保总结结果的结构化和可用性, LumiX 定义了严格的输出格式, 输出内容包括新特性的标题、发布版本、
描述以及示例代码等信息.
角色设定: You are an expert in natural language processing, programming language theory, and
software engineering with large-scale language models.
任务描述: Parse Java Enhancement Proposal (JEP) documents and extract key information about new
language features, synthesize proposal information, and form a structured summary
suitable for program generation tasks.
提案内容: “JEP 126: Lambda Expressions & Virtual Extension Methods…”
输出格式: Extract the key points and return them in JSON, for example: “…”
图 4 JEP 126 提案总结提示词示例

