中文

Nalin:从运行时行为中学习以发现 Jupyter 笔记本中的名值不一致

软件工程 2021-12-14 v1

摘要

变量名对于理解和维护代码十分重要。若变量名与变量中存储的值不匹配,则程序存在名值不一致问题,这源于开发者可能希望修复的两种情况之一:要么通过具有误导性的名称引用了正确的值,从而对代码可理解性和可维护性产生负面影响;要么正确的名称绑定了错误的值,从而可能导致意外的运行时行为。发现名值不一致十分困难,因为这需要理解名称的含义以及变量在运行时被赋值的相关知识。本文提出 Nalin,一种自动检测名值不一致的技术。该方法将跟踪值到名称赋值的动态分析与预测名称和值是否匹配的神经机器学习模型相结合。据我们所知,这是首项将发现编码问题形式化为针对名称和运行时值的分类问题的工作。我们将 Nalin 应用于 106,652 个真实世界 Python 程序,由于缺少静态声明类型,在这些程序中有意义的名称尤为重要。我们的结果表明,该分类器以高准确率检测名值不一致,Nalin 报告的警告相对于用户研究中建立的基准真值具有 80% 的精确率和 76% 的召回率,并且我们的方法补充了现有的编码问题发现技术。

关键词

引用

@article{arxiv.2112.06186,
  title  = {Nalin: Learning from Runtime Behavior to Find Name-Value Inconsistencies in Jupyter Notebooks},
  author = {Jibesh Patra and Michael Pradel},
  journal= {arXiv preprint arXiv:2112.06186},
  year   = {2021}
}

备注

International Conference on Software Engineering (ICSE), 2022