# 理解 JavaScript 基于事件的交互

> Clematis 根据录制的用户会话，帮助开发者理解 JavaScript 网页应用的运行时行为。代理在传输过程中对 JavaScript 进行插桩，记录 DOM 事件、定时器、XMLHttpRequest 各阶段、函数调用及 DOM 变更。轨迹被划分为若干情节，每个情节包含触发事件、执行的函数及由此产生的 DOM 变化，情节之间以时间与因果边连接，并以交互式可视化呈现。在 Phormer 相册应用上开展、有 20 名开发者参加的工业研究中，作者报告其任务准确率比使用各自惯用工具的开发者高 61%，完成时间少 47%。

- 作者：Saba Alimadadi; Sheldon Sequeira; Ali Mesbah; Karthik Pattabiraman
- 原标题：Understanding JavaScript Event-Based Interactions
- 发表载体：ICSE 2014
- 发表状态：会议论文
- 出版／提交日期：2014 年 5 月 31 日
- 日期依据：ACM 提交的 Crossref 元数据将在线及印刷出版日期均列为 2014 年 5 月 31 日，这也是 ICSE 2014 的首日；该日期取自出版方元数据，而非会议日程。
- DOI：10.1145/2568225.2568268
- 来源复核于：2026-10-20
- 收录于：2026-11-02
- 原始论文：<https://doi.org/10.1145/2568225.2568268>
- PDF：<https://people.ece.ubc.ca/amesbah/resources/papers/clematis-icse14.pdf>
- 代码：<https://github.com/saltlab/clematis/tree/7b2479a09721699eaaa24f6e258df5e2beb35d0a>
- BibTeX：<https://awesomerea.org/papers/citations/paper-clematis.bib>
- 目录页面：<https://awesomerea.org/zh/papers/paper-clematis/>
- 记录 JSON：<https://awesomerea.org/papers/paper-clematis/record.json>
- 英文版：[English](https://awesomerea.org/papers/paper-clematis/index.md)

## 研究范围与局限

这是面向单次录制会话中所触发客户端行为的动态程序理解工具；它不重建服务端逻辑，不生成替代应用，也不确立行为等价性。通过 eval 执行的代码不会被捕获。评估包括两项小规模、针对理解任务的对照实验：16 名 UBC 参与者在实验室自建的问卷应用上与 Firebug 对比，以及 20 名专业开发者在 Phormer 上开展的实验。准确率由作者依据事先编写的答案要点评分。运行开销仅针对一分钟的 Phormer 操作进行测量。2014 年的原型通过 Selenium 与 WebScarab 代理驱动 Firefox；未证明其可在当前浏览器上运行，用于比较的工具也已是历史版本。

## 与本合集的关联

补充从执行轨迹恢复网页应用事件、定时器、请求与 DOM 因果关系的研究，与本合集中基于截图、设计稿和视频的网站重建研究互补。

## 发表与复核说明

Crossref 确认四位作者顺序、ICSE ’14 会议论文集及第 367–377 页；其标题采用句首大写形式。作者托管的 PDF 共 11 页，含 ICSE ’14 版权许可声明。扩展版 ACM TOSEM 2016 文章《Understanding JavaScript Event-Based Interactions with Clematis》（DOI 10.1145/2876441）是独立作品。论文引用的实验室页面 salt.ece.ubc.ca/software/clematis/ 已无法访问；其 2014-07-08 的 Internet Archive 存档链接至 github.com/saltlab/clematis 及技术报告 UBC-SALT-2014-001。所审阅仓库采用 GPL-3.0 许可，master 分支位于 2015-06-19 提交的 7b2479a0，此后再无推送。README 说明该工具需在 Eclipse（含 m2e 插件）中运行，并需要 Maven、Jetty 服务器和 Mozilla Firefox；Chrome 支持仅在计划中。工具曾用 Phormer 和一个可下载的问卷应用测试。pom.xml 面向 Java 1.6，使用 Crawljax 2.2 与 Rhino 1.7R4，并对 Selenium（自 2.31.0 起）和 WebScarab 使用无上限版本范围，因此现在构建可能解析到不同依赖。

## 一手来源

1. <https://doi.org/10.1145/2568225.2568268>
2. <https://api.crossref.org/works/10.1145/2568225.2568268>
3. <https://people.ece.ubc.ca/amesbah/resources/papers/clematis-icse14.pdf>
4. <https://api.crossref.org/works/10.1145/2876441>
5. <https://web.archive.org/web/20140708215205/http://salt.ece.ubc.ca/software/clematis/>
6. <https://github.com/saltlab/clematis/blob/7b2479a09721699eaaa24f6e258df5e2beb35d0a/README.md>
7. <https://github.com/saltlab/clematis/blob/7b2479a09721699eaaa24f6e258df5e2beb35d0a/LICENSE.md>
8. <https://github.com/saltlab/clematis/blob/7b2479a09721699eaaa24f6e258df5e2beb35d0a/pom.xml>

## 关于此条目

已依据论文及一手来源复核。请通过原始论文或 BibTeX 引用原作者。
原创说明采用 MIT 许可；外部项目、论文与素材保留各自的权利和许可。
