一句话:提出 DynaBoost,利用插桩测试执行信息对静态分析告警进行概率排序,显著降低人工检查负担。
静态分析与动态测试各有优势:前者穷尽探索并给出行为上界,后者提供具体行为证据且误报率低。本文提出 DynaBoost,通过插桩程序在测试执行中动态检查静态分析器预测的数据流行为,并据此构建概率化告警排序系统。用户反复检查最可能为真 bug 的告警,系统根据反馈重新排序剩余告警。该组合能利用用户难以直接提供的信息。评估表明,相比基线排序系统,人工检查告警负担降低 35%;相比无辅助程序员的人工分类,负担降低 89%。
The two broad approaches to discover properties of programs---static and dynamic analyses---have complementary strengths: static techniques perform exhaustive exploration and prove upper bounds on program behaviors, while the dynamic analysis of test cases provides concrete evidence of these behaviors and promise low false alarm rates. In this paper, we present DynaBoost, a system which uses information obtained from test executions to prioritize the alarms of a static analyzer. We instrument the program to dynamically look for dataflow behaviors predicted by the static analyzer, and use these results to bootstrap a probabilistic alarm ranking system, where the user repeatedly inspects the alarm judged most likely to be a real bug, and where the system re-ranks the remaining alarms in response to user feedback. The combined system is able to exploit information that cannot be easily provided by users, and provides significant improvements in the human alarm inspection burden: by 35% compared to the baseline ranking system, and by 89% compared to an unaided programmer triaging alarm reports.