我一直试图通过在IType中定义错误的类型字段来产生编译错误,但是,当在包含IType所代表的类文件的项目中搜索问题时,没有错误。
我不知道如何理解这样的结果,是应该发生的? IType是否可以包含使用未定义类的方法或字段?
我的目标是检测是否忽略了这些错误,或者根本不会发生这些错误。
如下所述,这是我希望产生错误的代码:
String source = "private Asdf a;";
itype.createField(source, null, true, null);
String jmethod = "\tpublic void foo() {\n\t\tint b = a.getB();\n\t}\n";
itype.createMethod(jmethod, null, true, null);
从未定义过Asdf。
答案 0 :(得分:0)
问题是您对findMarkers
的调用时间不够长,构建尚未完成,或者对createField
的调用根本没有触发构建。
只有在编译或协调后才会发现问题。编译后有很多内部方法可以访问问题,但是如果你想保持API兼容,那么你最好的办法是创建一个compilationParticipant。请参阅课程org.eclipse.jdt.core.compiler.CompilationParticipant
以及名为org.eclipse.jdt.core.compilationParticipant
的关联扩展点。实现其中之一将确保在发生强制计算问题的操作时触发代码。