中文

Context2Name:一种基于深度学习从使用上下文推断自然变量名的方法

软件工程 2018-09-17 v1 机器学习 编程语言 机器学习

摘要

部署在现实环境中的大多数 JavaScript 代码都经过了压缩(minified),该过程将标识符名称替换为简短、任意且无意义的名称。压缩后的代码占用空间更小,但也使得代码极难被人工审查和理解。本文提出 Context2Name,一种基于深度学习的技术,通过为压缩名预测自然标识符名称来部分逆转压缩的效果。其核心思想是从变量的使用上下文中预测一个能捕捉变量含义的名称。该方法将轻量的基于 token 的静态分析与自编码器神经网络(其用于汇总使用上下文)以及循环神经网络(其为给定使用上下文预测自然名称)相结合。我们使用大规模真实世界 JavaScript 代码语料库对 Context2Name 进行评估,结果表明其成功预测了 47.5% 的所有压缩标识符,且平均每次预测仅需 2.9 毫秒。与前沿工具 JSNice 和 JSNaughty 的对比显示,我们的方法在准确率上表现相当,而在效率上更优。此外,Context2Name 补充了现有前沿工具,额外预测出两个现有工具均遗漏的 5.3% 的标识符。

关键词

引用

@article{arxiv.1809.05193,
  title  = {Context2Name: A Deep Learning-Based Approach to Infer Natural Variable Names from Usage Contexts},
  author = {Rohan Bavishi and Michael Pradel and Koushik Sen},
  journal= {arXiv preprint arXiv:1809.05193},
  year   = {2018}
}