如何从当前编辑器中检索IProblem实例?

时间:2014-03-10 00:22:53

标签: eclipse plugins

我正在编写Eclipse插件,我想检索与当前打开的文本编辑器关联的所有IProblem实例。我尝试了以下内容:

IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
IEditorPart editor = window.getActivePage().getActiveEditor();
if (!(editor instanceof AbstractTextEditor)) {
  return null;
}

ITextEditor textEditor = (ITextEditor)editor;
IDocumentProvider docProv = textEditor.getDocumentProvider();
IDocument doc = docProv.getDocument(editor.getEditorInput());
ASTParser parser = ASTParser.newParser(AST.JLS4);
parser.setSource(doc.get().toCharArray());
CompilationUnit cu = (CompilationUnit) parser.createAST(null);
return cu.getProblems();

但是,当我在编辑器中对照以下代码运行它时:

import java.io.Serializable;


public class TestClass implements Serializable {

    /**
     * 
     */
}

没有发现任何问题。我希望它至少会发现MissingSerialVersion问题。也许我正在解析文件错误,这可能会导致此问题。我觉得应该有办法直接从编辑器中获取CompilationUnit吗?

更新

如果我向源文件添加语法错误然后调用插件,它会报告语法问题,但不会报告缺少的串行版本UID。我怀疑这是某种配置问题,其中没有报告警告。

第二次更新:

这不仅限于MissingSerialVersion问题。此方法找不到任何警告,而不是错误。如果我在编译器设置中更改了我想要查看错误的问题(或者甚至通过向解析器传递其他选项使其成为错误而不是警告),我仍然不会从getProblems()获得快乐关于警告的方法。 (它显示实际错误很好,例如,如果我在源代码中放入一个无法识别的符号)。

0 个答案:

没有答案