Continuously Reasoning about Programs using Differential Bayesian Inference

被引:14
|
作者
Heo, Kihong [1 ]
Raghothaman, Mukund [1 ]
Si, Xujie [1 ]
Naik, Mayur [1 ]
机构
[1] Univ Penn, Philadelphia, PA 19104 USA
基金
美国国家科学基金会;
关键词
Static analysis; software evolution; continuous integration; alarm relevance; alarm prioritization; STATIC ANALYSIS; LINES; BUGS;
D O I
10.1145/3314221.3314616
中图分类号
TP31 [计算机软件];
学科分类号
081202 ; 0835 ;
摘要
Programs often evolve by continuously integrating changes from multiple programmers. The effective adoption of program analysis tools in this continuous integration setting is hindered by the need to only report alarms relevant to a particular program change. We present a probabilistic framework, Drake, to apply program analyses to continuously evolving programs. Drake is applicable to a broad range of analyses that are based on deductive reasoning. The key insight underlying Drake is to compute a graph that concisely and precisely captures differences between the derivations of alarms produced by the given analysis on the program before and after the change. Performing Bayesian inference on the graph thereby enables to rank alarms by likelihood of relevance to the change. We evaluate Drake using SparrowDa static analyzer that targets buffer-overrun, format-string, and integer-overflow errorsDon a suite of ten widely-used C programs each comprising 13k-112k lines of code. Drake enables to discover all true bugs by inspecting only 30 alarms per benchmark on average, compared to 85 (3x more) alarms by the same ranking approach in batch mode, and 118 (4x more) alarms by a differential approach based on syntactic masking of alarms which also misses 4 of the 26 bugs overall.
引用
收藏
页码:561 / 575
页数:15
相关论文
共 50 条
  • [21] Abductive Inference for Reasoning about Heaps
    Distefano, Dino
    PROGRAMMING LANGUAGES AND SYSTEMS, PROCEEDINGS, 2008, 5356 : 1 - 2
  • [22] Exact Bayesian Inference for Loopy Probabilistic Programs using Generating Functions
    Klinkenberg, Lutz
    Blumenthal, Christian
    Chen, Mingshuai
    Haase, Darion
    Katoen, Joost-Pieter
    PROCEEDINGS OF THE ACM ON PROGRAMMING LANGUAGES-PACMPL, 2024, 8 (OOPSLA):
  • [23] Towards Explainable Inference about Object Motion Using Qualitative Reasoning
    Ge, Xiaoyu
    Renz, Jochen
    Hua, Hua
    SIXTEENTH INTERNATIONAL CONFERENCE ON PRINCIPLES OF KNOWLEDGE REPRESENTATION AND REASONING, 2018, : 641 - 642
  • [24] Bayesian inference with misspecified models: Inference about what?
    O'Hagan, Anthony
    JOURNAL OF STATISTICAL PLANNING AND INFERENCE, 2013, 143 (10) : 1643 - 1648
  • [25] REASONING ABOUT PROBABILISTIC PARALLEL PROGRAMS
    RAO, JR
    ACM TRANSACTIONS ON PROGRAMMING LANGUAGES AND SYSTEMS, 1994, 16 (03): : 798 - 842
  • [26] Reasoning about Recursive Probabilistic Programs
    Olmedo, Federico
    Kaminski, Benjamin Lucien
    Katoen, Joost-Pieter
    Matheja, Christoph
    PROCEEDINGS OF THE 31ST ANNUAL ACM-IEEE SYMPOSIUM ON LOGIC IN COMPUTER SCIENCE (LICS 2016), 2016, : 672 - 681
  • [27] Reasoning about incompletely defined programs
    Walther, C
    Schweitzer, S
    LOGIC FOR PROGRAMMING, ARTIFICIAL INTELLIGENCE, AND REASONING, PROCEEDINGS, 2005, 3835 : 427 - 442
  • [28] Reasoning about faulty quantum programs
    Paolo Zuliani
    Acta Informatica, 2009, 46 : 403 - 432
  • [29] Reasoning About Imperative Quantum Programs
    Chadha, R.
    Mateus, P.
    Sernadas, A.
    ELECTRONIC NOTES IN THEORETICAL COMPUTER SCIENCE, 2006, 158 : 19 - 39
  • [30] It is declarative - On reasoning about logic programs
    Drabent, W
    LOGIC PROGRAMMING: PROCEEDINGS OF THE 1999 INTERNATIONAL CONFERENCE ON LOGIC PROGRAMMING, 1999, : 607 - 607