Research Projects
I am proud to release all of the software that accompanies my publications. My publications page lists GitHub repositories and/or artifacts along with the citation; this page highlights the titles of those articles and their respective artifacts. Unless otherwise specified on the project page, all of my software is released under an MIT license.
An Empirical Examination of Fuzzer Mutator Performance (2024). [artifact].
Details230,439 Test Failures Later: An Empirical Evaluation of Flaky Failure Classifiers (2024). [artifact].
DetailsAutomatically Reproducing Timing-Dependent Flaky-Test Failures (2024). [artifact].
DetailsCrossover in Parametric Fuzzing (2024). [artifact].
DetailsThirty-Three Years of Mathematicians and Software Engineers: A Case Study of Domain Expertise and Participation in Proof Assistant Ecosystems (2024). [artifact].
DetailsFlexible and Optimal Dependency Management via Max-SMT (2023). [artifact].
DetailsA Large Scale Analysis of Semantic Versioning in NPM (2023). [artifact].
Detailsnpm-follower: A Complete Dataset Tracking the NPM Ecosystem (2023). [artifact].
DetailsA Tool for Mutation Analysis in Racket (2023). [artifact].
DetailsA Retrospective Study of one Decade of Artifact Evaluations (2022). [artifact].
DetailsOn the Use of Mutation Analysis for Evaluating Student Test Suite Quality (2022). [artifact].
DetailsCONFETTI: Amplifying Concolic Guidance for Fuzzers (2022). [artifact]. [code/git].
DetailsA Practical Approach for Dynamic Taint Tracking with Control-flow Relationships (2021). [code/git].
DetailsFlakeFlagger: Predicting Flakiness Without Rerunning Tests (2021). [artifact]. [code/git].
DetailsA Large-Scale Longitudinal Study of Flaky Tests (2020). [artifact].
DetailsRevealing Injection Vulnerabilities by Leveraging Existing Tests (2020). [artifact]. [code/git].
DetailsExperience Report: Debugging the Performance of Maven’s Test Isolation (2020). [code/git].
DetailsMitigating the Effects of Flaky Tests on Mutation Testing (2019). [artifact].
DetailsCROCHET: Checkpoint and Rollback via Lightweight Heap Traversal on Stock JVMs (2018). [code/git].
DetailsObfuscation Resilient Search through Executable Classification (2018). [code/git].
DetailsPractical Test Dependency Detection (2018). [code/git].
DetailsDeFlaker: Automatically Detecting Flaky Tests (2018). [code/git].
DetailsA Large-Scale, Longitudinal Study of Test Coverage Evolution (2018). [artifact].
DetailsReplay without Recording of Production Bugs for Service Oriented Applications (2018). [code/git].
DetailsCode Relatives: Detecting Similarly Behaving Software (2016). [code/git].
DetailsIdentifying Functionally Similar Code in Complex Codebases (2016). [code/git].
DetailsDynamic Taint Tracking for Java with Phosphor (Demo) (2015). [code/git].
DetailsSynapse: A Microservices Architecture for Heterogeneous-Database Web Applications (2015). [code/git].
DetailsPebbles: Fine-Grained Data Management Abstractions for Modern Operating Systems (2014). [code/git].
DetailsPhosphor: Illuminating Dynamic Data Flow in Off-The Shelf JVMs (2014). [artifact]. [code/git].
DetailsUnit Test Virtualization with VMVM (2014). [code/git].
DetailsChronicler: Lightweight Recording to Reproduce Field Failures (2013). [code/git].
Details
Other research-related software that does not directly tie to a publication:
- Java bytecode rewriting examples
- Maven lifecycle logger
- JavaSlicer fork, with some bug patches and support for multithreaded code
- Surefire Isolated JUnit Method Runner, a Surefire test provider that will run each test method in its own process
- Surefire Isolated Rerunner, a Surefire test provider that will rerun each failing test in its own process, rather than rerunning failing tests in the same process (this project is used by DeFlaker)
Infrastructure for Research
- ripley-cloud/gha-slurm, GitHub App that launches GitHub Actions builders on-demand on a Slurm HPC cluster
- jon-bell/fuzzing-build-site-action, GitHub Action to build a report from several fuzzing campaigns
- jon-bell/bytecode-examples, A collection of several tutorials on bytecode instrumentation for the JVM
- jon-bell/maven-lifecycle-logger, A Maven extension that will record the execution time of each execution of each plugin of each project in a build
Infrastructure for Teaching
- neu-se/covey.town, term project for CS4530, see also deployed app
- jon-bell/jekyll-canvas-lms, Jekyll plugin to auto-post assignments and lectures to Canvas
Personal Projects
- clowdr-app/clowdr, Midspace virtual conference platform
- jon-bell/homebridge-synology-surveillance-homemode, Homebridge plugin that exposes a switch to turn on/off the ‘Home’ mode on Synology Surveillance Station
- jon-bell/homebridge-platform-daikin-itc, Homebridge plugin that exposes a multi-zone Daikin ITC HVAC system
Other projects that I have contributed to
- apache/maven-surefire, Maven’s test runner plugin. Contributed: option to rerun failing tests in JUnit5, an optimization that reduced time to execute tests in isolation by ~20x
- hcoles/pitest, Java mutation testing tool. Contributed a faster, more precise coverage implementation
- rohanpadhye/JQF, Java fuzzing tool. Contributed a faster, collision-free coverage implementation
If you have any questions about these or any other of my projects, please email me directly. I am interested in making sure that these projects can continue to be used and built upon by other researchers and practitioners.