Skip to main content
QUICK REVIEW

[论文解读] JSClassFinder: A Tool to Detect Class-like Structures in JavaScript

Leonardo Humberto Silva, Daniel Hovadick|arXiv (Cornell University)|Feb 18, 2016
Software Engineering Research参考文献 8被引用 6
一句话总结

JSClassFinder 是一种逆向工程工具,通过抽象语法树(AST)的静态分析,检测 JavaScript 代码中的类结构,支持生成 UML 图、分布图和标准度量,从而实现对缺乏原生类语法的遗留 JavaScript 系统的面向对象建模。该工具支持可视化与度量计算,有助于软件分析,并为迁移到 ECMAScript 6 提供支持。

ABSTRACT

With the increasing usage of JavaScript in web applications, there is a great demand to write JavaScript code that is reliable and maintainable. To achieve these goals, classes can be emulated in the current JavaScript standard version. In this paper, we propose a reengineering tool to identify such class-like structures and to create an object-oriented model based on JavaScript source code. The tool has a parser that loads the AST (Abstract Syntax Tree) of a JavaScript application to model its structure. It is also integrated with the Moose platform to provide powerful visualization, e.g., UML diagram and Distribution Maps, and well-known metric values for software analysis. We also provide some examples with real JavaScript applications to evaluate the tool.

研究动机与目标

  • 为解决当前缺乏识别 JavaScript 中类结构的工具这一问题,因为 JavaScript 虽广泛使用,但 ES5 中缺乏原生类语法。
  • 通过建模类、方法和属性等面向对象实体,支持对 JavaScript 系统的软件分析。
  • 通过与 Moose 平台集成,提供可视化与基于度量的洞察,揭示 JavaScript 应用的结构组织。
  • 将基于原型的继承模式逆向工程为正式的类模型,以提升可维护性。
  • 通过识别与新类语法一致的模式,支持未来迁移到 ECMAScript 6 的原生类语法。

提出的方法

  • 使用 Esprima 将 JavaScript 源代码解析为 AST,再将其转换为 JSON 格式的 AST 以供分析。
  • 通过识别定义属性和方法的构造函数,推断基于原型的继承关系,从而检测类结构。
  • 基于命名和结构模式,将属性和方法归入类结构实体,从 AST 构建面向对象模型。
  • 将生成的模型与 Moose 平台集成,以支持 UML 类图、分布图和树形视图的可视化。
  • 计算标准软件度量,如类数(NOC)、方法数(NOM)、属性数(NOA)和继承深度(DIT)。
  • 通过基于 Pharo 的界面支持用户交互,实现模型的加载、可视化与导航,并支持自定义可视化与度量过滤器。

实验结果

研究问题

  • RQ1如何在 ES5 中缺乏原生类语法的 JavaScript 代码中自动检测类结构?
  • RQ2基于原型的继承模式在多大程度上可被逆向工程为正式的类模型?
  • RQ3该工具在识别和可视化真实世界 JavaScript 应用中的面向对象结构方面效果如何?
  • RQ4哪些度量与可视化手段可增强对 JavaScript 系统结构组织的理解?
  • RQ5该工具如何支持将遗留 JavaScript 代码迁移到 ECMAScript 6 的原生类语法?

主要发现

  • JSClassFinder 通过分析 AST 并从构造函数和原型链推断类定义,成功识别出 JavaScript 中的类结构。
  • 该工具生成准确的 UML 类图和分布图,真实反映了如 PDF.js 和 jQuery 等实际 JavaScript 应用的结构组织。
  • 它计算出包括 NOC、NOM、NOA 和 DIT 在内的标准软件度量,为代码复杂度与设计提供量化洞察。
  • 与 Moose 平台的集成支持高级可视化与分析,有助于导航与探索面向对象模型。
  • 该工具识别出在检测第三方库(如 ClazzJS)创建的类和单例对象方面存在局限,指出了未来改进的方向。
  • 该工具已公开可用,并支持未来扩展以支持 ECMAScript 6 类语法,有助于遗留代码的现代化。

更好的研究,从现在开始

从阅读论文到最终审阅,大幅缩短您的研究时间。

无需绑定信用卡

本解读由 AI 生成,并经人工编辑审核。