通过汇编参与者定制编译器错误 [英] Custom compiler errors through Compilation Participants

查看:169
本文介绍了通过汇编参与者定制编译器错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用Eclipse插件,并希望将其中的一些建议作为编译器错误(如果不处理),因此我尝试创建一个编译参与者,创建一个编译错误,无论项目是否仍然编译,而且似乎没有工作。
我的代码:

  public class compilerNotificator extends CompilationParticipant {
@Override
public int aboutToBuild (@SuppressWarnings(unused)final IJavaProject project){
return 0;
}
@Override
public boolean isActive(@SuppressWarnings(unused)final IJavaProject project){
return true;
}
@Override
public void reconcile(final ReconcileContext context){
final CategorizedProblem [] problems = new CategorizedProblem [1];
problems [0] = new CategorizedProblem(){

@Override
public void setSourceStart(final int sourceStart){
// TODO自动生成的方法stub

}

@Override
public void setSourceLineNumber(final int lineNumber){
// TODO自动生成的方法存根

}

@Override
public void setSourceEnd(final int sourceEnd){
// TODO自动生成的方法存根

}

@Override
public boolean isWarning(){
// TODO自动生成的方法stub
return true;
}

@Override
public boolean isError(){
// TODO自动生成的方法stub
return true;
}

@Override
public int getSourceStart(){
// TODO自动生成的方法stub
return 3;
}

@Override
public int getSourceLineNumber(){
// TODO自动生成的方法存根
返回10;
}

@Override
public int getSourceEnd(){
// TODO自动生成的方法stub
return 34;
}

@Override
public char [] getOriginatingFileName(){
// TODO自动生成的方法stub
返回null;
}

@Override
public String getMessage(){
// TODO自动生成的方法存根
返回这是一些他妈的狗屎 ;
}

@Override
public int getID(){
// TODO自动生成的方法存根
返回1000129;
}

@Override
public String [] getArguments(){
// TODO自动生成的方法存根
返回null;
}

@Override
public String getMarkerType(){
// TODO自动生成的方法存根
返回坏;
}

@Override
public int getCategoryID(){
// TODO自动生成的方法stub
return 5;
}
};
context.putProblems(test,problems);
}
}

匿名类只是用于测试目的,没有意义,但它应该是触发错误的,而不是...



现在上面的代码位于插件首选项页面的代码(在Windows - >首选项)。
谢谢!



顺便说一句,我已经尝试将aboutToBuild的返回值更改为IProblem.AnnotaionCircularRef(类似的东西),但我得到相同的结果。

解决方案

但是,当我要保存该资源时,它将恢复由CompilationParticipant类完成的更改。 >

I am working on an Eclipse plugin and would like to make some of his suggestions to be compiler errors if not handled and so I tried to create a Compilation Participant that creates a compilation error no matter what but the project still compiles and it doesnt seem to work. My code:

public class compilerNotificator extends CompilationParticipant{
    @Override
    public int aboutToBuild(@SuppressWarnings("unused") final IJavaProject project){
        return 0;
    }
    @Override
    public boolean isActive(@SuppressWarnings("unused") final IJavaProject project){
        return true;
    }
    @Override
    public void reconcile(final ReconcileContext context){
        final CategorizedProblem[] problems = new CategorizedProblem[1];
        problems[0] = new CategorizedProblem() {

            @Override
            public void setSourceStart(final int sourceStart) {
                // TODO Auto-generated method stub

            }

            @Override
            public void setSourceLineNumber(final int lineNumber) {
                // TODO Auto-generated method stub

            }

            @Override
            public void setSourceEnd(final int sourceEnd) {
                // TODO Auto-generated method stub

            }

            @Override
            public boolean isWarning() {
                // TODO Auto-generated method stub
                return true;
            }

            @Override
            public boolean isError() {
                // TODO Auto-generated method stub
                return true;
            }

            @Override
            public int getSourceStart() {
                // TODO Auto-generated method stub
                return 3;
            }

            @Override
            public int getSourceLineNumber() {
                // TODO Auto-generated method stub
                return 10;
            }

            @Override
            public int getSourceEnd() {
                // TODO Auto-generated method stub
                return 34;
            }

            @Override
            public char[] getOriginatingFileName() {
                // TODO Auto-generated method stub
                return null;
            }

            @Override
            public String getMessage() {
                // TODO Auto-generated method stub
                return "This is some fucked up shit";
            }

            @Override
            public int getID() {
                // TODO Auto-generated method stub
                return 1000129;
            }

            @Override
            public String[] getArguments() {
                // TODO Auto-generated method stub
                return null;
            }

            @Override
            public String getMarkerType() {
                // TODO Auto-generated method stub
                return "Bad";
            }

            @Override
            public int getCategoryID() {
                // TODO Auto-generated method stub
                return 5;
            }
        };
        context.putProblems("test", problems);
    }
}

The anonymous class is just for testing purposes and has no meaning but it is supposed to be the one that triggers the Error and its not...

Right now the above code sits in the code for the plugin preferences page(in Windows -> Preferences). Thanks!

By the way, I already tried changing the return value of aboutToBuild to IProblem.AnnotaionCircularRef (something like that) but I got the same result.

解决方案

But when I am going to save that resource, it is revert that change which are done by CompilationParticipant class.

这篇关于通过汇编参与者定制编译器错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆