AI模型“个性”:代码质量与安全的关键影响因素

Theregister

旨在辅助编码的生成式AI模型展现出独特的“个性”,这些“个性”深刻影响着它们所生成代码的质量、安全性及可维护性。尽管这些模型拥有共同的基本优势和劣势,但其个体编码风格的细微差异导致了不同的结果,包括生成有问题“代码异味”——这些设计模式预示着更深层次的结构性问题。

根据代码质量公司Sonar的说法,对于利用大型语言模型(LLMs)进行辅助的软件开发人员而言,理解这些独特性至关重要。Sonar首席执行官Tariq Shaukat强调,需要超越原始性能,以全面把握模型的能力范围。他指出,识别每个模型的优势及其犯错倾向对于安全可靠的部署至关重要。

Sonar最近对五款知名大语言模型进行了测试:Anthropic的Claude Sonnet 4和3.7;OpenAI的GPT-4o;Meta的Llama 3.2 90B;以及开源的OpenCoder-8B。评估涉及4,442个Java编程任务,涵盖了一系列旨在评估编码熟练度的挑战。这些发现发表在一份题为《领先LLM的编码个性》的报告中,其结论与更广泛的行业观点基本一致:生成式AI模型在严格的人工监督和审查下使用时,是宝贵的工具。

受测试的大语言模型在标准基准测试中展现出不同程度的能力。例如,在HumanEval基准测试中,Claude Sonnet 4取得了令人印象深刻的95.57%通过率,而Llama 3.2 90B则落后于61.64%。Claude的强劲表现表明其生成有效、可执行代码的能力很高。此外,像Claude 3.7 Sonnet(72.46%的正确解决方案)和GPT-4o(69.67%)这样的模型在需要应用算法和数据结构的任务中展现出技术实力,并证明能够跨不同编程语言迁移概念。

尽管有这些优势,报告强调了一个共同的关键缺陷:普遍缺乏安全意识。所有评估过的大语言模型都产生了惊人高比例的漏洞,且经常伴随最高级别的严重性评级。在一个包括“阻塞级(Blocker)”、“关键(Critical)”、“主要(Major)”和“次要(Minor)”的等级体系中,生成的漏洞主要集中在“阻塞级”,这意味着它们可能导致应用程序崩溃。对于Llama 3.2 90B,超过70%的漏洞被评为“阻塞级”;GPT-4o的这一数字为62.5%;而Claude Sonnet 4则接近60%。

最常见的缺陷包括路径遍历和注入漏洞——在Claude Sonnet 4生成的代码中占34.04%的问题——其次是硬编码凭据、密码学配置错误和XML外部实体注入。这种在注入漏洞上的挣扎源于模型无法有效追踪不受信任数据流向代码敏感部分的能力,这是一种超出其典型处理范围的复杂非局部分析。此外,它们经常生成硬编码的秘密,因为此类缺陷存在于其训练数据中。由于缺乏对软件工程规范的全面理解,这些模型也经常忽略关闭文件流,导致资源泄漏,并表现出对混乱、复杂、难以维护的代码的偏好,其特点是存在大量“代码异味”。

Sonar的分析揭示了每个模型的独特“个性”:

Claude 4 Sonnet 因其卓越的技能而赢得了“资深架构师”的称号,它通过了77.04%的基准测试。其输出通常冗长且高度复杂,反映出经验丰富的工程师倾向于实现复杂的安全防护、错误处理和高级功能。

GPT-4o 被称为“高效通才”,被描述为一个可靠、中规中矩的开发人员。虽然它通常避免最严重的错误,但容易犯控制流错误。

OpenCoder-8B 表现为“快速原型师”。它生成最简洁的代码,行数最少,但问题密度最高,每千行代码有32.45个问题。

Llama 3.2 90B 被标记为“未兑现的承诺”,其基准测试通过率平庸,仅为61.47%,且“阻塞级”严重性漏洞的比例高达70.73%,令人担忧。

最后,Claude 3.7 Sonnet 被命名为“平衡的先行者”。它拥有72.46%的合格基准测试通过率和高注释密度(16.4%)。尽管有这些优点,该模型也产生了相当大比例的“阻塞级”严重性漏洞。有趣的是,虽然Claude 4 Sonnet是一个较新的模型,在通用基准测试中表现更好,但它创建的安全漏洞被评为“阻塞级”严重性的可能性几乎是其前身的两倍。

鉴于这些固有的挑战,Sonar的报告总结道,对于验证AI生成的代码而言,健全的治理和彻底的代码分析不仅是可取的,更是势在必行的。