模型中的语法错误可能会导致错误的链接错误,因为无法解析引用的元素。这些错误的链接错误会分散用户的注意力,使得诊断根本原因变得非常困难。我们想要的是在模型中存在XtextSyntaxDiagnostic时隐藏XtextLinkingDiagnostic,一旦语法错误得到修复,链接错误应该像往常一样显示。
我在Xtext文档中找不到任何标准方法。因此,我继续在ResourceValidatorImpl #createAcceptor()中实现了一个自定义IAcceptor,如果它包含语法错误,它会从列表中删除链接错误。它运行良好,但我想知道是否有一个标准/更好的方法来覆盖ResourceValidator。
感谢。
答案 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());
}
}