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 测试输入生成、基于符号执行的过程、缺陷检测.
   184   185   186   187   188   189   190   191   192   193   194