中文

SkipAnalyzer:一种基于大语言模型的静态代码分析工具

软件工程 2023-12-19 v2

摘要

我们介绍 SkipAnalyzer,一种由大语言模型(LLM)驱动的静态代码分析工具。SkipAnalyzer 包含三个组件:1)基于 LLM 的静态缺陷检测器,用于扫描源代码并报告特定类型的缺陷;2)基于 LLM 的误报过滤器,可识别静态缺陷检测器(例如步骤 1 的结果)结果中的误报缺陷以提高检测精度;3)基于 LLM 的补丁生成器,可为上述检测到的缺陷生成补丁。作为概念验证,SkipAnalyzer 构建于 ChatGPT 之上,后者在各种软件工程任务中展现出卓越性能。为评估 SkipAnalyzer,我们聚焦于静态缺陷检测所针对的两类典型且关键的缺陷,即空指针解引用(Null Dereference)和资源泄漏(Resource Leak)。我们采用 Infer 从 10 个开源项目辅助收集这两类缺陷。最终,我们的实验数据集包含 222 个空指针解引用缺陷实例和 46 个资源泄漏缺陷实例。我们的研究表明,SkipAnalyzer 在上述静态分析任务(包括缺陷检测、误报消除和缺陷修复)中取得了显著性能。在静态缺陷检测中,SkipAnalyzer 检测空指针解引用缺陷的准确率高达 68.37%,检测资源泄漏缺陷的准确率高达 76.95%,将当前领先缺陷检测器 Infer 的精度分别提升了 12.86% 和 43.13%。在消除误报警告方面,SkipAnalyzer 对空指针解引用缺陷的精度可达 93.88%,对资源泄漏缺陷的精度可达 63.33%,并且超越了最先进的误报警告消除工具。此外,在缺陷修复方面,SkipAnalyzer 能以高达 97.30% 的成功率生成语法正确的补丁来修复其检测到的缺陷。

关键词

引用

@article{arxiv.2310.18532,
  title  = {SkipAnalyzer: A Tool for Static Code Analysis with Large Language Models},
  author = {Mohammad Mahdi Mohajer and Reem Aleithan and Nima Shiri Harzevili and Moshi Wei and Alvine Boaye Belle and Hung Viet Pham and Song Wang},
  journal= {arXiv preprint arXiv:2310.18532},
  year   = {2023}
}