Page 195 - 《软件学报》2026年第7期
P. 195
2880 软件学报 2026 年第 37 卷第 7 期
估 LLM 能力的重要平台, 提供了最新的 LLM 能力评估数据. 我们于 2024 年 8 月 1 日从该平台获取了模型能力
排名, 并根据表现选取了排名前 11 的模型, 同时遵循每个机构最多选取 3 个模型的标准.
表 3 展示了针对不同的代码生成任务, 使用 3 种不同缺陷检测方法对每个 LLM 生成程序进行检测时的平均
测试通过率. 其中, 模型的成功率 (success rate) 和参数规模 (size) 在一定程度上代表了不同模型的代码生成能力,
模型成功率指的是每个模型在响应指定提示时生成的可成功编译程序占所有生成程序的百分比. 参数规模指的是
每个 LLM 的参数数量, 以 10 亿 (B) 为单位. 对于未正式公开参数数量的模型, 我们使用了非官方渠道的估计值,
并用“*”标注以表示其非官方性. 对于某些无法获得参数数量的私有模型, 我们用“-”表示该数据缺失.
表 3 各 LLM 生成的可编译程序的平均测试通过率
平均测试通过率 (%)
模型 成功率 (%) 参数规模 (B)
HumanEval EvalPlus SymExGen
Claude-3.5-Sonnet 97.58 - 76.54 54.32 49.38
GPT-4o 96.83 - 74.39 58.54 53.66
GPT-4-Turbo 95.97 - 71.25 55.63 51.88
DeepSeek-Coder-V2 95.90 236 77.71 58.60 54.14
DeepSeek-Chat-V2 94.40 236 61.01 46.54 40.88
Yi-Large 94.40 34 69.43 54.14 50.96
Gemini-1.5-Pro 92.74 120* 50.32 38.22 35.03
Claude-3-Opus 91.87 100* 61.94 49.03 44.52
GLM-4 90.16 9 43.42 31.58 29.61
Gemini-1.5-Flash 83.20 32* 46.90 28.28 25.52
Claude-3-Sonnet 71.31 70* 32.06 25.19 20.61
本实验中包含每个代码生成任务的标准实现程序, 作为判断测试结果是否正确的参照. 测试通过率指标表示
的是在测试中完全正确的 LLM 生成程序占所有生成程序的百分比. 因此, 对于用不同方法测试的同一批 LLM 生
成程序而言, 较低的通过率表明相应的测试方法检测到的错误程序数量更多, 反映出测试方法的缺陷检测能力更
强. 相反, 对于不同 LLM 生成的程序来说, 较低的通过率则表明该模型的代码生成能力较弱, 正确输出的比例
更低.
表 3 中的测试通过率数据显示, 随着新测试方法的逐步引入 (从 HumanEval 到 EvalPlus, 再到 SymExGen), 各
模型的测试通过率依次下降. 这一趋势表明 3 种方法的缺陷检测能力逐步增强. 本文提出的 SymExGen 方法有效
增强了对软件供应链中 LLM 生成代码的缺陷检测能力, 进而提升了软件的可靠性. 值得注意的是, SymExGen 方
法将 HumanEval 和 EvalPlus 的平均测试通过率分别从 60.45% 和 45.46% 降低至 41.47%, 这表明 SymExGen 方法
在检测 LLM 生成程序缺陷方面更加有效.
图 6 展示了所有模型在 166 个代码生成任务上的平均测试通过率. 图中较长的灰色柱子表示集成符号执行的
方法在降低测试通过率方面表现更为突出. 从图中可以看出, 本文方法在多个任务场景下均能有效检测生成代码
中的缺陷, 具备较强的通用性和适应性.
100
90 HumanEval
EvalPlus
平均测试通过率 (%) 60
80
SymExGen
70
50
40
30
20
10
0
166个代码生成任务 (根据HumanEval的测试通过率由低到高排序)
图 6 针对 LLM 在 166 个代码生成任务上生成的程序, 3 种方法的平均测试通过率

