是否可以针对特定(错误/ s)调用quickfix解决方案(eclipse)?

时间:2013-01-30 17:07:39

标签: java eclipse

我有一个扫描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解决方案?

1 个答案:

答案 0 :(得分:1)

是的,有可能。确切的细节有点大,甚至可以包含在StackOverflow答案中。

Eclipse通过使用插件进行了扩展。一个“Hello World”插件详细here,在您完成初始学习曲线之后,您可以下载其他插件来了解eclipse如何在内部工作。

我想你最好检查当前代码突出显示eclipse的功能,并阅读这些插件的源代码作为指导,但只有 后才能了解插件开发的工作原理