Eclipse plugin EclipseIType类忽略编译错误

Eclipse plugin EclipseIType类忽略编译错误,eclipse-plugin,Eclipse Plugin,我一直试图通过在IType中定义错误类型的字段来产生编译错误,但是,在包含IType所代表的类文件的项目中搜索问题时,没有错误 我不知道如何理解这样的结果,这是应该发生的吗?IType包含可用于未定义类的方法或字段是否可以接受 我的目标是检测这些错误是否被忽略或根本没有发生 如下所述,这是我希望产生错误的代码: String source = "private Asdf a;"; itype.createField(source, null, true, null); Strin

我一直试图通过在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从未定义。

问题在于对
findMarkers
的调用等待时间不够长,生成尚未完成,或者对
createField
的调用根本没有触发生成


只有在编译或协调后才能发现问题。有很多内部方法可以在编译后访问问题,但是如果您想保持API兼容,那么最好的办法就是创建compilationParticipant。请参阅类
org.eclipse.jdt.core.compiler.CompilationParticipant
和相关的扩展点
org.eclipse.jdt.core.CompilationParticipant
。实现其中一个将确保在发生强制计算问题的操作时触发代码。

请包含代码片段。如何添加字段?这是二进制类型还是源类型?我正在使用ITypeAPI创建字段和方法:createField();createMethod();如何检查是否有错误?我在包含此类类文件
project.findMarkers(IJavaModelMarker.JAVA_MODEL_PROBLEM_MARKER,true,IResource.DEPTH_INFINITE)的IProject上调用了类IProject的findMarkers函数谢谢Andrew,CompliationParticipant扩展似乎需要一个我找不到如何获得的ReconcileContext。你知道我是怎么得到它的吗?这个类是jdt.core项目的一部分。它是
org.eclipse.jdt.core.compiler.ReconcileContext
。我仍然无法找到ReconcileContext的实例。似乎没有关于它的任何信息。我想我缺少了一些关于如何处理CompliationParticipant的内容。框架实例化了
ReconcileContext
的实例。您必须实现
compilationParticipant
扩展点,并为其提供自己的
compilationParticipant
实现。只要发生协调或编译事件,就会调用您的实现。您可以“获取”此实例的唯一方法是强制生成。