繁体   English   中英

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

[英]Is it possible to call quickfix solutions(eclipse) for specific(error/s)?

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

对的,这是可能的。 确切的细节比甚至在StackOverflow答案中都容易包含的要大。

通过使用插件扩展了Eclipse。 这里详细介绍 “ Hello World”插件,通过初步学习后,您可以下载其他插件以了解Eclipse在内部的工作方式。

我想,你应该好好审视当前的代码高亮蚀能力和读取这些插件为导向的源代码,但只有你的发展如何插件适用于一些想法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM