Page 189 - 《软件学报》2026年第7期
P. 189
2874 软件学报 2026 年第 37 卷第 7 期
别 LLM 生成代码中的输入参数并进行符号挂载, 从而制导符号执行生成针对性更强的边界测试用例, 解决传统随
机测试或模糊测试方法在处理复杂逻辑路径时覆盖率不足的问题.
(3) 在 LMSYS Chatbot Arena 中排名前 11 的主流 LLM 上进行了实验评估, 实验结果表明本文方法可以有效
提升 LLM 生成代码的正确性, 增强基础软件供应链的安全性.
1 相关工作
1.1 LLM 代码生成
近年来, 利用 LLM 进行代码生成以帮助开发者进行智能化基础软件构造并提升编程效率已经变得愈加普遍 [20−22] .
基于大规模开源代码数据集, 许多企业与研究机构利用 Transformer 架构训练出包含数百亿甚至上千亿参数的
LLM. OpenAI 推出的 Codex 模型是该领域的先行者, 其使用 GPT 架构预训练了一个专为代码生成而设计的大模
型. 随后, 其他预训练模型也取得了显著进展, 包括 OpenAI 的 GPT-4 [23] 、Anthropic 的 Claude 3 系列模型 [24] 、Meta
的 Code Llama [25] 、Google 的 Gemini 系列模型 [26,27] 、DeepSeek 的 DeepSeek-V2 系列模型 [28] 以及清华大学的
GLM 系列模型 [29,30] . 这些 LLM 展现了通过自然语言描述生成代码的卓越能力, 极大地辅助了基础软件构造工作,
提升了软件开发人员的开发效率.
1.2 LLM 代码生成缺陷检测框架
为了检测 LLM 生成代码中的缺陷, 提升生成代码的正确性, 研究人员提出了多个基准测试框架. HumanEval [7]
是评估 LLM 代码生成能力的开创性框架, 它使用 164 个手动创建的 Python 测试用例及其标准实现, 对大模型生
成的代码进行缺陷检测. 在 HumanEval 的基础上, EvalPlus [15] 通过 ChatGPT 生成种子测试输入, 并对其进行变异
(mutation) 操作以生成更多测试用例, 从而对 LLM 生成的代码进行更为严格的缺陷检测. 此外, HumanEval-X [14] 、
Spider [31] 和 MultiPL-E [32] 等框架则将测试用例扩展到多种编程语言, 以便对 LLM 进行更广泛的跨语言评测. 不同
于这些框架, 我们将符号执行技术 [16−19] 引入对 LLM 生成代码的缺陷检测中, 实现了更全面和严格的评估. 此外,
我们的方法不依赖于传统方法中所需的程序标准实现, 而是可以完全根据自然语言描述和函数模板生成程序测试
输入与预期输出, 显著提升了缺陷检测的可扩展性与通用性.
1.3 自动化测试用例生成
自动化测试用例生成技术已广泛应用于软件缺陷检测等领域. 传统的黑盒测试方法, 如模糊测试 [33,34] , 不考虑
被测程序的内部实现, 导致生成的测试用例具有较高的随机性. 与之相反, 白盒测试方法则通过分析程序源代码生
成更高质量的测试用例. 符号执行 [16,35] 作为白盒测试的代表性技术之一, 目前已被广泛应用于软件供应链安全中
的漏洞分析与缺陷检测. 例如: 在网络服务器、文件系统与设备驱动程序等关键基础软件中, 符号执行技术被用于
系统性探索程序路径, 从而识别潜在软件缺陷 [18] . 此外, 最新研究表明, 符号执行在恶意软件分类、数值缺陷检测
等供应链安全场景中也具有良好的检测性能 [36−38] . 这些研究充分体现了符号执行在提升软件供应链的安全性与可
靠性方面发挥了重要作用 [39−41] . 本文方法利用符号执行技术在执行过程中为每条路径收集路径约束, 通过求解路
径约束, 生成针对深度执行路径的测试用例, 提升了对 LLM 生成代码的测试覆盖率和缺陷检测能力.
2 软件供应链安全中的 LLM 生成代码逻辑性缺陷检测方法
为了提升软件供应链中 LLM 生成代码的正确性与安全性, 本文提出一种融合符号执行的 LLM 生成代码缺
陷检测方法. 该方法引入符号执行挂载机制, 使符号执行能够自动适配 LLM 生成代码的输入参数, 从而生成针对
性更强的边界测试用例. 此外, 方法还结合 EvalPlus 生成的测试输入与 GPT 生成的程序预期输出, 实现对生成代
码的高覆盖率测试和缺陷检测, 有效提升基础软件供应链中 LLM 生成代码的功能正确性与安全性. 该方法综合利
用现有 LLM 代码生成缺陷检测框架与符号执行技术, 增强对复杂程序路径的覆盖能力. 图 2 展示了该方法的整体
流程, 主要包括 4 个阶段: LLM 代码生成、EvalPlus 测试输入生成、基于符号执行的过程、缺陷检测.

