This paper presents eye2vec, an infrastructure for analyzing software developers' eye movements while reading source code. In common eye-tracking studies in program comprehension, researchers must preselect analysis targets such as control flow or syntactic elements, and then develop analysis methods to extract appropriate metrics from the fixation for source code. Here, researchers can define various levels of AOIs like words, lines, or code blocks, and the difference leads to different results. Moreover, the interpretation of fixation for word/line can vary across the purposes of the analyses. Hence, the eye-tracking analysis is a difficult task that depends on the time-consuming manual work of the researchers. eye2vec represents continuous two fixations as transitions between syntactic elements using distributed representations. The distributed representation facilitates the adoption of diverse data analysis methods with rich semantic interpretations.
academic- 论文ID: 2510.11722
- 标题: eye2vec: Learning Distributed Representations of Eye Movement for Program Comprehension Analysis
- 作者: Haruhiko Yoshioka, Kazumasa Shimari, Hidetake Uwano, Kenichi Matsumoto
- 分类: cs.SE (软件工程)
- 发表时间/会议: ETRA '25 (2025 Symposium on Eye Tracking Research and Applications), May 26–29, 2025, Tokyo, Japan
- 论文链接: https://arxiv.org/abs/2510.11722
本文提出了eye2vec,这是一个用于分析软件开发者在阅读源代码时眼动行为的基础设施。在传统的程序理解眼动跟踪研究中,研究人员必须预先选择分析目标(如控制流或语法元素),然后开发分析方法从源代码的注视点提取适当的度量。研究人员可以定义不同层次的兴趣区域(AOI),如单词、行或代码块,这些差异导致不同的结果。此外,对单词/行注视点的解释因分析目的而异。因此,眼动跟踪分析是一项困难的任务,依赖于研究人员耗时的手工工作。eye2vec使用分布式表示将连续的两个注视点表示为语法元素之间的转换。分布式表示促进了多样化数据分析方法的采用,具有丰富的语义解释。
传统的眼动跟踪分析在程序理解研究中面临几个关键挑战:
- 分析目标预选择问题:研究人员必须事先确定要分析的特定语法元素或控制流,这种选择很大程度上依赖于研究者的经验
- AOI定义的主观性:不同的兴趣区域定义(单词级、行级、代码块级)导致不同的分析结果
- 单一语义分析局限:现有研究通常只关注单一含义,难以同时分析多个语义层面
- 手工分析的低效性:传统方法需要大量的人工干预和时间消耗
理解开发者的眼动模式对于:
- 提取专家开发者的理解模式和策略
- 提高开发效率
- 改进开发者教育
- 优化代码可读性设计
具有重要意义。例如,在方法摘要任务中,专家开发者倾向于基于最频繁阅读的代码行生成摘要。
- 依赖研究者经验:分析方法的选择主观性强
- 语义信息缺失:基于坐标或行号的传统映射缺乏语义理解
- 多维分析困难:难以同时考虑语法元素和结构意义
- 自动化程度低:需要大量手工特征工程
- 提出了eye2vec基础设施:首个将眼动数据与源代码分布式表示相结合的分析框架
- 实现了语义级眼动分析:通过语法元素映射而非坐标映射,支持多层次语义解释
- 支持自动化多维分析:利用分布式表示捕获多个语义方面,支持机器学习和深度学习方法
- 提供了两个关键应用场景:数据挖掘分析支持和基于机器学习的标签预测
输入:开发者阅读源代码时的眼动坐标数据和对应的源代码
输出:表示眼动特征的分布式向量(eye vector)
目标:将基于坐标的眼动数据转换为具有语义意义的分布式表示
eye2vec包含以下核心模块:
- 功能:将眼动跟踪器记录的坐标转换为源代码中的行号和列号
- 实现:使用iTrace工具进行坐标到代码位置的映射
- 功能:从源代码中提取路径上下文(path contexts)
- 机制:路径上下文指抽象语法树(AST)上两个单词之间的路径
- 输出:路径上下文及其对应的预训练嵌入向量
- 功能:将行列号与路径上下文关联
- 处理:将眼动数据转换为路径上下文的向量和注视计数
- 创新:将注视计数转换为比例,反映开发者特征
- 功能:聚合向量和注视计数生成最终的eye vector
- 加权机制:根据注视频率对嵌入向量应用权重
- 输出:表示眼动特征的最终分布式表示
- 创新:从坐标映射转向语法元素映射
- 优势:能够解释复杂的代码结构(循环、分支)中的眼动模式
- 机制:基于注视频率对路径上下文向量进行加权
- 效果:突出开发者关注的重要语义关系
- 能力:同时支持高层语义分析(理解策略)和低层分析(变量操作跟踪)
- 实现:通过分布式表示整合多个路径上下文的关系
- 眼动数据:开发者阅读源代码时的注视点坐标
- 源代码:对应的程序源文件
- 约束:当前版本仅接受眼动数据输入,不关联个人信息
- 眼动坐标 → 代码行列位置
- 源代码 → AST路径上下文
- 位置信息与路径上下文关联
- 生成加权的分布式表示
- 能力:支持探索性数据挖掘分析
- 优势:相比传统基于坐标的分析,提供更丰富的语义信息
- 应用:调查语义相似语法元素组中趋势的潜在意义
- 任务:基于眼动数据预测开发者特征
- 预测目标:
- 教育应用:为个体开发者提供自适应教学支持
- 向量空间相似度:能够测量理解模式之间的相似性
- 自动化程度:支持机器学习和深度学习技术的自动分析
- 多维分析:同时考虑多个语义层面
- Abid et al. (2019):方法摘要任务中的眼动分析,发现专家基于频繁阅读行生成摘要
- Lin et al. (2016):程序调试过程中的认知过程跟踪
- Sharafi et al. (2022):开发者代码导航策略研究
- code2vec (Alon et al. 2019):代码分布式表示学习方法
- iTrace (Guarnera et al. 2018):开发环境中的眼动跟踪基础设施
- 语义理解:超越传统坐标映射,提供语义级分析
- 自动化:减少对研究者经验的依赖
- 多维性:支持同时分析多个语义层面
- eye2vec成功实现了眼动数据的语义级分布式表示
- 该方法支持自动化的多维语义分析
- 为眼动跟踪研究提供了新的基础设施和分析范式
- 隐私保护限制:当前版本仅接受眼动数据,不关联个人信息
- 依赖预训练模型:需要code2vec等预训练的代码表示模型
- 验证不足:缺乏大规模实证验证和与传统方法的系统对比
- 开发应用工具:构建基于eye2vec的机器学习和深度学习应用工具
- 自动模式提取:支持研究人员高效提取有用的理解模式
- 扩展应用场景:探索更多程序理解任务中的应用
- 范式转换:从坐标映射到语义映射的重要转变
- 技术融合:巧妙结合眼动跟踪和代码表示学习
- 自动化提升:显著减少人工干预需求
- 多层次分析:同时支持高层和低层语义分析
- 分布式表示:为眼动分析引入现代表示学习方法
- 可扩展性:为后续研究提供了通用基础设施
- 教育应用:支持个性化开发者教育
- 效率提升:自动化分析减少研究成本
- 标准化:提供统一的分析框架
- 缺乏对比实验:未与传统方法进行系统性能对比
- 验证数据有限:缺乏大规模数据集验证
- 效果量化缺失:未提供具体的性能提升数据
- 参数设置缺失:未详细说明关键超参数
- 复杂度分析缺乏:未分析计算复杂度和效率
- 鲁棒性未知:对不同类型代码的适应性未验证
- 隐私约束:当前设计限制了某些应用场景
- 依赖性强:依赖多个外部工具和预训练模型
- 泛化能力未知:在不同编程语言上的表现未验证
- 新研究方向:为眼动跟踪研究开辟新路径
- 方法论创新:提供了可复用的分析框架
- 跨领域融合:连接了软件工程和认知科学
- 工具开发:为相关工具开发提供基础
- 标准建立:有望成为领域标准方法
- 产业应用:在开发者培训和代码优化中有应用前景
- 程序理解研究:为认知过程研究提供新工具
- 开发者行为分析:支持大规模开发者行为研究
- 教育研究:编程教育效果评估和优化
- IDE优化:改进集成开发环境的用户体验
- 代码审查:辅助代码可读性评估
- 培训系统:开发者技能评估和个性化培训
- Alon et al. (2019): Code2Vec: Learning Distributed Representations of Code - 提供了代码分布式表示的技术基础
- Guarnera et al. (2018): ITrace: Eye Tracking Infrastructure for Development Environments - 提供了眼动跟踪的技术支持
- Abid et al. (2019): Developer reading behavior while summarizing Java methods - 展示了眼动分析在程序理解中的应用价值
- Lin et al. (2016): 程序调试中的认知过程跟踪
- Sharafi et al. (2022): 开发者代码导航策略研究
总体评价:这是一篇具有创新性的基础设施论文,提出了将眼动数据与代码语义表示相结合的新方法。虽然在实验验证方面还有待加强,但其技术创新和应用潜力值得关注。该方法为程序理解的眼动分析研究提供了新的技术路径,有望推动相关领域的发展。