We present BayeSmith, a general framework for automatically learning probabilistic models of static analysis alarms. Several probabilistic reasoning techniques have recently been proposed which incorporate external feedback on semantic facts and thereby reduce the user's alarm inspection burden. However, these approaches are fundamentally limited to models with pre-defined structure, and are therefore unable to learn or transfer knowledge regarding an analysis from one program to another. Furthermore, these probabilistic models often aggressively generalize from external feedback and falsely suppress real bugs. To address these problems, we propose BayeSmith that learns the structure and weights of the probabilistic model. Starting from an initial model and a set of training programs with bug labels, BayeSmith refines the model to effectively prioritize real bugs based on feedback. We evaluate the approach with two static analyses on a suite of C programs. We demonstrate that the learned models significantly improve the performance of three state-of-the-art probabilistic reasoning systems.
본 논문에서는 정적 분석 알람의 확률 모델을 자동으로 학습하기 위한 일반적인 프레임워크, BayeSmith를 제시한다. 최근 의미를 고려한 외부 피드백을 통합하여 사용자의 알람 검사 부담을 줄이는 데에 효과적인 확률 모델들이 제안되었다. 그러나 이러한 접근 방식은 사전에 정의된 확률 구조에 제한되므로, 한 프로그램에서 다른 프로그램으로 분석에 대한 지식을 학습하거나 전이할 수 없다. 더욱이, 해당 확률 모델들은 종종 외부로부터 받은 피드백을 지나치게 일반화하고 실제 버그를 부당하게 억제한다. 이러한 문제를 해결하기 위해 확률 모델의 구조와 가중치를 학습하는 프레임워크, BayeSmith를 제안한다. BayeSmith는 프로그램들과 알려진 버그들로 구성된 훈련 데이터셋과 주어진 초기 모델에서 시작하여 학습을 진행한다. 사용자 피드백을 기반으로 실제 버그의 알람 검사 우선순위를 높게 매기도록 확률 모델을 개선한다. 우리는 두 가지 정적 분석 기술에 대해 실제 공개된 C 프로그램들을 가지고 학습 프레임워크를 평가한다. 우리는 학습된 모델이 정적 분석을 위한, 세 가지 최신 확률 추론 시스템의 성능을 크게 향상시킨다는 것을 보인다.