我理解Eclipse使用它自己的Java编译器(ECJ),它具有执行增量编译的能力。从我发现的大多数读数来看,这个编译通常是由保存操作触发的,但这似乎与在输入单个单元/单词代码后几乎立即得到编译错误的错误反馈这一事实相匹配。我没有找到任何文件或文献说明这是什么粒度被触发(即每个单词,字母,行)?是否还有其他背景代码分析?虽然除了语法中的错误检测之外,我没有看到它如何能够检测只能通过编译过程显示的语义错误。
答案 0 :(得分:0)
编译器的紧密集成使Eclipse在各种情况下都可以调用编译器,其中两种情况与该问题有关:
术语“增量编译”通常是指保存时进行编译,然后可能会触发编译更多依赖于已更改文件的文件。用技术术语来说,这称为“建筑物”,它读取.java文件并生成.class文件。
“按需编译”甚至可以提供更多即时反馈。这种编译是基于内存中的工作副本而不是文件。您甚至可以编辑几个从属文件而无需保存,并且编译可以看到其他工作副本上所做的更改。用技术术语来说,这称为“对帐”。尽管此功能是通过调用完整的编译器实现的,但协调不会生成任何类文件。
关于触发器粒度的原始问题:协调在脏区域的每个编辑器队列上进行。记录脏区是由编辑器中的击键触发的。然后以默认延迟500 ms轮询队列。
除了提供更直接的反馈外,用户还将体验到协调功能只会在编辑器中创建错误标记,而构建时还会使这些标记在问题或标记中可见视图。