2014-06-12 96 views
1

我正在使用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 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); 
    } 
} 

匿名类只是出于测试目的,并没有什么意义,但它应该是触发错误之一,它不是...

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

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

回答

0

已解决。

您需要添加一个扩展点到plugin.xml像这样:

<extension point="org.eclipse.jdt.core.compilationParticipant"> 
<compilationParticipant 
class="Path.To.Package.MyCompilationParticipant" 
id="Path.To.Package.MyCompilationParticipant"> 
</compilationParticipant> 
</extension>