Eclipse插件开发:自定义问题标记未出现在“问题”视图中

时间:2019-03-14 12:58:57

标签: eclipse-plugin

我正在开发一个Eclipse插件,其中声明了一个自定义问题标记。它具有org.eclipse.core.resources.problemmarker作为其超类型,并且persistent属性设置为true。我贡献了一个自定义CategorizedProblem类,其中getMarkerType返回了我的自定义标记的ID,我使用自定义reconcile的{​​{1}}方法中的问题添加到该类中,使用CompilationParticipant方法。 ReconcileContext.putProblems还在CompilationParticipant属性下声明标记类型:

plugin.xml的相关部分:

managedMarker

来自CompilationParticipant的相关代码:

<extension
      point="org.eclipse.jdt.core.compilationParticipant">
   <compilationParticipant
         class="no.tobask.sb4e.FxControllerValidator"
         id="FxControllerValidator"
         createsProblems="true">
         <managedMarker
               markerType="no.tobask.sb4e.fxcontrollerproblemmarker">
         </managedMarker>
   </compilationParticipant>
</extension>
<extension
      id="no.tobask.sb4e.fxcontrollerproblemmarker"
      point="org.eclipse.core.resources.markers">
   <super
         type="org.eclipse.core.resources.problemmarker">
   </super>
   <persistent
         value="true">
   </persistent>
</extension>

分类问题:

public void reconcile(ReconcileContext context) {
    ICompilationUnit clazz = context.getWorkingCopy();
    String className = clazz.findPrimaryType().getFullyQualifiedName();
    if (documentListener.isAssignedController(className)) {
        URL documentLocation = documentListener.getDocument(className);
        try {
            String fxmlContent = FXOMDocument.readContentFromURL(documentLocation);
            FXOMDocument document = new FXOMDocument(fxmlContent, documentLocation, Activator.getClassLoader(),
                    I18N.getBundle());
            CategorizedProblem[] problems = getProblems(context.getAST(AST.JLS11), document);
            if (problems != null) {
                context.putProblems("no.tobask.sb4e.fxcontrollerproblemmarker", problems);
            }
        } catch (IOException | JavaModelException e) {
            e.printStackTrace();
        }
    }
}

问题在于,尽管警告确实在Java编辑器中正确显示,但它未出现在“问题”视图中

0 个答案:

没有答案