0

我一直试图通过在 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 的地方。

4

1 回答 1

0

问题是您的调用findMarkers没有等待足够长的时间并且构建尚未完成,或者调用createField根本没有触发构建。

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

于 2013-06-03T23:08:08.337 回答