首页> 外文会议>International Conference on Software Analysis, Evolution, and Reengineering >Efficient and Precise Dynamic Slicing for Client-Side JavaScript Programs
【24h】

Efficient and Precise Dynamic Slicing for Client-Side JavaScript Programs

机译:客户端JavaScript程序的高效,精确的动态切片

获取原文

摘要

JavaScript is the de facto dominant programming language for developing web applications. Most popular websites are using JavaScript, especially to develop client-side features. Being syntactically flexible and highly dynamic, JavaScript is easy to use and productive, but its code is known to be less maintainable. The task of maintaining client-side JavaScript code is further complicated by the pervasive interactions between JavaScript code and HTML elements, through browsers. In this paper, we present JS-Slicer, a dynamic slicer for JavaScript, to ease the task of understanding and debugging practical client-side JavaScript code. JS-Slicer defines three types of dependences, including data dependences, control dependences, and DOM dependences, to capture all relationships between program elements. JS-Slicer extends a novel dynamic analysis framework and combines dynamic and static analysis to precisely capture the dependences at run-time. A lot of language specific issues are properly handled, which enables JS-Slicer to slice practical JavaScript code. Our evaluation on six real-world web applications and JavaScript libraries shows that JS-Slicer is both precise and efficient: on average it captures around 40K dependences in 2.5K lines of code, in less than 3.0 seconds.
机译:JavaScript是用于开发Web应用程序的事实上占主导地位的编程语言。大多数流行的网站都使用JavaScript,特别是开发客户端功能。 JavaScript具有语法上的灵活性和高度的动态性,易于使用且高效,但众所周知其代码的可维护性较差。通过浏览器,JavaScript代码和HTML元素之间的广泛交互使维护客户端JavaScript代码的任务更加复杂。在本文中,我们介绍了JS-Slicer,它是JavaScript的动态切片器,可简化理解和调试实际客户端JavaScript代码的任务。 JS-Slicer定义了三种类型的依赖关系,包括数据依赖关系,控制依赖关系和DOM依赖关系,以捕获程序元素之间的所有关系。 JS-Slicer扩展了新颖的动态分析框架,并结合了动态和静态分析以精确捕获运行时的依赖性。正确处理了许多特定于语言的问题,这使JS-Slicer可以分割实际的JavaScript代码。我们对六个真实世界的Web应用程序和JavaScript库的评估表明,JS-Slicer既精确又高效:平均而言,它在不到3.0秒的时间内就可以在2.5K行代码中捕获约40K依赖。

著录项

相似文献

  • 外文文献
  • 中文文献
  • 专利
获取原文

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号