一句话:提出可插拔的基于值静态分析器 VBSAC,通过多值分析插件共享信息提升 C 程序缺陷检测精度与召回率。
静态分析是早期发现程序缺陷、提升软件质量的重要手段,但实际工具往往难以在误报率与漏报率之间取得平衡。本文提出 VBSAC,一个面向 C 语言的基于值的静态分析器,旨在同时提高精度与召回率。该工具采用可插拔的基于值分析策略:设计内存骨架记录器(memory skeleton recorder)将内存对象维护为分析基线;在遍历控制流图时,多个基于值的插件分别分析特定抽象域,并通过共享程序信息相互增强计算;同时,检查器消费相应分析结果来检测缺陷。工具还提供友好的 Web 界面帮助用户审计缺陷检测结果。在两个广泛使用的基准上,VBSAC 相比当前最先进的缺陷检测工具多发现 221 至 339 个缺陷,F-Score 提升 9.88% 至 40.32%。
Static analysis has long prevailed as a promising approach to detect program bugs at an early development process to increase software quality. However, such tools face great challenges to balance the false-positive rate and the false-negative rate in practical use. In this paper, we present VBSAC, a value-based static analyzer for C aiming to improve the precision and recall. In our tool, we employ a pluggable value-based analysis strategy. A memory skeleton recorder is designed to maintain the memory objects as a baseline. While traversing the control flow graph, diverse value-based plug-ins analyze the specific abstract domains and share program information to strengthen the computation. Simultaneously, checkers consume the corresponding analysis results to detect bugs. We also provide a user-friendly web interface to help users audit the bug detection results. Evaluation on two widely-used benchmarks shows that we perform better to state-of-the-art bug detection tools by finding 221-339 more bugs and improving F-Score 9.88%-40.32%.
DOI 原文 ·
@inproceedings{paperbot5359,
title = {VBSAC: a value-based static analyzer for C},
author = {Chi Li and Min Zhou and Zuxing Gu and Guang Chen and Yuexing Wang and Jiecheng Wu and Ming Gu},
booktitle = {ISSTA},
year = {2019},
doi = {10.1145/3293882.3338998}
}