利用使用上下文恢复压缩代码中的变量名
软件工程
2019-06-11 v1 信息检索
摘要
在现代 Web 技术中,JavaScript(JS)代码起着重要作用。为了避免原始源代码暴露,部署在野外的 JS 代码中的变量名常被替换为简短且无意义的名称,从而使得代码极难被人工理解和分析。本文提出 JSNeat,一种基于信息检索(IR)的方法来恢复压缩 JS 代码中的变量名。JSNeat 采用数据驱动的方法,通过在大型开源 JS 代码语料库中搜索来恢复名称。我们使用三类上下文将给定压缩代码中的变量与语料库进行匹配,包括该变量的属性与角色上下文、该变量及与待恢复其他变量之间关系的上下文,以及该变量所贡献函数的任务上下文。我们进行了若干实证实验,在包含超过 322K 个 JS 文件、1M 个函数以及 3.5M 个带有 176K 个唯一变量名的变量的数据集上评估 JSNeat。我们发现 JSNeat 达到了 69.1% 的高准确率,相对于两种最先进的方法 JSNice 和 JSNaughty 分别实现了 66.1% 和 43% 的相对提升。JSNeat 恢复一个文件或一个变量所需的时间分别是 JSNice 的 2 倍快、JNaughty 的 4 倍快。
引用
@article{arxiv.1906.03488,
title = {Recovering Variable Names for Minified Code with Usage Contexts},
author = {Hieu Tran and Ngoc Tran and Son Nguyen and Hoan Nguyen and Tien Nguyen},
journal= {arXiv preprint arXiv:1906.03488},
year = {2019}
}
备注
11 pages, 6 figures, ICSE 2019