存在语法错误时隐藏链接错误

时间:2014-06-24 15:49:55

标签: dsl xtext

模型中的语法错误可能会导致错误的链接错误,因为无法解析引用的元素。这些错误的链接错误会分散用户的注意力,使得诊断根本原因变得非常困难。我们想要的是在模型中存在XtextSyntaxDiagnostic时隐藏XtextLinkingDiagnostic,一旦语法错误得到修复,链接错误应该像往常一样显示。

我在Xtext文档中找不到任何标准方法。因此,我继续在ResourceValidatorImpl #createAcceptor()中实现了一个自定义IAcceptor,如果它包含语法错误,它会从列表中删除链接错误。它运行良好,但我想知道是否有一个标准/更好的方法来覆盖ResourceValidator。

感谢。

1 个答案:

答案 0 :(得分:1)

您如何将链接问题显示为警告而不是错误。您的语法错误将保持红色并且在资源中很容易找到,而链接错误将为黄色,因为它们不太重要。

您只需绑定自定义LinkingDiagnosticMessageProvider:

public Class<? extends ILinkingDiagnosticMessageProvider> bindILinkingDiagnosticMessageProvider() {
    return CustomLinkingDiagnosticMessageProvider.class;
}

然后你可以像这样实现它:

public class CustomLinkingDiagnosticMessageProvider extends LinkingDiagnosticMessageProvider {
    @Override
    public DiagnosticMessage getUnresolvedProxyMessage(ILinkingDiagnosticContext context) {
        DiagnosticMessage diagnosticMessage = super.getUnresolvedProxyMessage(context);
        return new DiagnosticMessage(diagnosticMessage.getMessage(),
                Severity.WARNING,
                diagnosticMessage.getIssueCode(),
                diagnosticMessage.getIssueData());
    }
}