Nalin: Learning from Runtime Behavior to Find Name-Value Inconsistencies in Jupyter Notebooks
Jibesh Patra, Michael Pradel

TL;DR
Nalin is a novel technique that uses dynamic analysis and neural machine learning to automatically detect name-value inconsistencies in Python code, improving code understandability and correctness.
Contribution
It introduces the first formulation of name-value inconsistency detection as a classification problem using runtime data and machine learning.
Findings
High accuracy in detecting inconsistencies (precision 80%, recall 76%)
Effective on large real-world Python programs
Complements existing code analysis techniques
Abstract
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…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Code & Models
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
Taxonomy
TopicsSoftware Engineering Research · Topic Modeling · Advanced Malware Detection Techniques
