中文

Forest:支持多光标的结构化代码编辑

软件工程 2022-10-21 v1

摘要

软件开发人员经常重构代码。通常,一个单一的逻辑重构改动涉及对代码库中多个相关组件进行更改,例如重命名变量的每次出现或函数。虽然许多代码编辑器能执行此类常见且通用的重构,但它们不支持更复杂的重构或特定于给定代码库的重构。对于这些,作为一种灵活——尽管交互性较弱——的替代方案,开发人员可以编写重构脚本,通过操纵程序的树表示来实现任意复杂的逻辑。本文中,我们提出 Forest,一种结构化代码编辑器,旨在弥合代码编辑器的交互性与重构脚本的表达能力之间的差距。尽管结构化编辑器作为通用代码编辑器一直占据小众地位,但本工作的关键洞见是:它们促成了一种新颖的结构化多光标设计,使 Forest 能达到与重构脚本相似的表达能力;Forest 允许在多个程序位置同时执行单一操作,从而支持复杂重构。为支持交互性,Forest 提供了典型文本代码编辑器的功能,例如通过其文本表示来编写和显示程序。我们的评估表明,Forest 能执行类似于重构脚本的编辑,同时仍具交互性。我们尝试使用 Forest 执行来自 48 个真实重构脚本的编辑,发现 11 个可行,另有 17 个在增加功能后可行。我们认为多光标设置发挥了结构化编辑的优势,因其受益于可靠且富有表达力的命令。我们的结果表明,多光标结构化编辑器可切实用于执行小规模专用重构。

关键词

引用

@article{arxiv.2210.11124,
  title  = {Forest: Structural Code Editing with Multiple Cursors},
  author = {Philippe Voinov and Manuel Rigger and Zhendong Su},
  journal= {arXiv preprint arXiv:2210.11124},
  year   = {2022}
}

备注

To be published in "Onward! '22: 2022 ACM SIGPLAN International Symposium on New Ideas, New Paradigms, and Reflections on Programming and Software Proceedings"