浅谈在线编辑器中增量编译技术的应用研究,浅谈在线编辑器中增量编译技术的应用研究论文
指尖生活
Lightly是TeamCode团队开发的一个轻量级的、功能强大的集成开发工具。目前已经支持C,C,Java,Python,HTML JS CSS,PHP,Go项目。除了语法高亮、自动检测语法错误、智能代码提示、自动补全等基本功能外,还可以自动搭建开发环境,将所有代码和资源存储在云端,支持项目多用户协同开发。本文介绍了增量编译技术在Lightly IDE中的应用,方便大家更好的理解和使用产品。
背景在产品开发周期中,编码、编译、调试占据了工程师的大部分时间。默认情况下,更新一小部分代码会触发全量编译,大概需要几分钟,导致每次调试的反馈周期相对较长,影响开发效率。针对这一问题,Lightly team做了很多探索和尝试,引入了增量编译技术,旨在缩短编译时间,提高开发效率。
架构由于Lightly是一个支持所有语言的在线编辑器(IDE),我们认为设计一个增量编译系统应该满足以下条件:
通用性:能够接受各种文件类型的源代码变更,并进行结构化处理和扩展:能够适应不同的语言和框架,进行有针对性的编译和构建。为了满足上述条件,我们将增量编译系统设计为以下模块:
如上图所示,在线编辑系统分为三个部分:
监控模块:负责监控更改、添加、修改、删除、重命名等。源程序中的文件。消息模块:负责将变化的内容结构化为消息,并按照已知的类型进行分类和标记,作为下游编译模块消费的依据。同时,作为传输队列,消息系统本身需要具有持久性。编译模块:该模块由各种特定的语言模块组成,以消息系统的数据为输入,有针对性地编译构造变化的内容,输出输出。
下面是整个操作的流程图,描述了从代码修改到编译的全过程:
以Java项目为例,从整个流程出发,在线编辑器的内部流程如下:
在监控到Java源代码的变化后,我们会对发生变化的文件进行标记,将其放入消息队列中,并收集文件被编译的信息,包括maven所依赖的所有路径,以及相关的环境变量和运行时参数。然后我们将编译更改后的文件以获得输出,即类文件。
编译输出。由于我们已经编译了所需的文件,我们只需要加载产品就可以看到最终的效果:
Lightly的体验前一部分详细描述了增量编译的具体实现,其中包含了很多复杂的过程和内容,但是对于用户来说,使用过程是透明的。我们只需在Lightly的在线编辑器上点击一次触发器,就可以在一秒钟内完成整个编译、打包、运行的过程,优化了原有的“修改代码、运行build命令、启动”的流程。具体如下(以Java为例)
用户完成编码后,只需点击右上角的RUN按钮即可查看输出:
2.用户再次完成编码后,再次点击右上角的运行按钮。结果如下:
展望未来,Lightly team将围绕更加智能的轻量级在线编辑器(IDE)不断迭代更多功能,为开发者带来更好的体验,期待未来有更多开发者参与共建。
转载请联系作者取得转载授权,否则将追究法律责任。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。