Custom compiler errors through Compilation Partici

2019-08-02 07:49发布

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.

1条回答
叛逆
2楼-- · 2019-08-02 08:16

Solved.

You need to add an extension point to plugin.xml like so:

<extension point="org.eclipse.jdt.core.compilationParticipant">
<compilationParticipant 
class="Path.To.Package.MyCompilationParticipant"
id="Path.To.Package.MyCompilationParticipant">
</compilationParticipant>
</extension>
查看更多
登录 后发表回答