Nalin: Learning from Runtime Behavior to Find Name-Value Inconsistencies in Jupyter Notebooks
Not on the map. Why?
Abstract (arXiv)
Variable names are important to understand and maintain code. If a variable name and the value stored in the variable do not match, then the program suffers from a name-value inconsistency, which is due to one of two situations that developers may want to fix: Either a correct value is referred to through a misleading name, which negatively affects code understandability and maintainability, or the correct name is bound to a wrong value, which may cause unexpected runtime behavior. Finding name-value inconsistencies is hard because it requires an understanding of the meaning of names and knowledge about the values assigned to a variable at runtime. This paper presents Nalin, a technique to automatically detect name-value inconsistencies. The approach combines a dynamic analysis that tracks assignments of values to names with a neural machine learning model that predicts whether a name and a value fit together. To the best of our knowledge, this is the first work to formulate the problem of finding coding issues as a classification problem over names and runtime values. We apply Nalin to 106,652 real-world Python programs, where meaningful names are particularly important due to the absence of statically declared types. Our results show that the classifier detects name-value inconsistencies with high accuracy, that the warnings reported by Nalin have a precision of 80% and a recall of 76% w.r.t. a ground truth created in a user study, and that our approach complements existing techniques for finding coding issues.
Key facts. Cited by 6 papers in the map (data through 7 Oct 2026). First posted on arXiv 12 Dec 2021.
Builds on
No reference list yet.
Built on by
Citing papers per year: 2022: 2; 2023: 2; 2024: 1; 2025: 0; 2026: 1.
6 papers.
- 2024Can LLMs Replace Manual Annotation of Software Engineering Artifacts?cited by 40
- 2023AI-native Interconnect Framework for Integration of Large Language Model Technologies in 6G Systemscited by 19
- 2023LExecutor: Learning-Guided Executioncited by 7
- 2022NeuDep: Neural Binary Memory Dependence Analysiscited by 3
- 2022A Retrospective on ICSE 2022cited by 0
- 2026JupOtter: Cell-Level Bug Detection in Jupyter Notebookscited by 0
- 2026JupOtter: Cell-Level Bug Detection in Jupyter Notebooks22 Jun 2026
- 2024Can LLMs Replace Manual Annotation of Software Engineering Artifacts?10 Aug 2024
- 2023AI-native Interconnect Framework for Integration of Large Language Model Technologies in 6G Systems10 Nov 2023
- 2023LExecutor: Learning-Guided Execution5 Feb 2023
- 2022NeuDep: Neural Binary Memory Dependence Analysis4 Oct 2022
- 2022A Retrospective on ICSE 202226 Jul 2022