use*_*148 6 java eclipse incremental-compiler ecj
我知道Eclipse使用它自己的Java编译器(ECJ),它能够执行增量编译.从我发现的大多数读数来看,这个编译通常是由保存操作触发的,但这似乎与在输入单个单元/单词代码后几乎立即得到编译错误的错误反馈这一事实相匹配.我没有找到任何文档或文献说明这是什么粒度被触发(即每个单词,字母,行)?是否还有其他背景代码分析?虽然除了语法中的错误检测之外,我看不出它如何能够检测只能通过编译过程显示的语义错误.
编译器的紧密集成允许 Eclipse 在各种情况下调用编译器,其中两种情况与此问题相关:
术语“增量编译”通常是指保存时编译,然后可能会触发编译更多依赖于已更改文件的文件。用技术术语来说,这称为“构建”,它读取 .java 文件并生成 .class 文件。
键入时编译可以提供更即时的反馈。这种编译基于内存中的工作副本而不是文件。您甚至可以编辑多个依赖文件而不保存,并且编译已经可以看到在其他工作副本上所做的更改。用技术术语来说,这称为“协调”。尽管此功能是通过调用完整编译器来实现的,但协调不会生成任何类文件。
至于触发粒度的最初问题:协调工作在每个编辑器的脏区域队列上。记录脏区域是由编辑器中的按键触发的。然后以 500 毫秒的默认延迟轮询队列。
除了更即时的反馈之外,用户还将体验到协调仅在编辑器中创建错误标记,而构建另外使这些标记在问题或标记视图中可见。
| 归档时间: |
|
| 查看次数: |
413 次 |
| 最近记录: |