利用精确且完整的代码上下文引导LLM进行自动误报缓解
软件工程
2025-06-03 v2
摘要
静态应用安全测试(SAST)工具对软件质量至关重要,能在开发早期识别潜在代码问题。然而,它们常产生误报警告,需要人工审查,从而拖慢开发进度。因此,自动化误报缓解(FPM)至关重要。大型语言模型(LLM)凭借其强大的自然语言和代码理解能力,为FPM提供了有前景的途径。然而,当前基于LLM的FPM方法面临两个主要限制:1. 提取的警告相关代码片段过于宽泛,充斥着无关的控制流和数据流,降低了精度;2. 关键代码上下文缺失,导致表示不完整,可能误导LLM并造成不准确评估。为克服这些限制,我们提出了LLM4FPM,一个轻量高效的误报缓解框架。其核心组件eCPG-Slicer通过构建扩展代码属性图(eCPG)来提取警告的精确行级代码上下文。此外,集成FARF算法在线性时间内构建文件引用图,识别所有与警告相关的文件。这使eCPG-Slicer能够在不依赖昂贵的全程序分析的情况下获取丰富的上下文信息。LLM4FPM在Juliet数据集上优于现有方法(各类通用缺陷枚举CWE的F1 > 99%),并在D2A数据集上将标签准确率提升至86%。借助轻量开源LLM,LLM4FPM在Juliet上可将每次运行的检查成本降低高达2758美元(每条警告0.384美元),平均检查时间为每条警告4.7秒。此外,在流行C/C++项目上的真实测试验证了其实用性。
引用
@article{arxiv.2411.03079,
title = {Utilizing Precise and Complete Code Context to Guide LLM in Automatic False Positive Mitigation},
author = {Jinbao Chen and Hongjing Xiang and Zuohong Zhao and Luhao Li and Yu Zhang and Boyao Ding and Qingwei Li and Songyuan Xiong},
journal= {arXiv preprint arXiv:2411.03079},
year = {2025}
}
备注
13 pages