1

我有一个程序可以扫描 Java 文件以查找错误。我从 Eclipse 调用编译器并对 Java 文件运行扫描并获取行号、开始位置和结束位置作为输出。我编写了一个程序来从文件中提取错误。

我想要做的是访问 eclipse 中的 quickfix 组件,列出可能的问题修复列表,并将该列表打印到控制台。

下面是我如何调用编译器并将详细信息打印在控制台上的程序的一部分:

Iterable fileObjects = fileManager.getJavaFileObjectsFromStrings(
        Arrays.asList(fileToCompile));  
CompilationTask task = compiler.getTask(null, fileManager, listener, null,
        null, fileObjects); 
Boolean result = task.call();
if(result == true) {
    System.out.println("Compilation has succeeded");
}
myerrors = listener.getlistofErrors();
for (CaptureErrors e : myerrors) {
    System.out.println("Code: " + e.getCode());
    System.out.println("Kind: " + e.getKind());
    System.out.println("Line Number: " + e.getLinenumber());
//  System.out.println("Message: "+ e.getMessage(Locale.ENGLISH));
//  System.out.println("Source: " + diagnostic.getSource());
    System.out.println("End position"+ e.getEndposition());
    System.out.println("Position: "+ e.getPosition());
    System.out.println("\n");
}

class MyDiagnosticListener implements DiagnosticListener {
    List<CaptureErrors> errors = new ArrayList<CaptureErrors>();
    public void report(Diagnostic diagnostic) {
        CaptureErrors single_error = new CaptureErrors(diagnostic.getCode(),
                diagnostic.getKind(), diagnostic.getLineNumber(),
                diagnostic.getMessage(Locale.ENGLISH), diagnostic.getPosition(),
                diagnostic.getEndPosition());
        errors.add(single_error);  
    }

    public List<CaptureErrors> getlistofErrors() {
        return errors;
    }
}

我还有一个程序可以转到行号并在特定位置提取文本(错误)。

对于我发现的特定错误,我如何调用 eclipse quickfix 解决方案?

4

1 回答 1

1

对的,这是可能的。确切的细节比 StackOverflow 的答案更容易包含。

Eclipse 通过使用插件进行扩展。此处详细介绍了“Hello World”插件,在完成初始学习曲线后,您可以下载其他插件以了解 eclipse 内部的工作原理。

我想您最好检查一下 eclipse 当前的代码突出显示功能并阅读这些插件的源代码作为指南,但前提是您对插件开发的工作原理有所了解。

于 2013-01-30T17:21:40.933 回答