Demonstration venue · read-only. Every page can be browsed; the buttons that would change it are switched off. Create an account to run TaxoReview on your own data. A simulation from public publication records: the people listed were not invited and did not agree to review.
? Tutorial for this page

Martin Kellogg

dblp:190/1272 · DBLP profile ↗
← Back
13ranked-venue papers
9as first author
8since 2021 · last 2025
0000-0002-3185-2340ORCID · corroborated

Domains — the database's venue-derived domains; a paper can count in several

Software engineering, systems software and programming languages · 13 · 9 first-author · 8 since 2021

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
10 papers
Program analysis · 36% Program verification · 26% Programming languages and type systems · 18%
Network and information security
2 papers
Systems and software security · 64% Usable security · 36%

Topics — the 20 heaviest of 23, each with the papers that count most for it

TopicWeightPapersLastEvidence papers
Program analysis
static analysis
2.042025
Repairing Leaks in Resource Wrappers · ASE 2025
Pluggable Type Inference for Free · ASE 2023
Lightweight verification of array indexing · ISSTA 2018
Program verification › automated verification
lightweight verification
1.032021
Lightweight verification via specialized typecheckers · ESEC/SIGSOFT FSE 2021
Lightweight verification of array indexing · ISSTA 2018
Lightweight and modular resource leak verification · ESEC/SIGSOFT FSE 2021
Debugging and program repair
automated program repair
0.912025
Repairing Leaks in Resource Wrappers · ASE 2025
Programming languages and type systems › type systems › static typing
pluggable type systems
0.822023
Pluggable Type Inference for Free · ASE 2023
Lightweight verification via specialized typecheckers · ESEC/SIGSOFT FSE 2021
Software maintenance and evolution
code readability
0.712023
On the Relationship between Code Verifiability and Understandability · ESEC/SIGSOFT FSE 2023
Program analysis
specification mining
0.712023
Inference of Resource Management Specifications · Proc. ACM Program. Lang. 2023
Program analysis › static analysis
static analysis warnings
0.712023
On the Relationship between Code Verifiability and Understandability · ESEC/SIGSOFT FSE 2023
Programming languages and type systems
type inference
0.712023
Pluggable Type Inference for Free · ASE 2023
Program analysis › type-based analysis
type qualifier inference
0.712023
Pluggable Type Inference for Free · ASE 2023
Programming languages and type systems › type checking
pluggable type checking
0.512021
Lightweight verification via specialized typecheckers · ESEC/SIGSOFT FSE 2021
Usable security › organizational security
security compliance
0.412020
Continuous Compliance · ASE 2020
Systems and software security
vulnerability discovery
0.412019
Compile-Time Detection of Machine Image Sniping · ASE 2019
Program analysis › error detection
array bounds checking
0.312018
Lightweight verification of array indexing · ISSTA 2018
Program analysis › static analysis
bug detection
0.212016
Combining bug detection and test case generation · SIGSOFT FSE 2016
Debugging and program repair
fault localization
0.212016
Combining bug detection and test case generation · SIGSOFT FSE 2016
Software testing
test generation
0.212016
Combining bug detection and test case generation · SIGSOFT FSE 2016
Programming languages and type systems
type systems
0.112021
Lightweight verification via specialized typecheckers · ESEC/SIGSOFT FSE 2021
Programming languages and type systems
object-oriented programming
0.112020
Verifying object construction · ICSE 2020
Software testing
regression testing
0.112016
Combining bug detection and test case generation · SIGSOFT FSE 2016
Software testing › regression testing
test suite augmentation
0.112016
Combining bug detection and test case generation · SIGSOFT FSE 2016

Methods — techniques the papers use, named apart from their topics

static analysis · 1.2specification inference · 0.9statistical meta-analysis · 0.7fixed-point iteration · 0.7fixed-point inference · 0.7correlation analysis · 0.7constraint solving · 0.7annotation inference · 0.7specialized typecheckers · 0.5modular analysis · 0.5source code auditing · 0.4type and effect system · 0.4
YearPublicationVenuePosition
2025 Repairing Leaks in Resource Wrappers
abstract
A resource leak occurs when a program fails to release a finite resource like a socket, file descriptor or database connection. While sound static analysis tools can detect all leaks, automatically repairing them remains challenging. Prior work took the output of a detection tool and attempted to repair only leaks from a hard-coded list of library resource types. That approach limits the scope of repairable leaks: real-world code uses resource wrappers that store a resource in a field and must themselves be closed.This paper makes four key contributions to improve resource leak repair in the presence of wrappers. (1) It integrates inference of resource management specifications into the repair pipeline, enabling extant fixing approaches to reason about wrappers. (2) It transforms programs into variants that are easier to analyze, making inference, detection, and fixing tools more effective; for instance, it makes detection tools report problems closer to the root cause, often in a client of a resource wrapper rather than within the wrapper class itself. (3) A novel field containment analysis reasons about resource lifetimes, enabling repair of more leaks involving resources stored in fields. (4) It introduces a new repair pattern and more precise reasoning to better handle resources stored in non-final fields.Prior work fixed 41% of resource leak warnings in the NJR benchmark suite; our implementation Arodnap fixes 68%.
Sanjay Malakar, Michael D. Ernst, Martin Kellogg, Manu Sridharan
ASE3
2025 Lightweight and modular resource leak checking (extended version)
Narges Shadab, Pritam M. Gharat, Shrey Tiwari, Michael D. Ernst, Martin Kellogg, Shuvendu K. Lahiri, Akash Lal, Manu Sridharan
Int. J. Softw. Tools Technol. Transf.5
2023 Pluggable Type Inference for Free
abstract
A pluggable type system extends a host programming language with type qualifiers. It lets programmers write types like unsigned int, secret string, and nonnull object. Typechecking with pluggable types detects and prevents more errors than the host type system. However, programmers must write type qualifiers; this is the biggest obstacle to use of pluggable types in practice. Type inference can solve this problem. Traditional approaches to type inference are type-system-specific: for each new pluggable type system, the type inference algorithm must be extended to build and then solve a system of constraints corresponding to the rules of the underlying type system. We propose a novel type inference algorithm that can infer type qualifiers for any pluggable type system with little to no new type-system-specific code-that is, “for free”. The key insight is that extant practical pluggable type systems are flow-sensitive and therefore already implement local type inference. Using this insight, we can derive a global inference algorithm by re-using existing implementations of local inference. Our algorithm runs iteratively in rounds. Each round uses the results of local type inference to produce summaries (specifications) for procedures and fields. These summaries enable improved inference throughout the program in subsequent rounds. The algorithm terminates when the inferred summaries reach a fixed point. In practice, many pluggable type systems are built on frameworks. By implementing our algorithm once, at the framework level, it can be reused by any typechecker built using that frame-work. Using that insight, we have implemented our algorithm for the open-source Checker Framework project, which is widely used in industry and on which dozens of specialized pluggable typecheckers have been built. In experiments with 11 distinct pluggable type systems and 12 projects, our algorithm reduced, by 45 % on average, the number of warnings that developers must resolve by writing annotations.
Martin Kellogg, Daniel Daskiewicz, Loi Ngo Duc Nguyen, Muyeed Ahmed, Michael D. Ernst
ASE1
2023 On the Relationship between Code Verifiability and Understandability
abstract
Proponents of software verification have argued that simpler code is easier to verify: that is, that verification tools issue fewer false positives and require less human intervention when analyzing simpler code. We empirically validate this assumption by comparing the number of warnings produced by four state-of-the-art verification tools on 211 snippets of Java code with 20 metrics of code comprehensibility from human subjects in six prior studies. Our experiments, based on a statistical (meta-)analysis, show that, in aggregate, there is a small correlation (r = 0.23) between understandability and verifiability. The results support the claim that easy-to-verify code is often easier to understand than code that requires more effort to verify. Our work has implications for the users and designers of verification tools and for future attempts to automatically measure code comprehensibility: verification tools may have ancillary benefits to understandability, and measuring understandability may require reasoning about semantic, not just syntactic, code properties.
Kobi Feldman, Martin Kellogg, Oscar Chaparro
ESEC/SIGSOFT FSE2
2023 Inference of Resource Management Specifications
abstract
A resource leak occurs when a program fails to free some finite resource after it is no longer needed. Such leaks are a significant cause of real-world crashes and performance problems. Recent work proposed an approach to prevent resource leaks based on checking resource management specifications. A resource management specification expresses how the program allocates resources, passes them around, and releases them; it also tracks the ownership relationship between objects and resources, and aliasing relationships between objects. While this specify-and-verify approach has several advantages compared to prior techniques, the need to manually write annotations presents a significant barrier to its practical adoption. This paper presents a novel technique to automatically infer a resource management specification for a program, broadening the applicability of specify-and-check verification for resource leaks. Inference in this domain is challenging because resource management specifications differ significantly in nature from the types that most inference techniques target. Further, for practical effectiveness, we desire a technique that can infer the resource management specification intended by the developer, even in cases when the code does not fully adhere to that specification. We address these challenges through a set of inference rules carefully designed to capture real-world coding patterns, yielding an effective fixed-point-based inference algorithm. We have implemented our inference algorithm in two different systems, targeting programs written in Java and C#. In an experimental evaluation, our technique inferred 85.5% of the annotations that programmers had written manually for the benchmarks. Further, the verifier issued nearly the same rate of false alarms with the manually-written and automatically-inferred annotations.
Narges Shadab, Pritam M. Gharat, Shrey Tiwari, Michael D. Ernst, Martin Kellogg, Shuvendu K. Lahiri, Akash Lal, Manu Sridharan
Proc. ACM Program. Lang.5
2022 Accumulation Analysis
Martin Kellogg, Narges Shadab, Manu Sridharan, Michael D. Ernst
ECOOP1
2021 Lightweight verification via specialized typecheckers
abstract
Testing and other unsound analyses are developer-friendly but cannot give guarantees that programs are free of bugs. Verification and other extant sound approaches can give guarantees but often require too much effort for everyday developers. In this work, we describe our efforts to make verification more accessible for developers by using specialized pluggable typecheckers---a relatively accessible verification technology---to solve complex problems that previously required more complex and harder-to-use verification approaches.
Martin Kellogg
ESEC/SIGSOFT FSE1
2021 Lightweight and modular resource leak verification
abstract
A resource leak occurs when a program allocates a resource, such as a socket or file handle, but fails to deallocate it. Resource leaks cause resource starvation, slowdowns, and crashes. Previous techniques to prevent resource leaks are either unsound, imprecise, inapplicable to existing code, slow, or a combination of these.
Martin Kellogg, Narges Shadab, Manu Sridharan, Michael D. Ernst
ESEC/SIGSOFT FSE1
2020 Verifying object construction
abstract
In 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
ICSE1
2020 Continuous Compliance
abstract
Vendors 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
ASE1
2019 Compile-Time Detection of Machine Image Sniping
abstract
Machine image sniping is a difficult-to-detect security vulnerability in cloud computing code. When programmatically initializing a machine, a developer specifies a machine image (operating system and file system). The developer should restrict the search to only those machine images which their organization controls: otherwise, an attacker can insert a similarly-named malicious image into the public database, where it might be selected instead of the image the developer intended. We present a lightweight type and effect system that detects requests to a cloud provider that are vulnerable to an image sniping attack, or proves that no vulnerable request exists in a codebase. We prototyped our type system for Java programs that initialize Amazon Web Services machines, and evaluated it on more than 500 codebases, detecting 14 vulnerable requests with only 3 false positives.
Martin Kellogg
ASE1
2018 Lightweight verification of array indexing
abstract
In languages like C, out-of-bounds array accesses lead to security vulnerabilities and crashes. Even in managed languages like Java, which check array bounds at run time, out-of-bounds accesses cause exceptions that terminate the program.
Martin Kellogg, Vlastimil Dort, Suzanne Millstein, Michael D. Ernst
ISSTA1
2016 Combining bug detection and test case generation
abstract
Detecting bugs in software is an important software engineering activity. Static bug finding tools can assist in detecting bugs automatically, but they suffer from high false positive rates. Automatic test generation tools can generate test cases which can find bugs, but they suffer from an oracle problem. We present N-Prog, a hybrid of the two approaches. N-Prog iteratively presents the developer an interesting, real input/output pair. The developer either classifies it as a bug (when the output is incorrect) or adds it to the regression test suite (when the output is correct). N-Prog selects input/output pairs whose input produces different output on a mutated version of the program which passes the test suite of the original. In initial experiments, N-Prog detected bugs and rediscovered test cases that had been removed from a test suite.
Martin Kellogg
SIGSOFT FSE1