我正在编写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()
获得快乐关于警告的方法。 (它显示实际错误很好,例如,如果我在源代码中放入一个无法识别的符号)。