VLDB 2026 Research / reviewers in the wild / expert
Martin Schäf
dblp:41/7506
· DBLP profile ↗
32ranked-venue papers
3as first author
7since 2021 · last 2024
0000-0002-6804-0178ORCID · verified
Domains — the database's venue-derived domains; a paper can count in several
Software engineering, systems software and programming languages · 28 · 3 first-author · 7 since 2021Theory of computation · 9 · 1 since 2021Artificial intelligence and machine learning · 3
| Year | Publication | Venue | Position |
|---|---|---|---|
| 2024 | Understanding Developer-Analyzer Interactions in Code ReviewsabstractStatic code analyzers are now a common part of the codereview process. These automated tools integrate into the code review process by commenting on code changes and suggesting improvements, in the same way as human reviewers. The comments made by static analyzers often trigger a conversation between developers to align on if and how the issue should be fixed. Because developers rarely give feedback directly to the tool, understanding the sentiment and intent in the conversation triggered by the tool comments can be used to measure the usefulness of the static analyzer. Martin Schäf, Berk Çirisci, Linghui Luo, Muhammad Numair Mansur, Omer Tripp, Daniel Sanchez, Qiang Zhou 0009, Muhammad Bilal Zafar |
ASE | 1 |
| 2023 | Shifting Left for Early Detection of Machine-Learning Bugs
Ben Liblit, Linghui Luo, Alejandro Molina 0002, Rajdeep Mukherjee, Zachary Patterson, Goran Piskachev, Martin Schäf, Omer Tripp, Willem Visser |
FM | 7 |
| 2023 | Model Generation For Java FrameworksabstractModern applications often rely on rich frameworks to provide functionality. Android, for instance, handles many aspects of building a mobile app. But these frameworks also have costs. Given the importance of application security and tools to ensure it, one major cost is that framework complicate tools based on static analysis: (1) They hurt analysis quality by including large amounts of complex, dynamic, and native library code. (2) Frameworks like Android become the main program, making whole program analysis of the app problematic.Mechanisms such as Averroes have been developed to handle unknown library code for Java, and have proven effective for some analyses. However, they have two main limitations in the context of our complications: (1) They do not provide the precision required for security analysis. (2) They assume a main program, which is not the case for frameworks. To address this, we present GenCG, which extends Averroes to support taint analysis for Android and Spring. Evaluation with real-world Android applications shows that call graphs using the models generated by GenCG cover significantly more code of the app, improves recall of a client security analysis, and, at the same time, does not introduce more false positives. Linghui Luo, Goran Piskachev, Ranjith Krishnamurthy, Julian Dolby, Eric Bodden, Martin Schäf |
ICST | 6 |
| 2022 | Input splitting for cloud-based static application security testing platformsabstractAs software development teams adopt DevSecOps practices, application security is increasingly the responsibility of development teams, who are required to set up their own Static Application Security Testing (SAST) infrastructure. Maria Christakis, Thomas Cottenier, Antonio Filieri, Linghui Luo, Muhammad Numair Mansur, Lee Pike, Nicolás Rosner, Martin Schäf, Aritra Sengupta, Willem Visser |
ESEC/SIGSOFT FSE | 8 |
| 2021 | RAPID: checking API usage for the cloud in the cloudabstractWe present RAPID, an industrial-strength analysis developed at AWS that aims to help developers by providing automatic, fast and actionable feedback about correct usage of cloud-service APIs. RAPID’s design is based on the insight that cloud service APIs are structured around short-lived request- and response-objects whose usage patterns can be specified as value-dependent type-state automata and be verified by combining local type-state with global value-flow analyses. We describe various challenges that arose to deploy RAPID at scale. Finally, we present an evaluation that validates our design choices, deployment heuristics, and shows that RAPID is able to quickly and precisely report a wide variety of useful API misuse violations in large, industrial-strength code bases. Michael Emmi, Liana Hadarean, Ranjit Jhala, Lee Pike, Nicolás Rosner, Martin Schäf, Aritra Sengupta, Willem Visser |
ESEC/SIGSOFT FSE | 6 |
| 2021 | IDE support for cloud-based static analysesabstractIntegrating static analyses into continuous integration (CI) or continuous delivery (CD) has become the best practice for assuring code quality and security. Static Application Security Testing (SAST) tools fit well into CI/CD, because CI/CD allows time for deep static analyses on large code bases and prevents vulnerabilities in the early stages of the development lifecycle. In CI/CD, the SAST tools usually run in the cloud and provide findings via a web interface. Recent studies show that developers prefer seeing the findings of these tools directly in their IDEs. Most tools with IDE integration run lightweight static analyses and can give feedback at coding time, but SAST tools used in CI/CD take longer to run and usually are not able to do so. Can developers interact directly with a cloud-based SAST tool that is typically used in CI/CD through their IDE? We investigated if such a mechanism can integrate cloud-based SAST tools better into a developers’ workflow than web-based solutions. We interviewed developers to understand their expectations from an IDE solution. Guided by these interviews, we implemented an IDE prototype for an existing cloud-based SAST tool. With a usability test using this prototype, we found that the IDE solution promoted more frequent tool interactions. In particular, developers performed code scans three times more often. This indicates better integration of the cloud-based SAST tool into developers’ workflow. Furthermore, while our study did not show statistically significant improvement on developers’ code-fixing performance, it did show a promising reduction in time for fixing vulnerable code. Linghui Luo, Martin Schäf, Daniel Sanchez, Eric Bodden |
ESEC/SIGSOFT FSE | 2 |
| 2021 | Analyzing Infrastructure as Code to Prevent Intra-update Sniping VulnerabilitiesabstractAbstract Infrastructure as Code is a new approach to computing infrastructure management that allows users to leverage tools such as version control, automatic deployments, and program analysis for infrastructure configurations. This approach allows for faster and more homogeneous configuration of a complete infrastructure. Infrastructure as Code languages, such as CloudFormation or TerraForm, use a declarative model so that users only need to describe the desired state of the infrastructure. However, in practice, these languages are not processed atomically. During an upgrade, the infrastructure goes through a series of intermediate states. We identify a security vulnerability that occurs during an upgrade even when the initial and final states of the infrastructure are secure, and we show that those vulnerability are possible in Amazon’s AWS and Google Cloud. We call such attacks intra-update sniping vulnerabilities. In order to mitigate this shortcoming, we present a technique that detects such vulnerabilities and pinpoints the root causes of insecure deployment migrations. We implement this technique in a tool, Häyhä, that uses dataflow graph analysis. We evaluate our tool on a set of open-source CloudFormation templates and find that it is scalable and could be used as part of a deployment workflow. Julien Lepiller, Ruzica Piskac, Martin Schäf, Mark Santolucito |
TACAS (2) | 3 |
| 2020 | Verifying object constructionabstractIn object-oriented languages, constructors often have a combination of required and optional formal parameters. It is tedious and inconvenient for programmers to write a constructor by hand for each combination. The multitude of constructors is error-prone for clients, and client code is difficult to read due to the large number of constructor arguments. Therefore, programmers often use design patterns that enable more flexible object construction---the builder pattern, dependency injection, or factory methods. Martin Kellogg, Manli Ran, Manu Sridharan, Martin Schäf, Michael D. Ernst |
ICSE | 4 |
| 2020 | Continuous ComplianceabstractVendors who wish to provide software or services to large corporations and governments must often obtain numerous certificates of compliance. Each certificate asserts that the software satisfies a compliance regime, like SOC or the PCI DSS, to protect the privacy and security of sensitive data. The industry standard for obtaining a compliance certificate is an auditor manually auditing source code. This approach is expensive, error-prone, partial, and prone to regressions. Martin Kellogg, Martin Schäf, Serdar Tasiran, Michael D. Ernst |
ASE | 2 |
| 2019 | JayHorn: A Java Model Checker - (Competition Contribution)abstractJayHorn is a model checker for verifying sequential Java programs annotated with assertions expressing safety conditions. JayHorn uses the Soot library to read Java bytecode and translate it to the Jimple three-address format, then converts the Jimple code in several stages to a set of constrained Horn clauses, and solves the Horn clauses using solvers like SPACER and Eldarica. JayHorn uses a novel, invariant-based representation of heap data-structures, and is therefore particularly useful for analyzing programs with unbounded data-structures and unbounded run-time. JayHorn is open source and distributed under MIT license ( https://github.com/jayhorn/jayhorn ). Temesghen Kahsai, Philipp Rümmer, Martin Schäf |
TACAS (3) | 3 |
| 2017 | Quantified Heap Invariants for Object-Oriented ProgramsabstractHeap and data structures represent one of the biggest challenges when applying model checking to the analysis of software programs: in order to verify (unbounded) safety of a program, it is typically necessary to formulate quantified inductive invariants that state properties about an unbounded number of heap locations. Methods like Craig interpolation, which are commonly used to infer invariants in model checking, are often ineffective when a heap is involved. To address this challenge, we introduce a set of new proof and program transformation rules for verifying object-oriented programs with the help of space invariants, which (implicitly) give rise to quantified invariants. Leveraging advances in Horn solving, we show how space invariants can be derived fully automatically, and how the framework can be used to effectively verify safety of Java programs. Temesghen Kahsai, Rody Kersten, Philipp Rümmer, Martin Schäf |
LPAR | 4 |
| 2016 | JayHorn: A Framework for Verifying Java programs
Temesghen Kahsai, Philipp Rümmer, Huascar Sanchez, Martin Schäf |
CAV (1) | 4 |
| 2016 | Crowdsourcing program preconditions via a classification gameabstractInvariant discovery is one of the central problems in software verification. This paper reports on an approach that addresses this problem in a novel way; it crowdsources logical expressions for likely invariants by turning invariant discovery into a computer game. The game, called Binary Fission, employs a classification model. In it, players compose preconditions by separating program states that preserve or violate program assertions. The players have no special expertise in formal methods or programming, and are not specifically aware they are solving verification tasks. We show that Binary Fission players discover concise, general, novel, and human readable program preconditions. Our proof of concept suggests that crowdsourcing offers a feasible and promising path towards the practical application of verification technology. Daniel S. Fava, Daniel G. Shapiro, Joseph C. Osborn, Martin Schäf, E. James Whitehead Jr. |
ICSE | 4 |
| 2016 | Detecting Similar Programs via The Weisfeiler-Leman Graph Kernel
Wenchao Li 0001, Hossein Saidi 0002, Huascar Sanchez, Martin Schäf, Pascal Schweitzer |
ICSR | 4 |
| 2016 | Multistaging to understand: Distilling the essence of java code examplesabstractProgrammers commonly search the Web to find code examples that can help them solve a specific programming task. While some novice programmers may be willing to spend as much time as needed to understand a found code example, more experienced ones want to spend as little time as possible. They want to get a quick overview of the example's operation, so they can start working with it immediately. Getting this overview is often non-trivial and requires a tedious and manual inspection process. In this paper, we introduce a technique called Multi-staging to Understand, which streamlines this inspection process by distilling the essence of code examples. The essence of a code example conveys the most important aspects of the example's intended function. Our technique automatically decomposes the code in an example into code stages that can be explored non-sequentially; enabling fast exploratory learning. We discuss the key components of our technique and describe empirical results based on actual code examples on StackOverflow. Huascar Sanchez, E. James Whitehead Jr., Martin Schäf |
ICPC | 3 |
| 2015 | Severity Levels of Inconsistent Code
Martin Schäf, Ashish Tiwari 0001 |
ATVA | 1 |
| 2015 | Bixie: Finding and Understanding Inconsistent CodeabstractWe present Bixie, a tool to detect inconsistencies in Java code. Bixie detectsinconsistent code at a higher precision than previous tools and provides novelfault localization techniques to explain why code is inconsistent. Wedemonstrate the usefulness of Bixie on over one million lines of code, showthat it can detect inconsistencies at a low false alarm rate, and fix a numberof inconsistencies in popular open-source projects. Watch our Demo at http://youtu.be/QpsoUBJMxhk. Timothy McCarthy, Philipp Rümmer, Martin Schäf |
ICSE (2) | 3 |
| 2015 | VERMEER: A Tool for Tracing and Explaining Faulty C ProgramsabstractWe present VERMEER, a new automated debugging tool for C. VERMEER combines two functionalities: (1) a dynamic tracer that produces a linearized trace from a faulty C program and a given test input; and (2) a static analyzer that explains why the trace fails. The tool works in phases that simplify the input program to a linear trace, which is then analyzed using an automated theorem prover to produce the explanation. The output of each phase is a valid C program. VERMEER is able to produce useful explanations of non trivial traces for real C programs within a few seconds. The tool demo can be found at http://youtu.be/E5lKHNJVerU. Daniel Schwartz-Narbonne, Chanseok Oh, Martin Schäf, Thomas Wies |
ICSE (2) | 3 |
| 2015 | Gamifying Program Analysis
Daniel S. Fava, Julien Signoles, Matthieu Lemerre, Martin Schäf, Ashish Tiwari 0001 |
LPAR | 4 |
| 2015 | Finding Inconsistencies in Programs with Loops
Temesghen Kahsai, Jorge A. Navas, Dejan Jovanovic, Martin Schäf |
LPAR | 4 |
| 2014 | Concolic Fault LocalizationabstractAn integral part of all debugging activities is the task of diagnosing the cause of an error. Most existing fault diagnosis techniques rely on the availability of high quality test suites because they work by comparing failing and passing runs to identify the error cause. This limits their applicability. One alternative are techniques that statically analyze an error trace of the program without relying on additional passing runs to compare against. Particularly promising are novel proof-based approaches that leverage the advances in automated theorem proving to obtain an abstraction of the program that aids fault diagnostics. However, existing proof-based approaches still have practical limitations such as reduced scalability and dependence on complex mathematical models of programs. Such models are notoriously difficult to develop for real-world programs. Inspired by concolic testing, we propose a novel algorithm that integrates concrete execution and symbolic reasoning about the error trace to address these challenges. Specifically, we execute the error trace to obtain intermediate program states that allow us to split the trace into smaller fragments, each of which can be analyzed in isolation using an automated theorem prover. Moreover, we show how this approach can avoid complex logical encodings when reasoning about traces in low-level C programs. We have conducted an experiment where we applied our new algorithm to error traces generated from faulty versions of UNIX utils such as gzip and sed. Our experiment indicates that our concolic fault abstraction scales to real-world error traces and generates useful error diagnoses. Chanseok Oh, Martin Schäf, Daniel Schwartz-Narbonne, Thomas Wies |
SCAM | 2 |
| 2013 | A Theory for Control-Flow Graph Exploration
Stephan Arlt, Philipp Rümmer, Martin Schäf |
ATVA | 3 |
| 2013 | Reconstructing Paths for Reachable Code
Stephan Arlt, Zhiming Liu 0001, Martin Schäf |
ICFEM | 3 |
| 2013 | Explaining inconsistent codeabstractA code fragment is inconsistent if it is not part of any normally terminating execution. Examples of such inconsistencies include code that is unreachable, code that always fails due to a run-time error, and code that makes conflicting assumptions about the program state. In this paper, we consider the problem of automatically explaining inconsistent code. This problem is difficult because traditional fault localization techniques do not apply. Our solution relies on a novel algorithm that takes an infeasible code fragment as input and generates a so-called error invariant automaton. The error invariant automaton is an abstraction of the input code fragment that only mentions program statements and facts that are relevant for understanding the cause of the inconsistency. We conducted a preliminary usability study which demonstrated that error invariant automata can help programmers better understand inconsistencies in code taken from real-world programs. In particular, access to an error invariant automata tripled the speed at which programmers could diagnose the cause of a code inconsistency. Martin Schäf, Daniel Schwartz-Narbonne, Thomas Wies |
ESEC/SIGSOFT FSE | 1 |
| 2013 | Flow-Sensitive Fault Localization
Jürgen Christ, Evren Ermis, Martin Schäf, Thomas Wies |
VMCAI | 3 |
| 2012 | Joogie: Infeasible Code Detection for Java
Stephan Arlt, Martin Schäf |
CAV | 2 |
| 2012 | Error Invariants
Evren Ermis, Martin Schäf, Thomas Wies |
FM | 2 |
| 2012 | Lightweight Static Analysis for GUI TestingabstractGUI testing is an active research area. The open challenge is the judicious generation of event sequences (an event sequence encodes a user interaction). A major advance in this direction is the use of a black-box model to systematically generate event sequences that are executable on the GUI. The black-box model can be, e.g., an Event Flow Graph (EFG) or an Event Sequence Graph (ESG). In this paper we propose a new approach to select relevant event sequences among the event sequences generated by a black-box model. We express the relevance of an event sequence by a precisely defined dependency between a fixed number of events in the event sequence. Departing from a pure black-box approach we apply a static analysis to the byte code of the application. This allows us to infer a dependency graph, which we call Event Dependency Graph (EDG). We use the EDG together with a black-box model to construct a set of relevant event sequences among the executable ones. We have implemented our approach in a new tool. We evaluate the approach on four open source GUI applications. With the specific choice of a lightweight static analysis, the approach scales to large applications and, at the same time, leads to an informed selection of event sequences. Using our approach we are able to find previously undetected bugs. Stephan Arlt, Andreas Podelski, Cristiano Bertolini, Martin Schäf, Ishan Banerjee, Atif M. Memon |
ISSRE | 4 |
| 2012 | Parameterized GUI Tests
Stephan Arlt, Pedro Borromeo, Martin Schäf, Andreas Podelski |
ICTSS | 3 |
| 2010 | AutoPA: Automatic Prototyping from Requirements
Zhiming Liu 0001, Martin Schäf, Ling Yin 0002 |
ISoLA (1) | 3 |
| 2010 | Doomed program points
Jochen Hoenicke, K. Rustan M. Leino, Andreas Podelski, Martin Schäf, Thomas Wies |
Formal Methods Syst. Des. | 4 |
| 2009 | It's Doomed; We Can Prove It
Jochen Hoenicke, K. Rustan M. Leino, Andreas Podelski, Martin Schäf, Thomas Wies |
FM | 4 |