About:
I am a Senior Engineer at Uber's Programming Systems Group, where I work primarily on developing static analysis tools for Java applications. My current focus is on improving application reliability by preventing broad categories of bugs using fast type-system based tools that run on every local compilation, while minimizing developer annotation burden. My research interests more broadly include static and dynamic analysis, modeling of third-party code behavior, as well as automated test generation and UI exploration for mobile applications. Previous to Uber I got my Ph.D. in Computer Science from Stanford University under the direction of Prof. Alex Aiken.
Tools:
NullAway

A fast, practical, static nullness checker for Java


NullAway takes in code following an intuitive annotation discipline, where values that might be null at runtime, must be annotated with @Nullable. It performs type-based local analysis to ensure that any pointer that gets dereferenced in annotated code cannot be null, and thus prevent NullPointerExceptions (NPEs). In our measurements, the build-time overhead of running NullAway is usually less than 20% of javac, which allows us to use it to analize all of Uber Android Java code on every local compilation.


with Manu Sridharan, Subarno Banerjee, and others at Uber

RxThreadEffectChecker

A static analysis tool for preventing UI access off the main thread in stream-based (RxJava/RxAndroid) Android applications.


The RxThreadEffectChecker is built on the Checker Framework, and particularly it works in tandem with their guieffect checker. It extends these checkers with awaraness of the ReactiveX stream-based threading model. We have deployed RxThreadEffectChecker at Uber and are working on a faster iteration of this tool, using the same type system.


with Benno Stein, Manu Sridharan, and others at Uber

Research Publications:
NullAway: Practical Type-Based Null Safety for Java

Subarno Banerjee, Lazaro Clapp, Manu Sridharan
27th ACM Joint European Software Engineering Conference and Symposium on the Foundations of Software Engineering (ESEC/FSE), 2019.

Safe stream-based programming with refinement types

Benno Stein, Lazaro Clapp, Manu Sridharan, Bor-Yuh Evan Chang
33rd ACM/IEEE International Conference on Automated Software Engineering, (ASE), 2018.

Eventually Sound Points-To Analysis with Missing Code

Osbert Bastani, Lazaro Clapp, Saswat Anand, Rahul Sharma, Alex Aiken
In submission.

PDF
Minimizing GUI Event Traces

Lazaro Clapp, Osbert Bastani, Saswat Anand, Alex Aiken
24th ACM SIGSOFT International Symposium on the Foundations of Software Engineering (FSE), 2016.

PDF
Modelgen: Mining Explicit Information Flow Specifications from Concrete Executions

Lazaro Clapp, Saswat Anand, Alex Aiken
ACM International Symposium on Software Testing and Analysis (ISSTA), 2015.