-
研究背景:
随着大型语言模型(LLMs)在软件开发任务中的潜力逐渐显现,例如代码补全、程序修复和测试用例生成,将LLMs更深入地整合到开发者的工作流程中以解决更具挑战性的任务成为了可能。代码审查是软件开发中早期发现安全缺陷的关键阶段。LLMs的快速发展为自动化安全缺陷检测开辟了新途径。与传统技术相比,LLMs在生成自然语言输出和支持用户友好交互方面具有优势。它们在与人类协作进行复杂推理任务(如安全代码审查)方面的潜力值得研究。然而,先前的研究显示,LLMs在现实世界数据集中的安全缺陷检测能力有限。一些工作通过增强提示或向模型添加组件来提高LLMs的有效性,但大多数研究仅关注评估和提高LLMs的性能,而没有深入探讨潜在问题。特别是,LLMs在现实世界代码审查中识别安全缺陷时生成的响应中存在的质量问题,这些质量问题可以作为未来改进的指标,尚未被探索。 -
过去方案和缺点:
以往的研究主要集中在评估和提高LLMs的性能上,而没有深入分析LLMs生成的响应中存在的问题。例如,ChatGPT在安全缺陷检测方面的性能有限,且在现实世界数据集上的表现不佳。此外,尽管有研究尝试通过增强提示或模型组件来提升LLMs的效果,但这些方法并未充分解决LLMs在安全代码审查中的实际应用问题。 -
本文方案和步骤:
本研究选择了三种代表性的LLMs(Gemini Pro、GPT-4和GPT-3.5),并在五个不同的提示下比较了它们在安全缺陷检测中的性能。研究使用了包含来自OpenStack的Nova和Neutron项目以及Qt的Base和Creator项目的代码审查数据集。研究者设计了五种提示模板,以优化LLMs在下游任务中的性能。通过手动检查LLMs生成的响应内容、相应的源代码和审查者识别的安全缺陷,对