VLDB 2026 Research / reviewers in the wild / expert
Johannes Bader 0001
dblp:58/6398-1
· DBLP profile ↗
5ranked-venue papers
3as first author
1since 2021 · last 2021
0000-0003-3129-3814ORCID · verified
Domains — the database's venue-derived domains; a paper can count in several
Software engineering, systems software and programming languages · 4 · 2 first-author · 1 since 2021Theory of computation · 1 · 1 first-author
Expertise — from the expertise taxonomy: the topics of the expert's papers under the CCF categories. A weight counts papers with recency: 1 for a paper about the topic, 0.3 when the topic is its context, halved every five years.
| Software engineering, system software, and programming languages
2 papers |
Debugging and program repair · 40% Program verification · 30% Programming languages and type systems · 30% |
Topics — the 5 heaviest of 7, each with the papers that count most for it
| Topic | Weight | Papers | Last | Evidence papers |
|---|---|---|---|---|
Program verification › pointer program verification
heap verification |
0.4 | 1 | 2020 | Gradual verification of recursive heap data structures · Proc. ACM Program. Lang. 2020 |
Programming languages and type systems › type systems
ownership |
0.4 | 1 | 2020 | Gradual verification of recursive heap data structures · Proc. ACM Program. Lang. 2020 |
Debugging and program repair
automated program repair |
0.4 | 1 | 2019 | Getafix: learning to fix bugs automatically · Proc. ACM Program. Lang. 2019 |
Debugging and program repair
fault localization |
0.4 | 1 | 2019 | Getafix: learning to fix bugs automatically · Proc. ACM Program. Lang. 2019 |
Debugging and program repair › automated program repair
learning-based program repair |
0.4 | 1 | 2019 | Getafix: learning to fix bugs automatically · Proc. ACM Program. Lang. 2019 |
Methods — techniques the papers use, named apart from their topics
dynamic verification · 0.4SMT solving · 0.4ranking · 0.4hierarchical clustering · 0.4
| Year | Publication | Venue | Position |
|---|---|---|---|
| 2021 | Gradual Program Analysis for Null PointersabstractStatic analysis tools typically address the problem of excessive false positives by requiring programmers to explicitly annotate their code. However, when faced with incomplete annotations, many analysis tools are either too conservative, yielding false positives, or too optimistic, resulting in unsound analysis results. In order to flexibly and soundly deal with partially-annotated programs, we propose to build upon and adapt the gradual typing approach to abstract-interpretation-based program analyses. Specifically, we focus on null-pointer analysis and demonstrate that a gradual null-pointer analysis hits a sweet spot, by gracefully applying static analysis where possible and relying on dynamic checks where necessary for soundness. In addition to formalizing a gradual null-pointer analysis for a core imperative language, we build a prototype using the Infer static analysis framework, and present preliminary evidence that the gradual null-pointer analysis reduces false positives compared to two existing null-pointer checkers for Infer. Further, we discuss ways in which the gradualization approach used to derive the gradual analysis from its static counterpart can be extended to support more domains. This work thus provides a basis for future analysis tools that can smoothly navigate the tradeoff between human effort and run-time overhead to reduce the number of reported false positives. Sam Estep, Jenna DiVincenzo, Jonathan Aldrich, Éric Tanter, Johannes Bader 0001, Joshua Sunshine |
ECOOP | 5 |
| 2020 | Gradual verification of recursive heap data structuresabstractCurrent static verification techniques do not provide good support for incrementality, making it difficult for developers to focus on specifying and verifying the properties and components that are most important. Dynamic verification approaches support incrementality, but cannot provide static guarantees. To bridge this gap, prior work proposed gradual verification, which supports incrementality by allowing every assertion to be complete, partial, or omitted, and provides sound verification that smoothly scales from dynamic to static checking. The prior approach to gradual verification, however, was limited to programs without recursive data structures. This paper extends gradual verification to programs that manipulate recursive, mutable data structures on the heap. We address several technical challenges, such as semantically connecting iso- and equi-recursive interpretations of abstract predicates, and supporting gradual verification of heap ownership. This work thus lays the foundation for future tools that work on realistic programs and support verification within an engineering process in which cost-benefit trade-offs can be made. Jenna DiVincenzo, Johannes Bader 0001, Cameron Wong, Jonathan Aldrich, Éric Tanter, Joshua Sunshine |
Proc. ACM Program. Lang. | 2 |
| 2019 | Getafix: learning to fix bugs automaticallyabstractStatic analyzers help find bugs early by warning about recurring bug categories. While fixing these bugs still remains a mostly manual task in practice, we observe that fixes for a specific bug category often are repetitive. This paper addresses the problem of automatically fixing instances of common bugs by learning from past fixes. We present Getafix, an approach that produces human-like fixes while being fast enough to suggest fixes in time proportional to the amount of time needed to obtain static analysis results in the first place. Getafix is based on a novel hierarchical clustering algorithm that summarizes fix patterns into a hierarchy ranging from general to specific patterns. Instead of an expensive exploration of a potentially large space of candidate fixes, Getafix uses a simple yet effective ranking technique that uses the context of a code change to select the most appropriate fix for a given bug. Our evaluation applies Getafix to 1,268 bug fixes for six bug categories reported by popular static analyzers for Java, including null dereferences, incorrect API calls, and misuses of particular language constructs. The approach predicts exactly the human-written fix as the top-most suggestion between 12% and 91% of the time, depending on the bug category. The top-5 suggestions contain fixes for 526 of the 1,268 bugs. Moreover, we report on deploying the approach within Facebook, where it contributes to the reliability of software used by billions of people. To the best of our knowledge, Getafix is the first industrially-deployed automated bug-fixing tool that learns fix patterns from past, human-written fixes to produce human-like fixes. Johannes Bader 0001, Michael Pradel, Satish Chandra 0001 |
Proc. ACM Program. Lang. | 1 |
| 2018 | Gradual Program Verification
Johannes Bader 0001, Jonathan Aldrich, Éric Tanter |
VMCAI | 1 |
| 2016 | Practical Variable Length Gap Pattern Matching
Johannes Bader 0001, Simon Gog, Matthias Petri |
SEA | 1 |