
Meo是正确的,根据我在开发用于自定义语言的插件时所学到的知识,IntelliJ不会编译任何内容,除非您明确创建项目。在键入时,其词法分析器/解析器会检测到任何无效的标记或代码构造。同时,它维护项目中每个类和方法及其依赖项及其签名等的索引。
停止输入后,您会在右侧装订线的顶部看到彩色的眼睛。它指示IDE正在运行“注释器”和“代码检查”。他们能够根据当前索引和文件的当前状态(导入,声明等)判断类,方法和变量是否有效。未使用的变量,方法调用中的无效参数等也是如此。
优点:
- 注释器直接在他们所谓的PSI树上工作,它基本上是代表您当前文件的增强型AST
- 每次编译可能会更快(它使用索引并且不需要重新编译每个从属类)
- 注释者可以检测到
javac
无关紧要的东西,例如潜在的错误(例如,使用=
而不是==
在某种while
情况下使用)
缺点:
- 这是一项艰巨的工作,基本上他们需要重写逻辑以查找
javac
可能产生的每个错误(这就是为什么您可以在其Bugtracker上找到许多问题的原因,这些问题标记为“ 好代码为红色 ”或“坏代码为绿色”,这意味着他们检测到的内容与编译器将输出的内容之间的差异)
TL; DR:
.class在您制作项目之前,它不会产生任何结果,所有事情都是“手工”完成的
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)