# JupOtter: Cell-Level Bug Detection in Jupyter Notebooks

arXiv: https://arxiv.org/abs/2606.23877 · HTML: https://mlsanity.com/paper/2606.23877/

## Key facts

- No citing papers in the map yet (data through 14 Oct 2026).
- Builds on 33 of its 63 references that are in the map.
- First posted on arXiv 22 Jun 2026.

## Builds on (most cited first, 30 of 33)

- [Code Llama: Open Foundation Models for Code](https://mlsanity.com/paper/2308.12950/) (2023)
- [CodeBERT: A Pre-Trained Model for Programming and Natural Languages](https://mlsanity.com/paper/2002.08155/) (2020)
- [CodeT5: Identifier-aware Unified Pre-trained Encoder-Decoder Models for Code Understanding and Generation](https://mlsanity.com/paper/2109.00859/) (2021)
- [CodeSearchNet Challenge: Evaluating the State of Semantic Code Search](https://mlsanity.com/paper/1909.09436/) (2019)
- [GraphCodeBERT: Pre-training Code Representations with Data Flow](https://mlsanity.com/paper/2009.08366/) (2020)
- [Unified Pre-training for Program Understanding and Generation](https://mlsanity.com/paper/2103.06333/) (2021)
- [UniXcoder: Unified Cross-Modal Pre-training for Code Representation](https://mlsanity.com/paper/2203.03850/) (2022)
- [CodeT5+: Open Code Large Language Models for Code Understanding and Generation](https://mlsanity.com/paper/2305.07922/) (2023)
- [Natural Language to Code Generation in Interactive Data Science Notebooks](https://mlsanity.com/paper/2212.09248/) (2022)
- [DeepBugs: A Learning Approach to Name-based Bug Detection](https://mlsanity.com/paper/1805.11683/) (2018)
- [Self-Supervised Bug Detection and Repair](https://mlsanity.com/paper/2105.12787/) (2021)
- [A Deep Dive into Large Language Models for Automated Bug Localization and Repair](https://mlsanity.com/paper/2404.11595/) (2024)
- [LineVD: Statement-level Vulnerability Detection using Graph Neural Networks](https://mlsanity.com/paper/2203.05181/) (2022)
- [Training and Evaluating a Jupyter Notebook Data Science Assistant](https://mlsanity.com/paper/2201.12901/) (2022)
- [DefectHunter: A Novel LLM-Driven Boosted-Conformer-based Code Vulnerability Detection Mechanism](https://mlsanity.com/paper/2309.15324/) (2023)
- [Better Code, Better Sharing:On the Need of Analyzing Jupyter Notebooks](https://mlsanity.com/paper/1906.05234/) (2019)
- [KGTorrent: A Dataset of Python Jupyter Notebooks from Kaggle](https://mlsanity.com/paper/2103.10558/) (2021)
- [Leveraging Locality in Abstractive Text Summarization](https://mlsanity.com/paper/2205.12476/) (2022)
- [ChatDBG: Augmenting Debugging with Large Language Models](https://mlsanity.com/paper/2403.16354/) (2024)
- [A deep tree-based model for software defect prediction](https://mlsanity.com/paper/1802.00921/) (2018)
- [A Large-Scale Comparison of Python Code in Jupyter Notebooks and Scripts](https://mlsanity.com/paper/2203.16718/) (2022)
- [Nalin: Learning from Runtime Behavior to Find Name-Value Inconsistencies in Jupyter Notebooks](https://mlsanity.com/paper/2112.06186/) (2021)
- [Bug Analysis in Jupyter Notebook Projects: An Empirical Study](https://mlsanity.com/paper/2210.06893/) (2022)
- [Jupyter Notebooks on GitHub: Characteristics and Code Clones](https://mlsanity.com/paper/2007.10146/) (2020)
- [A Static Analysis Framework for Data Science Notebooks](https://mlsanity.com/paper/2110.08339/) (2021)
- [Eliciting Best Practices for Collaboration with Computational Notebooks](https://mlsanity.com/paper/2202.07233/) (2022)
- [Why do Machine Learning Notebooks Crash? An Empirical Study on Public Python Jupyter Notebooks](https://mlsanity.com/paper/2411.16795/) (2024)
- [Pynblint: a Static Analyzer for Python Jupyter Notebooks](https://mlsanity.com/paper/2205.11934/) (2022)
- [Context-aware Execution Migration Tool for Data Science Jupyter Notebooks on Hybrid Clouds](https://mlsanity.com/paper/2107.00187/) (2021)
- [Untangling Knots: Leveraging LLM for Error Resolution in Computational Notebooks](https://mlsanity.com/paper/2405.01559/) (2024)

## Abstract (arXiv)

Jupyter Notebooks are an increasingly popular coding environment used across many domains, especially in Python-based data science and scientific computing. Originally used for prototyping and interactive exploration, notebooks are increasingly used to develop more complex programs, leading to a rapid rise in buggy notebooks on platforms like GitHub. To address this trend, we present JupOtter, a bug detection system designed specifically for Jupyter Notebooks. JupOtter features three novel contributions: (1) a notebook-specific tokenization strategy that preserves cell structure, (2) a cell-level bug prediction technique, and (3) a new labeled dataset, OtterDataset, containing over 21,000 notebooks annotated for fine-grained cell-level bug detection. JupOtter achieves cell-level bug detection F1 scores that surpass static analyzers and large language models in two out of three evaluation datasets.
